Compare commits

..

No commits in common. "15415fcbf35eb2449ad0605035585bc569feb7eb" and "5ea85d08677c761ee3f2479daccd173b549deaa9" have entirely different histories.

12 changed files with 39 additions and 139 deletions

View File

@ -1,14 +1,5 @@
# Changelog # Changelog
## 8.2.0-beta.1 - 2023-01-12
* [#1167](https://github.com/stripe/stripe-ruby/pull/1167) API Updates for beta branch
* Updated stable APIs to the latest version
* Change `quote.draft_quote` implementation to from calling `POST /v1/quotes/{quote}/draft` to `POST /v1/quotes/{quote}/mark_draft`
* Add support for `Tax::Register` resource
## 8.1.0 - 2023-01-12
* [#1162](https://github.com/stripe/stripe-ruby/pull/1162) Improve request events instrumentation
## 8.1.0-beta.4 - 2023-01-05 ## 8.1.0-beta.4 - 2023-01-05
* [#1164](https://github.com/stripe/stripe-ruby/pull/1164) API Updates for beta branch * [#1164](https://github.com/stripe/stripe-ruby/pull/1164) API Updates for beta branch
* Updated stable APIs to the latest version * Updated stable APIs to the latest version

View File

@ -1 +1 @@
v218 v217

View File

@ -1 +1 @@
8.2.0-beta.1 8.1.0-beta.4

View File

@ -33,10 +33,6 @@ module Stripe
attr_reader :num_retries attr_reader :num_retries
attr_reader :path attr_reader :path
attr_reader :request_id attr_reader :request_id
attr_reader :response_header
attr_reader :response_body
attr_reader :request_header
attr_reader :request_body
# Arbitrary user-provided data in the form of a Ruby hash that's passed # Arbitrary user-provided data in the form of a Ruby hash that's passed
# from subscribers on `request_begin` to subscribers on `request_end`. # from subscribers on `request_begin` to subscribers on `request_end`.
@ -44,50 +40,16 @@ module Stripe
# in `request_end`. # in `request_end`.
attr_reader :user_data attr_reader :user_data
def initialize(request_context:, response_context:, def initialize(duration:, http_status:, method:, num_retries:, path:,
num_retries:, user_data: nil) request_id:, user_data: nil)
@duration = request_context.duration
@http_status = response_context.http_status
@method = request_context.method
@num_retries = num_retries
@path = request_context.path
@request_id = request_context.request_id
@user_data = user_data
@response_header = response_context.header
@response_body = response_context.body
@request_header = request_context.header
@request_body = request_context.body
freeze
end
end
class RequestContext
attr_reader :duration
attr_reader :method
attr_reader :path
attr_reader :request_id
attr_reader :body
attr_reader :header
def initialize(duration:, context:, header:)
@duration = duration @duration = duration
@method = context.method
@path = context.path
@request_id = context.request_id
@body = context.body
@header = header
end
end
class ResponseContext
attr_reader :http_status
attr_reader :body
attr_reader :header
def initialize(http_status:, response:)
@http_status = http_status @http_status = http_status
@header = response ? response.to_hash : nil @method = method
@body = response ? response.body : nil @num_retries = num_retries
@path = path
@request_id = request_id
@user_data = user_data
freeze
end end
end end

View File

@ -98,7 +98,6 @@ module Stripe
SubscriptionItem::OBJECT_NAME => SubscriptionItem, SubscriptionItem::OBJECT_NAME => SubscriptionItem,
SubscriptionSchedule::OBJECT_NAME => SubscriptionSchedule, SubscriptionSchedule::OBJECT_NAME => SubscriptionSchedule,
Tax::Calculation::OBJECT_NAME => Tax::Calculation, Tax::Calculation::OBJECT_NAME => Tax::Calculation,
Tax::Registration::OBJECT_NAME => Tax::Registration,
Tax::Transaction::OBJECT_NAME => Tax::Transaction, Tax::Transaction::OBJECT_NAME => Tax::Transaction,
TaxCode::OBJECT_NAME => TaxCode, TaxCode::OBJECT_NAME => TaxCode,
TaxId::OBJECT_NAME => TaxId, TaxId::OBJECT_NAME => TaxId,

View File

@ -85,7 +85,6 @@ require "stripe/resources/subscription"
require "stripe/resources/subscription_item" require "stripe/resources/subscription_item"
require "stripe/resources/subscription_schedule" require "stripe/resources/subscription_schedule"
require "stripe/resources/tax/calculation" require "stripe/resources/tax/calculation"
require "stripe/resources/tax/registration"
require "stripe/resources/tax/transaction" require "stripe/resources/tax/transaction"
require "stripe/resources/tax_code" require "stripe/resources/tax_code"
require "stripe/resources/tax_id" require "stripe/resources/tax_id"

View File

@ -32,7 +32,7 @@ module Stripe
def draft_quote(params = {}, opts = {}) def draft_quote(params = {}, opts = {})
request_stripe_object( request_stripe_object(
method: :post, method: :post,
path: format("/v1/quotes/%<quote>s/mark_draft", { quote: CGI.escape(self["id"]) }), path: format("/v1/quotes/%<quote>s/draft", { quote: CGI.escape(self["id"]) }),
params: params, params: params,
opts: opts opts: opts
) )
@ -140,7 +140,7 @@ module Stripe
def self.draft_quote(quote, params = {}, opts = {}) def self.draft_quote(quote, params = {}, opts = {})
request_stripe_object( request_stripe_object(
method: :post, method: :post,
path: format("/v1/quotes/%<quote>s/mark_draft", { quote: CGI.escape(quote) }), path: format("/v1/quotes/%<quote>s/draft", { quote: CGI.escape(quote) }),
params: params, params: params,
opts: opts opts: opts
) )

View File

@ -1,17 +0,0 @@
# File generated from our OpenAPI spec
# frozen_string_literal: true
module Stripe
module Tax
# A Tax `Registration` lets us know that your business is registered to collect tax on payments within a region, enabling you to [automatically collect tax](https://stripe.com/docs/tax).
#
# Stripe will not register on your behalf with the relevant authorities when you create a Tax `Registration` object. For more information on how to register to collect tax, see [our guide](https://stripe.com/docs/tax/registering).
class Registration < APIResource
extend Stripe::APIOperations::Create
extend Stripe::APIOperations::List
include Stripe::APIOperations::Save
OBJECT_NAME = "tax.registration"
end
end
end

View File

@ -494,16 +494,15 @@ module Stripe
end end
end end
http_resp = http_resp = execute_request_with_rescues(method, api_base, context) do
execute_request_with_rescues(method, api_base, headers, context) do self.class
self.class .default_connection_manager(config)
.default_connection_manager(config) .execute_request(method, url,
.execute_request(method, url, body: body,
body: body, headers: headers,
headers: headers, query: query,
query: query, &response_block)
&response_block) end
end
[http_resp, api_key] [http_resp, api_key]
end end
@ -565,7 +564,7 @@ module Stripe
http_status >= 400 http_status >= 400
end end
private def execute_request_with_rescues(method, api_base, headers, context) private def execute_request_with_rescues(method, api_base, context)
num_retries = 0 num_retries = 0
begin begin
@ -588,7 +587,7 @@ module Stripe
log_response(context, request_start, http_status, resp.body, resp) log_response(context, request_start, http_status, resp.body, resp)
notify_request_end(context, request_duration, http_status, notify_request_end(context, request_duration, http_status,
num_retries, user_data, resp, headers) num_retries, user_data)
if config.enable_telemetry? && context.request_id if config.enable_telemetry? && context.request_id
request_duration_ms = (request_duration * 1000).to_i request_duration_ms = (request_duration * 1000).to_i
@ -615,7 +614,7 @@ module Stripe
log_response_error(error_context, request_start, e) log_response_error(error_context, request_start, e)
end end
notify_request_end(context, request_duration, http_status, num_retries, notify_request_end(context, request_duration, http_status, num_retries,
user_data, resp, headers) user_data)
if self.class.should_retry?(e, if self.class.should_retry?(e,
method: method, method: method,
@ -658,24 +657,17 @@ module Stripe
end end
private def notify_request_end(context, duration, http_status, num_retries, private def notify_request_end(context, duration, http_status, num_retries,
user_data, resp, headers) user_data)
return if !Instrumentation.any_subscribers?(:request_end) && return if !Instrumentation.any_subscribers?(:request_end) &&
!Instrumentation.any_subscribers?(:request) !Instrumentation.any_subscribers?(:request)
request_context = Stripe::Instrumentation::RequestContext.new(
duration: duration,
context: context,
header: headers
)
response_context = Stripe::Instrumentation::ResponseContext.new(
http_status: http_status,
response: resp
)
event = Instrumentation::RequestEndEvent.new( event = Instrumentation::RequestEndEvent.new(
request_context: request_context, duration: duration,
response_context: response_context, http_status: http_status,
method: context.method,
num_retries: num_retries, num_retries: num_retries,
path: context.path,
request_id: context.request_id,
user_data: user_data || {} user_data: user_data || {}
) )
Stripe::Instrumentation.notify(:request_end, event) Stripe::Instrumentation.notify(:request_end, event)

View File

@ -1,5 +1,5 @@
# frozen_string_literal: true # frozen_string_literal: true
module Stripe module Stripe
VERSION = "8.2.0-beta.1" VERSION = "8.1.0-beta.4"
end end

View File

@ -58,29 +58,13 @@ module Stripe
context "RequestEventEnd" do context "RequestEventEnd" do
should "return a frozen object" do should "return a frozen object" do
mock_context = stub( event = Stripe::Instrumentation::RequestEndEvent.new(
duration: 0.1, duration: 0.1,
http_status: 200,
method: :get, method: :get,
num_retries: 0,
path: "/v1/test", path: "/v1/test",
request_id: "req_123", request_id: "req_123",
body: ""
)
request_context = Stripe::Instrumentation::RequestContext.new(
duration: 0.1,
context: mock_context,
header: nil
)
response_context = Stripe::Instrumentation::ResponseContext.new(
http_status: 200,
response: nil
)
event = Stripe::Instrumentation::RequestEndEvent.new(
num_retries: 0,
request_context: request_context,
response_context: response_context,
user_data: nil user_data: nil
) )

View File

@ -1443,25 +1443,19 @@ module Stripe
should "notify a subscriber of a successful HTTP request" do should "notify a subscriber of a successful HTTP request" do
events = [] events = []
Stripe::Instrumentation.subscribe(:request_end, :test) { |event| events << event } Stripe::Instrumentation.subscribe(:request_end, :test) { |event| events << event }
stub_response_body = JSON.generate(object: "charge")
stub_request(:post, "#{Stripe.api_base}/v1/charges") stub_request(:get, "#{Stripe.api_base}/v1/charges")
.with(body: { "amount" => "50", "currency" => "usd", "card" => "sc_token" }) .to_return(body: JSON.generate(object: "charge"), headers: { "Request-ID": "req_123" })
.to_return(body: stub_response_body, headers: { "Request-ID": "req_123" }) Stripe::Charge.list
Stripe::Charge.create(amount: 50, currency: "usd", card: "sc_token")
assert_equal(1, events.size) assert_equal(1, events.size)
event = events.first event = events.first
assert_equal(:post, event.method) assert_equal(:get, event.method)
assert_equal("/v1/charges", event.path) assert_equal("/v1/charges", event.path)
assert_equal(200, event.http_status) assert_equal(200, event.http_status)
assert(event.duration.positive?) assert(event.duration.positive?)
assert_equal(0, event.num_retries) assert_equal(0, event.num_retries)
assert_equal("req_123", event.request_id) assert_equal("req_123", event.request_id)
assert_equal(stub_response_body, event.response_body)
assert_equal("amount=50&currency=usd&card=sc_token", event.request_body)
assert(event.request_header)
end end
should "notify a subscriber of a StripeError" do should "notify a subscriber of a StripeError" do
@ -1490,7 +1484,6 @@ module Stripe
assert_equal(500, event.http_status) assert_equal(500, event.http_status)
assert(event.duration.positive?) assert(event.duration.positive?)
assert_equal(0, event.num_retries) assert_equal(0, event.num_retries)
assert_equal(JSON.generate(error: error), event.response_body)
end end
should "notify a subscriber of a network error" do should "notify a subscriber of a network error" do
@ -1533,9 +1526,8 @@ module Stripe
events = [] events = []
Stripe::Instrumentation.subscribe(:request, :test) { |event| events << event } Stripe::Instrumentation.subscribe(:request, :test) { |event| events << event }
stub_response_body = JSON.generate(object: "charge")
stub_request(:get, "#{Stripe.api_base}/v1/charges") stub_request(:get, "#{Stripe.api_base}/v1/charges")
.to_return(body: stub_response_body) .to_return(body: JSON.generate(object: "charge"))
Stripe::Charge.list Stripe::Charge.list
assert_equal(1, events.size) assert_equal(1, events.size)
@ -1545,8 +1537,6 @@ module Stripe
assert_equal(200, event.http_status) assert_equal(200, event.http_status)
assert(event.duration.positive?) assert(event.duration.positive?)
assert_equal(0, event.num_retries) assert_equal(0, event.num_retries)
assert_equal(stub_response_body, event.response_body)
assert(event.request_header)
end end
end end
end end