chargebee 2.74.0 → 2.77.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/CHANGELOG.md +98 -0
- data/Gemfile.lock +2 -2
- data/README.md +53 -0
- data/VERSION +1 -1
- data/chargebee.gemspec +17 -2
- data/lib/chargebee/environment.rb +3 -2
- data/lib/chargebee/models/addon.rb +7 -7
- data/lib/chargebee/models/address.rb +2 -2
- data/lib/chargebee/models/alert.rb +16 -8
- data/lib/chargebee/models/alert_status.rb +2 -2
- data/lib/chargebee/models/async_response.rb +18 -0
- data/lib/chargebee/models/async_response_list.rb +10 -0
- data/lib/chargebee/models/attached_item.rb +5 -5
- data/lib/chargebee/models/business_entity.rb +2 -2
- data/lib/chargebee/models/card.rb +5 -5
- data/lib/chargebee/models/column_definition.rb +10 -0
- data/lib/chargebee/models/comment.rb +4 -4
- data/lib/chargebee/models/configuration.rb +1 -1
- data/lib/chargebee/models/coupon.rb +9 -9
- data/lib/chargebee/models/coupon_code.rb +4 -4
- data/lib/chargebee/models/coupon_set.rb +7 -7
- data/lib/chargebee/models/credit_note.rb +22 -17
- data/lib/chargebee/models/credit_note_estimate.rb +1 -1
- data/lib/chargebee/models/csv_tax_rule.rb +6 -1
- data/lib/chargebee/models/currency.rb +6 -6
- data/lib/chargebee/models/customer.rb +26 -26
- data/lib/chargebee/models/customer_entitlement.rb +1 -1
- data/lib/chargebee/models/differential_price.rb +5 -5
- data/lib/chargebee/models/entitlement.rb +2 -2
- data/lib/chargebee/models/entitlement_override.rb +2 -2
- data/lib/chargebee/models/estimate.rb +20 -20
- data/lib/chargebee/models/event.rb +2 -2
- data/lib/chargebee/models/export.rb +18 -18
- data/lib/chargebee/models/feature.rb +9 -9
- data/lib/chargebee/models/gift.rb +7 -7
- data/lib/chargebee/models/grant_block.rb +3 -3
- data/lib/chargebee/models/hosted_page.rb +22 -22
- data/lib/chargebee/models/in_app_subscription.rb +4 -4
- data/lib/chargebee/models/invoice.rb +48 -44
- data/lib/chargebee/models/invoice_estimate.rb +1 -1
- data/lib/chargebee/models/item.rb +5 -5
- data/lib/chargebee/models/item_entitlement.rb +4 -4
- data/lib/chargebee/models/item_family.rb +5 -5
- data/lib/chargebee/models/item_price.rb +7 -7
- data/lib/chargebee/models/ledger_account_balance.rb +1 -1
- data/lib/chargebee/models/ledger_operation.rb +9 -10
- data/lib/chargebee/models/meter.rb +18 -0
- data/lib/chargebee/models/metered_feature.rb +46 -0
- data/lib/chargebee/models/non_subscription.rb +1 -1
- data/lib/chargebee/models/offer_event.rb +1 -1
- data/lib/chargebee/models/offer_fulfillment.rb +3 -3
- data/lib/chargebee/models/omnichannel_one_time_order.rb +2 -2
- data/lib/chargebee/models/omnichannel_subscription.rb +4 -4
- data/lib/chargebee/models/omnichannel_subscription_item.rb +1 -1
- data/lib/chargebee/models/order.rb +12 -12
- data/lib/chargebee/models/payment_intent.rb +9 -4
- data/lib/chargebee/models/payment_schedule_scheme.rb +3 -3
- data/lib/chargebee/models/payment_source.rb +16 -16
- data/lib/chargebee/models/payment_voucher.rb +4 -4
- data/lib/chargebee/models/personalized_offer.rb +1 -1
- data/lib/chargebee/models/plan.rb +7 -7
- data/lib/chargebee/models/portal_session.rb +4 -4
- data/lib/chargebee/models/price_variant.rb +5 -5
- data/lib/chargebee/models/pricing_page_session.rb +2 -2
- data/lib/chargebee/models/promotional_credit.rb +5 -5
- data/lib/chargebee/models/promotional_grant.rb +1 -1
- data/lib/chargebee/models/purchase.rb +2 -2
- data/lib/chargebee/models/quote.rb +27 -27
- data/lib/chargebee/models/quote_line_group.rb +1 -1
- data/lib/chargebee/models/quoted_charge.rb +2 -2
- data/lib/chargebee/models/ramp.rb +6 -6
- data/lib/chargebee/models/recorded_purchase.rb +2 -2
- data/lib/chargebee/models/resource_migration.rb +1 -1
- data/lib/chargebee/models/rule.rb +1 -1
- data/lib/chargebee/models/site_migration_detail.rb +1 -1
- data/lib/chargebee/models/subscription.rb +37 -37
- data/lib/chargebee/models/subscription_entitlement.rb +2 -2
- data/lib/chargebee/models/time_machine.rb +3 -3
- data/lib/chargebee/models/transaction.rb +11 -11
- data/lib/chargebee/models/unbilled_charge.rb +6 -6
- data/lib/chargebee/models/usage.rb +5 -5
- data/lib/chargebee/models/usage_charge.rb +1 -1
- data/lib/chargebee/models/usage_event.rb +2 -2
- data/lib/chargebee/models/usage_file.rb +2 -2
- data/lib/chargebee/models/usage_summary.rb +1 -1
- data/lib/chargebee/models/virtual_bank_account.rb +6 -6
- data/lib/chargebee/models/webhook_endpoint.rb +5 -5
- data/lib/chargebee/request.rb +37 -8
- data/lib/chargebee/result.rb +41 -6
- data/lib/chargebee/telemetry/request_telemetry_context.rb +29 -0
- data/lib/chargebee/telemetry/request_telemetry_error.rb +20 -0
- data/lib/chargebee/telemetry/request_telemetry_result.rb +20 -0
- data/lib/chargebee/telemetry/telemetry_adapter.rb +32 -0
- data/lib/chargebee/telemetry/telemetry_attribute_keys.rb +33 -0
- data/lib/chargebee/telemetry/telemetry_support.rb +123 -0
- data/lib/chargebee/telemetry_executor.rb +95 -0
- data/lib/chargebee.rb +14 -1
- data/spec/chargebee/request_telemetry_spec.rb +75 -0
- data/spec/chargebee/telemetry_executor_spec.rb +147 -0
- data/spec/chargebee/telemetry_support_spec.rb +29 -0
- metadata +20 -2
|
@@ -13,14 +13,14 @@ module ChargeBee
|
|
|
13
13
|
options = {
|
|
14
14
|
:isIdempotent => true
|
|
15
15
|
}
|
|
16
|
-
Request.send('post', uri_path("subscriptions",id.to_s,"usages"), params, env, headers,nil, false, jsonKeys, options)
|
|
16
|
+
Request.send('post', uri_path("subscriptions",id.to_s,"usages"), params, env, headers,nil, false, jsonKeys, options, "usage", "create")
|
|
17
17
|
end
|
|
18
18
|
|
|
19
19
|
def self.retrieve(id, params, env=nil, headers={})
|
|
20
20
|
jsonKeys = {
|
|
21
21
|
}
|
|
22
22
|
options = {}
|
|
23
|
-
Request.send('get', uri_path("subscriptions",id.to_s,"usages"), params, env, headers,nil, false, jsonKeys, options)
|
|
23
|
+
Request.send('get', uri_path("subscriptions",id.to_s,"usages"), params, env, headers,nil, false, jsonKeys, options, "usage", "retrieve")
|
|
24
24
|
end
|
|
25
25
|
|
|
26
26
|
def self.delete(id, params, env=nil, headers={})
|
|
@@ -29,14 +29,14 @@ module ChargeBee
|
|
|
29
29
|
options = {
|
|
30
30
|
:isIdempotent => true
|
|
31
31
|
}
|
|
32
|
-
Request.send('post', uri_path("subscriptions",id.to_s,"delete_usage"), params, env, headers,nil, false, jsonKeys, options)
|
|
32
|
+
Request.send('post', uri_path("subscriptions",id.to_s,"delete_usage"), params, env, headers,nil, false, jsonKeys, options, "usage", "delete")
|
|
33
33
|
end
|
|
34
34
|
|
|
35
35
|
def self.list(params={}, env=nil, headers={})
|
|
36
36
|
jsonKeys = {
|
|
37
37
|
}
|
|
38
38
|
options = {}
|
|
39
|
-
Request.send_list_request('get', uri_path("usages"), params, env, headers,nil, false, jsonKeys, options)
|
|
39
|
+
Request.send_list_request('get', uri_path("usages"), params, env, headers,nil, false, jsonKeys, options, "usage", "list")
|
|
40
40
|
end
|
|
41
41
|
|
|
42
42
|
def self.pdf(params, env=nil, headers={})
|
|
@@ -45,7 +45,7 @@ module ChargeBee
|
|
|
45
45
|
options = {
|
|
46
46
|
:isIdempotent => true
|
|
47
47
|
}
|
|
48
|
-
Request.send('post', uri_path("usages","pdf"), params, env, headers,nil, false, jsonKeys, options)
|
|
48
|
+
Request.send('post', uri_path("usages","pdf"), params, env, headers,nil, false, jsonKeys, options, "usage", "pdf")
|
|
49
49
|
end
|
|
50
50
|
|
|
51
51
|
end # ~Usage
|
|
@@ -11,7 +11,7 @@ module ChargeBee
|
|
|
11
11
|
jsonKeys = {
|
|
12
12
|
}
|
|
13
13
|
options = {}
|
|
14
|
-
Request.send('get', uri_path("subscriptions",id.to_s,"usage_charges"), params, env, headers,nil, false, jsonKeys, options)
|
|
14
|
+
Request.send('get', uri_path("subscriptions",id.to_s,"usage_charges"), params, env, headers,nil, false, jsonKeys, options, "usageCharge", "retrieveUsageChargesForSubscription")
|
|
15
15
|
end
|
|
16
16
|
|
|
17
17
|
end # ~UsageCharge
|
|
@@ -11,7 +11,7 @@ module ChargeBee
|
|
|
11
11
|
:properties => 0,
|
|
12
12
|
}
|
|
13
13
|
options = {}
|
|
14
|
-
Request.send('post', uri_path("usage_events"), params, env, headers, "ingest", true, jsonKeys, options)
|
|
14
|
+
Request.send('post', uri_path("usage_events"), params, env, headers, "ingest", true, jsonKeys, options, "usageEvent", "create")
|
|
15
15
|
end
|
|
16
16
|
|
|
17
17
|
def self.batch_ingest(params, env=nil, headers={})
|
|
@@ -19,7 +19,7 @@ module ChargeBee
|
|
|
19
19
|
:properties => 1,
|
|
20
20
|
}
|
|
21
21
|
options = {}
|
|
22
|
-
Request.send('post', uri_path("batch","usage_events"), params, env, headers, "ingest", true, jsonKeys, options)
|
|
22
|
+
Request.send('post', uri_path("batch","usage_events"), params, env, headers, "ingest", true, jsonKeys, options, "usageEvent", "batchIngest")
|
|
23
23
|
end
|
|
24
24
|
|
|
25
25
|
end # ~UsageEvent
|
|
@@ -16,14 +16,14 @@ module ChargeBee
|
|
|
16
16
|
jsonKeys = {
|
|
17
17
|
}
|
|
18
18
|
options = {}
|
|
19
|
-
Request.send('post', uri_path("usage_files","upload_url"), params, env, headers, "file-ingest", false, jsonKeys, options)
|
|
19
|
+
Request.send('post', uri_path("usage_files","upload_url"), params, env, headers, "file-ingest", false, jsonKeys, options, "usageFile", "uploadUrl")
|
|
20
20
|
end
|
|
21
21
|
|
|
22
22
|
def self.processing_status(id, env=nil, headers={})
|
|
23
23
|
jsonKeys = {
|
|
24
24
|
}
|
|
25
25
|
options = {}
|
|
26
|
-
Request.send('get', uri_path("usage_files",id.to_s,"processing_status"), {}, env, headers, "file-ingest", false, jsonKeys, options)
|
|
26
|
+
Request.send('get', uri_path("usage_files",id.to_s,"processing_status"), {}, env, headers, "file-ingest", false, jsonKeys, options, "usageFile", "processingStatus")
|
|
27
27
|
end
|
|
28
28
|
|
|
29
29
|
end # ~UsageFile
|
|
@@ -10,7 +10,7 @@ module ChargeBee
|
|
|
10
10
|
jsonKeys = {
|
|
11
11
|
}
|
|
12
12
|
options = {}
|
|
13
|
-
Request.send('get', uri_path("subscriptions",id.to_s,"usage_summary"), params, env, headers,nil, false, jsonKeys, options)
|
|
13
|
+
Request.send('get', uri_path("subscriptions",id.to_s,"usage_summary"), params, env, headers,nil, false, jsonKeys, options, "usageSummary", "retrieveUsageSummaryForSubscription")
|
|
14
14
|
end
|
|
15
15
|
|
|
16
16
|
end # ~UsageSummary
|
|
@@ -14,7 +14,7 @@ module ChargeBee
|
|
|
14
14
|
options = {
|
|
15
15
|
:isIdempotent => true
|
|
16
16
|
}
|
|
17
|
-
Request.send('post', uri_path("virtual_bank_accounts","create_using_permanent_token"), params, env, headers,nil, false, jsonKeys, options)
|
|
17
|
+
Request.send('post', uri_path("virtual_bank_accounts","create_using_permanent_token"), params, env, headers,nil, false, jsonKeys, options, "virtualBankAccount", "createUsingPermanentToken")
|
|
18
18
|
end
|
|
19
19
|
|
|
20
20
|
def self.create(params, env=nil, headers={})
|
|
@@ -23,21 +23,21 @@ module ChargeBee
|
|
|
23
23
|
options = {
|
|
24
24
|
:isIdempotent => true
|
|
25
25
|
}
|
|
26
|
-
Request.send('post', uri_path("virtual_bank_accounts"), params, env, headers,nil, false, jsonKeys, options)
|
|
26
|
+
Request.send('post', uri_path("virtual_bank_accounts"), params, env, headers,nil, false, jsonKeys, options, "virtualBankAccount", "create")
|
|
27
27
|
end
|
|
28
28
|
|
|
29
29
|
def self.retrieve(id, env=nil, headers={})
|
|
30
30
|
jsonKeys = {
|
|
31
31
|
}
|
|
32
32
|
options = {}
|
|
33
|
-
Request.send('get', uri_path("virtual_bank_accounts",id.to_s), {}, env, headers,nil, false, jsonKeys, options)
|
|
33
|
+
Request.send('get', uri_path("virtual_bank_accounts",id.to_s), {}, env, headers,nil, false, jsonKeys, options, "virtualBankAccount", "retrieve")
|
|
34
34
|
end
|
|
35
35
|
|
|
36
36
|
def self.list(params={}, env=nil, headers={})
|
|
37
37
|
jsonKeys = {
|
|
38
38
|
}
|
|
39
39
|
options = {}
|
|
40
|
-
Request.send_list_request('get', uri_path("virtual_bank_accounts"), params, env, headers,nil, false, jsonKeys, options)
|
|
40
|
+
Request.send_list_request('get', uri_path("virtual_bank_accounts"), params, env, headers,nil, false, jsonKeys, options, "virtualBankAccount", "list")
|
|
41
41
|
end
|
|
42
42
|
|
|
43
43
|
def self.delete(id, env=nil, headers={})
|
|
@@ -46,7 +46,7 @@ module ChargeBee
|
|
|
46
46
|
options = {
|
|
47
47
|
:isIdempotent => true
|
|
48
48
|
}
|
|
49
|
-
Request.send('post', uri_path("virtual_bank_accounts",id.to_s,"delete"), {}, env, headers,nil, false, jsonKeys, options)
|
|
49
|
+
Request.send('post', uri_path("virtual_bank_accounts",id.to_s,"delete"), {}, env, headers,nil, false, jsonKeys, options, "virtualBankAccount", "delete")
|
|
50
50
|
end
|
|
51
51
|
|
|
52
52
|
def self.delete_local(id, env=nil, headers={})
|
|
@@ -55,7 +55,7 @@ module ChargeBee
|
|
|
55
55
|
options = {
|
|
56
56
|
:isIdempotent => true
|
|
57
57
|
}
|
|
58
|
-
Request.send('post', uri_path("virtual_bank_accounts",id.to_s,"delete_local"), {}, env, headers,nil, false, jsonKeys, options)
|
|
58
|
+
Request.send('post', uri_path("virtual_bank_accounts",id.to_s,"delete_local"), {}, env, headers,nil, false, jsonKeys, options, "virtualBankAccount", "deleteLocal")
|
|
59
59
|
end
|
|
60
60
|
|
|
61
61
|
end # ~VirtualBankAccount
|
|
@@ -13,7 +13,7 @@ module ChargeBee
|
|
|
13
13
|
options = {
|
|
14
14
|
:isIdempotent => true
|
|
15
15
|
}
|
|
16
|
-
Request.send('post', uri_path("webhook_endpoints"), params, env, headers,nil, false, jsonKeys, options)
|
|
16
|
+
Request.send('post', uri_path("webhook_endpoints"), params, env, headers,nil, false, jsonKeys, options, "webhookEndpoint", "create")
|
|
17
17
|
end
|
|
18
18
|
|
|
19
19
|
def self.update(id, params={}, env=nil, headers={})
|
|
@@ -22,14 +22,14 @@ module ChargeBee
|
|
|
22
22
|
options = {
|
|
23
23
|
:isIdempotent => true
|
|
24
24
|
}
|
|
25
|
-
Request.send('post', uri_path("webhook_endpoints",id.to_s), params, env, headers,nil, false, jsonKeys, options)
|
|
25
|
+
Request.send('post', uri_path("webhook_endpoints",id.to_s), params, env, headers,nil, false, jsonKeys, options, "webhookEndpoint", "update")
|
|
26
26
|
end
|
|
27
27
|
|
|
28
28
|
def self.retrieve(id, env=nil, headers={})
|
|
29
29
|
jsonKeys = {
|
|
30
30
|
}
|
|
31
31
|
options = {}
|
|
32
|
-
Request.send('get', uri_path("webhook_endpoints",id.to_s), {}, env, headers,nil, false, jsonKeys, options)
|
|
32
|
+
Request.send('get', uri_path("webhook_endpoints",id.to_s), {}, env, headers,nil, false, jsonKeys, options, "webhookEndpoint", "retrieve")
|
|
33
33
|
end
|
|
34
34
|
|
|
35
35
|
def self.delete(id, env=nil, headers={})
|
|
@@ -38,14 +38,14 @@ module ChargeBee
|
|
|
38
38
|
options = {
|
|
39
39
|
:isIdempotent => true
|
|
40
40
|
}
|
|
41
|
-
Request.send('post', uri_path("webhook_endpoints",id.to_s,"delete"), {}, env, headers,nil, false, jsonKeys, options)
|
|
41
|
+
Request.send('post', uri_path("webhook_endpoints",id.to_s,"delete"), {}, env, headers,nil, false, jsonKeys, options, "webhookEndpoint", "delete")
|
|
42
42
|
end
|
|
43
43
|
|
|
44
44
|
def self.list(params={}, env=nil, headers={})
|
|
45
45
|
jsonKeys = {
|
|
46
46
|
}
|
|
47
47
|
options = {}
|
|
48
|
-
Request.send_list_request('get', uri_path("webhook_endpoints"), params, env, headers,nil, false, jsonKeys, options)
|
|
48
|
+
Request.send_list_request('get', uri_path("webhook_endpoints"), params, env, headers,nil, false, jsonKeys, options, "webhookEndpoint", "list")
|
|
49
49
|
end
|
|
50
50
|
|
|
51
51
|
end # ~WebhookEndpoint
|
data/lib/chargebee/request.rb
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
module ChargeBee
|
|
2
2
|
class Request
|
|
3
3
|
|
|
4
|
-
def self.send_list_request(method, url, params={}, env=nil, headers={}, sub_domain=nil, isJsonRequest=nil, jsonKeys={}, options={})
|
|
4
|
+
def self.send_list_request(method, url, params={}, env=nil, headers={}, sub_domain=nil, isJsonRequest=nil, jsonKeys={}, options={}, telemetry_resource=nil, telemetry_operation=nil)
|
|
5
5
|
serialized = {}
|
|
6
6
|
params.each do |k, v|
|
|
7
7
|
if(v.kind_of? Array)
|
|
@@ -9,19 +9,48 @@ module ChargeBee
|
|
|
9
9
|
end
|
|
10
10
|
serialized["#{k}"] = v
|
|
11
11
|
end
|
|
12
|
-
self.send(method, url, serialized, env, headers, sub_domain, isJsonRequest
|
|
12
|
+
self.send(method, url, serialized, env, headers, sub_domain, isJsonRequest, jsonKeys, options, telemetry_resource, telemetry_operation)
|
|
13
13
|
end
|
|
14
14
|
|
|
15
|
-
def self.send(method, url, params={}, env=nil, headers={}, sub_domain=nil, isJsonRequest=nil, jsonKeys={}, options={})
|
|
15
|
+
def self.send(method, url, params={}, env=nil, headers={}, sub_domain=nil, isJsonRequest=nil, jsonKeys={}, options={}, telemetry_resource=nil, telemetry_operation=nil)
|
|
16
|
+
telemetry_resource, telemetry_operation = normalize_telemetry_args(telemetry_resource, telemetry_operation)
|
|
16
17
|
env ||= ChargeBee.default_env
|
|
17
18
|
ser_params = isJsonRequest ? params : Util.serialize(params, nil, nil, jsonKeys)
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
19
|
+
http_url = TelemetryExecutor.build_http_url(env, sub_domain, url)
|
|
20
|
+
normalized_headers = headers || {}
|
|
21
|
+
|
|
22
|
+
TelemetryExecutor.execute(
|
|
23
|
+
env,
|
|
24
|
+
telemetry_resource: telemetry_resource,
|
|
25
|
+
telemetry_operation: telemetry_operation,
|
|
26
|
+
method: method,
|
|
27
|
+
http_url: http_url,
|
|
28
|
+
request_headers: normalized_headers,
|
|
29
|
+
) do |telemetry_headers|
|
|
30
|
+
merged_headers = normalized_headers.dup
|
|
31
|
+
if telemetry_headers
|
|
32
|
+
telemetry_headers.each { |key, value| merged_headers[key] = value }
|
|
33
|
+
end
|
|
34
|
+
resp, rheaders, rcode = NativeRequest.request(method, url, env, ser_params||={}, merged_headers, sub_domain, isJsonRequest, options)
|
|
35
|
+
result = if resp && resp.has_key?(:list)
|
|
36
|
+
ListResult.new(resp[:list], resp[:next_offset], rheaders, rcode)
|
|
37
|
+
else
|
|
38
|
+
Result.new(resp, rheaders, rcode)
|
|
39
|
+
end
|
|
40
|
+
[rcode.to_i, result]
|
|
23
41
|
end
|
|
24
42
|
end
|
|
25
43
|
|
|
44
|
+
def self.normalize_telemetry_args(telemetry_resource, telemetry_operation)
|
|
45
|
+
if telemetry_resource.is_a?(Hash) && telemetry_operation.nil? &&
|
|
46
|
+
(telemetry_resource.key?(:telemetry_resource) || telemetry_resource.key?(:telemetry_operation))
|
|
47
|
+
h = telemetry_resource
|
|
48
|
+
return [h[:telemetry_resource], h[:telemetry_operation]]
|
|
49
|
+
end
|
|
50
|
+
|
|
51
|
+
[telemetry_resource, telemetry_operation]
|
|
52
|
+
end
|
|
53
|
+
private_class_method :normalize_telemetry_args
|
|
54
|
+
|
|
26
55
|
end
|
|
27
56
|
end
|
data/lib/chargebee/result.rb
CHANGED
|
@@ -30,6 +30,20 @@ module ChargeBee
|
|
|
30
30
|
end
|
|
31
31
|
end
|
|
32
32
|
|
|
33
|
+
def async_response_list()
|
|
34
|
+
async_response_list = get(:async_response_list, AsyncResponseList, {},
|
|
35
|
+
{:list => AsyncResponse});
|
|
36
|
+
async_response_list.init_dependant_list(@response[:async_response_list], :list,
|
|
37
|
+
{:request => AsyncResponse::RequestAsyncApi, :error_detail => AsyncResponse::Error});
|
|
38
|
+
return async_response_list;
|
|
39
|
+
end
|
|
40
|
+
|
|
41
|
+
def async_response()
|
|
42
|
+
async_response = get(:async_response, AsyncResponse,
|
|
43
|
+
{:request_async_api => AsyncResponse::RequestAsyncApi, :error => AsyncResponse::Error});
|
|
44
|
+
return async_response;
|
|
45
|
+
end
|
|
46
|
+
|
|
33
47
|
def subscription()
|
|
34
48
|
subscription = get(:subscription, Subscription,
|
|
35
49
|
{:subscription_items => Subscription::SubscriptionItem, :item_tiers => Subscription::ItemTier, :charged_items => Subscription::ChargedItem, :addons => Subscription::Addon, :event_based_addons => Subscription::EventBasedAddon, :charged_event_based_addons => Subscription::ChargedEventBasedAddon, :coupons => Subscription::Coupon, :shipping_address => Subscription::ShippingAddress, :referral_info => Subscription::ReferralInfo, :billing_override => Subscription::BillingOverride, :contract_term => Subscription::ContractTerm, :discounts => Subscription::Discount});
|
|
@@ -106,7 +120,7 @@ module ChargeBee
|
|
|
106
120
|
|
|
107
121
|
def invoice()
|
|
108
122
|
invoice = get(:invoice, Invoice,
|
|
109
|
-
{:line_items => Invoice::LineItem, :line_item_tiers => Invoice::LineItemTier, :line_item_discounts => Invoice::LineItemDiscount, :line_item_taxes => Invoice::LineItemTax, :line_item_credits => Invoice::LineItemCredit, :line_item_addresses => Invoice::LineItemAddress, :discounts => Invoice::Discount, :taxes => Invoice::Tax, :tax_origin => Invoice::TaxOrigin, :linked_payments => Invoice::LinkedPayment, :reference_transactions => Invoice::ReferenceTransaction, :dunning_attempts => Invoice::DunningAttempt, :applied_credits => Invoice::AppliedCredit, :adjustment_credit_notes => Invoice::AdjustmentCreditNote, :issued_credit_notes => Invoice::IssuedCreditNote, :linked_orders => Invoice::LinkedOrder, :notes => Invoice::Note, :shipping_address => Invoice::ShippingAddress, :billing_address => Invoice::BillingAddress, :statement_descriptor => Invoice::StatementDescriptor, :einvoice => Invoice::Einvoice, :site_details_at_creation => Invoice::SiteDetailsAtCreation});
|
|
123
|
+
{:exchange_rates => Invoice::ExchangeRate, :line_items => Invoice::LineItem, :line_item_tiers => Invoice::LineItemTier, :line_item_discounts => Invoice::LineItemDiscount, :line_item_taxes => Invoice::LineItemTax, :line_item_credits => Invoice::LineItemCredit, :line_item_addresses => Invoice::LineItemAddress, :discounts => Invoice::Discount, :taxes => Invoice::Tax, :tax_origin => Invoice::TaxOrigin, :linked_payments => Invoice::LinkedPayment, :reference_transactions => Invoice::ReferenceTransaction, :dunning_attempts => Invoice::DunningAttempt, :applied_credits => Invoice::AppliedCredit, :adjustment_credit_notes => Invoice::AdjustmentCreditNote, :issued_credit_notes => Invoice::IssuedCreditNote, :linked_orders => Invoice::LinkedOrder, :notes => Invoice::Note, :shipping_address => Invoice::ShippingAddress, :billing_address => Invoice::BillingAddress, :statement_descriptor => Invoice::StatementDescriptor, :einvoice => Invoice::Einvoice, :site_details_at_creation => Invoice::SiteDetailsAtCreation});
|
|
110
124
|
return invoice;
|
|
111
125
|
end
|
|
112
126
|
|
|
@@ -133,7 +147,7 @@ module ChargeBee
|
|
|
133
147
|
|
|
134
148
|
def credit_note()
|
|
135
149
|
credit_note = get(:credit_note, CreditNote,
|
|
136
|
-
{:line_items => CreditNote::LineItem, :line_item_tiers => CreditNote::LineItemTier, :line_item_discounts => CreditNote::LineItemDiscount, :line_item_taxes => CreditNote::LineItemTax, :line_item_addresses => CreditNote::LineItemAddress, :discounts => CreditNote::Discount, :taxes => CreditNote::Tax, :tax_origin => CreditNote::TaxOrigin, :linked_refunds => CreditNote::LinkedRefund, :allocations => CreditNote::Allocation, :shipping_address => CreditNote::ShippingAddress, :billing_address => CreditNote::BillingAddress, :einvoice => CreditNote::Einvoice, :site_details_at_creation => CreditNote::SiteDetailsAtCreation});
|
|
150
|
+
{:line_items => CreditNote::LineItem, :line_item_tiers => CreditNote::LineItemTier, :line_item_discounts => CreditNote::LineItemDiscount, :line_item_taxes => CreditNote::LineItemTax, :line_item_addresses => CreditNote::LineItemAddress, :discounts => CreditNote::Discount, :taxes => CreditNote::Tax, :tax_origin => CreditNote::TaxOrigin, :linked_refunds => CreditNote::LinkedRefund, :allocations => CreditNote::Allocation, :exchange_rates => CreditNote::ExchangeRate, :shipping_address => CreditNote::ShippingAddress, :billing_address => CreditNote::BillingAddress, :einvoice => CreditNote::Einvoice, :site_details_at_creation => CreditNote::SiteDetailsAtCreation});
|
|
137
151
|
return credit_note;
|
|
138
152
|
end
|
|
139
153
|
|
|
@@ -318,7 +332,7 @@ module ChargeBee
|
|
|
318
332
|
|
|
319
333
|
def payment_intent()
|
|
320
334
|
payment_intent = get(:payment_intent, PaymentIntent,
|
|
321
|
-
{:payment_attempt => PaymentIntent::PaymentAttempt, :payment_attempts => PaymentIntent::PaymentAttempt});
|
|
335
|
+
{:payment_attempt => PaymentIntent::PaymentAttempt, :payment_attempts => PaymentIntent::PaymentAttempt, :payment_intent_metadata => PaymentIntent::PaymentIntentMetadata});
|
|
322
336
|
return payment_intent;
|
|
323
337
|
end
|
|
324
338
|
|
|
@@ -530,11 +544,31 @@ module ChargeBee
|
|
|
530
544
|
return rule;
|
|
531
545
|
end
|
|
532
546
|
|
|
547
|
+
def meter()
|
|
548
|
+
meter = get(:meter, Meter, {},
|
|
549
|
+
{:column_definitions => ColumnDefinition, :features => Feature});
|
|
550
|
+
meter.init_dependant_list(@response[:meter], :column_definitions,
|
|
551
|
+
{});
|
|
552
|
+
meter.init_dependant_list(@response[:meter], :features,
|
|
553
|
+
{:levels => Feature::Level});
|
|
554
|
+
return meter;
|
|
555
|
+
end
|
|
556
|
+
|
|
533
557
|
def usage_event()
|
|
534
558
|
usage_event = get(:usage_event, UsageEvent);
|
|
535
559
|
return usage_event;
|
|
536
560
|
end
|
|
537
561
|
|
|
562
|
+
def metered_feature()
|
|
563
|
+
metered_feature = get(:metered_feature, MeteredFeature, {},
|
|
564
|
+
{:column_definitions => ColumnDefinition, :features => Feature});
|
|
565
|
+
metered_feature.init_dependant_list(@response[:metered_feature], :column_definitions,
|
|
566
|
+
{});
|
|
567
|
+
metered_feature.init_dependant_list(@response[:metered_feature], :features,
|
|
568
|
+
{:levels => Feature::Level});
|
|
569
|
+
return metered_feature;
|
|
570
|
+
end
|
|
571
|
+
|
|
538
572
|
def usage_file()
|
|
539
573
|
usage_file = get(:usage_file, UsageFile,
|
|
540
574
|
{:upload_detail => UsageFile::UploadDetail});
|
|
@@ -579,7 +613,8 @@ module ChargeBee
|
|
|
579
613
|
end
|
|
580
614
|
|
|
581
615
|
def alert()
|
|
582
|
-
alert = get(:alert, Alert
|
|
616
|
+
alert = get(:alert, Alert,
|
|
617
|
+
{:threshold => Alert::Threshold, :filter_conditions => Alert::FilterCondition});
|
|
583
618
|
return alert;
|
|
584
619
|
end
|
|
585
620
|
|
|
@@ -644,7 +679,7 @@ module ChargeBee
|
|
|
644
679
|
|
|
645
680
|
def invoices()
|
|
646
681
|
invoices = get_list(:invoices, Invoice,
|
|
647
|
-
{:line_items => Invoice::LineItem, :line_item_tiers => Invoice::LineItemTier, :line_item_discounts => Invoice::LineItemDiscount, :line_item_taxes => Invoice::LineItemTax, :line_item_credits => Invoice::LineItemCredit, :line_item_addresses => Invoice::LineItemAddress, :discounts => Invoice::Discount, :taxes => Invoice::Tax, :tax_origin => Invoice::TaxOrigin, :linked_payments => Invoice::LinkedPayment, :reference_transactions => Invoice::ReferenceTransaction, :dunning_attempts => Invoice::DunningAttempt, :applied_credits => Invoice::AppliedCredit, :adjustment_credit_notes => Invoice::AdjustmentCreditNote, :issued_credit_notes => Invoice::IssuedCreditNote, :linked_orders => Invoice::LinkedOrder, :notes => Invoice::Note, :shipping_address => Invoice::ShippingAddress, :billing_address => Invoice::BillingAddress, :statement_descriptor => Invoice::StatementDescriptor, :einvoice => Invoice::Einvoice, :site_details_at_creation => Invoice::SiteDetailsAtCreation});
|
|
682
|
+
{:exchange_rates => Invoice::ExchangeRate, :line_items => Invoice::LineItem, :line_item_tiers => Invoice::LineItemTier, :line_item_discounts => Invoice::LineItemDiscount, :line_item_taxes => Invoice::LineItemTax, :line_item_credits => Invoice::LineItemCredit, :line_item_addresses => Invoice::LineItemAddress, :discounts => Invoice::Discount, :taxes => Invoice::Tax, :tax_origin => Invoice::TaxOrigin, :linked_payments => Invoice::LinkedPayment, :reference_transactions => Invoice::ReferenceTransaction, :dunning_attempts => Invoice::DunningAttempt, :applied_credits => Invoice::AppliedCredit, :adjustment_credit_notes => Invoice::AdjustmentCreditNote, :issued_credit_notes => Invoice::IssuedCreditNote, :linked_orders => Invoice::LinkedOrder, :notes => Invoice::Note, :shipping_address => Invoice::ShippingAddress, :billing_address => Invoice::BillingAddress, :statement_descriptor => Invoice::StatementDescriptor, :einvoice => Invoice::Einvoice, :site_details_at_creation => Invoice::SiteDetailsAtCreation});
|
|
648
683
|
return invoices;
|
|
649
684
|
end
|
|
650
685
|
|
|
@@ -656,7 +691,7 @@ module ChargeBee
|
|
|
656
691
|
|
|
657
692
|
def credit_notes()
|
|
658
693
|
credit_notes = get_list(:credit_notes, CreditNote,
|
|
659
|
-
{:line_items => CreditNote::LineItem, :line_item_tiers => CreditNote::LineItemTier, :line_item_discounts => CreditNote::LineItemDiscount, :line_item_taxes => CreditNote::LineItemTax, :line_item_addresses => CreditNote::LineItemAddress, :discounts => CreditNote::Discount, :taxes => CreditNote::Tax, :tax_origin => CreditNote::TaxOrigin, :linked_refunds => CreditNote::LinkedRefund, :allocations => CreditNote::Allocation, :shipping_address => CreditNote::ShippingAddress, :billing_address => CreditNote::BillingAddress, :einvoice => CreditNote::Einvoice, :site_details_at_creation => CreditNote::SiteDetailsAtCreation});
|
|
694
|
+
{:line_items => CreditNote::LineItem, :line_item_tiers => CreditNote::LineItemTier, :line_item_discounts => CreditNote::LineItemDiscount, :line_item_taxes => CreditNote::LineItemTax, :line_item_addresses => CreditNote::LineItemAddress, :discounts => CreditNote::Discount, :taxes => CreditNote::Tax, :tax_origin => CreditNote::TaxOrigin, :linked_refunds => CreditNote::LinkedRefund, :allocations => CreditNote::Allocation, :exchange_rates => CreditNote::ExchangeRate, :shipping_address => CreditNote::ShippingAddress, :billing_address => CreditNote::BillingAddress, :einvoice => CreditNote::Einvoice, :site_details_at_creation => CreditNote::SiteDetailsAtCreation});
|
|
660
695
|
return credit_notes;
|
|
661
696
|
end
|
|
662
697
|
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
# This file is auto-generated by Chargebee.
|
|
2
|
+
# For more information on how to make changes to this file, please see the README.
|
|
3
|
+
# Reach out to dx@chargebee.com for any questions.
|
|
4
|
+
# Copyright 2026 Chargebee Inc.
|
|
5
|
+
|
|
6
|
+
module ChargeBee
|
|
7
|
+
module Telemetry
|
|
8
|
+
# Context passed to TelemetryAdapter#on_request_start.
|
|
9
|
+
class RequestTelemetryContext
|
|
10
|
+
attr_reader :span_name, :resource, :operation, :http_method, :http_url, :server_address,
|
|
11
|
+
:chargebee_site, :chargebee_api_version, :sdk_name, :sdk_version, :start_attributes
|
|
12
|
+
|
|
13
|
+
def initialize(span_name:, resource:, operation:, http_method:, http_url:, server_address:,
|
|
14
|
+
chargebee_site:, chargebee_api_version:, sdk_name:, sdk_version:, start_attributes:)
|
|
15
|
+
@span_name = span_name
|
|
16
|
+
@resource = resource
|
|
17
|
+
@operation = operation
|
|
18
|
+
@http_method = http_method
|
|
19
|
+
@http_url = http_url
|
|
20
|
+
@server_address = server_address
|
|
21
|
+
@chargebee_site = chargebee_site
|
|
22
|
+
@chargebee_api_version = chargebee_api_version
|
|
23
|
+
@sdk_name = sdk_name
|
|
24
|
+
@sdk_version = sdk_version
|
|
25
|
+
@start_attributes = start_attributes.freeze
|
|
26
|
+
end
|
|
27
|
+
end
|
|
28
|
+
end
|
|
29
|
+
end
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
# This file is auto-generated by Chargebee.
|
|
2
|
+
# For more information on how to make changes to this file, please see the README.
|
|
3
|
+
# Reach out to dx@chargebee.com for any questions.
|
|
4
|
+
# Copyright 2026 Chargebee Inc.
|
|
5
|
+
|
|
6
|
+
module ChargeBee
|
|
7
|
+
module Telemetry
|
|
8
|
+
# Error details attached to RequestTelemetryResult on failed requests.
|
|
9
|
+
class RequestTelemetryError
|
|
10
|
+
attr_reader :message, :chargebee_error_code, :chargebee_api_error_type, :chargebee_error_param
|
|
11
|
+
|
|
12
|
+
def initialize(message:, chargebee_error_code: nil, chargebee_api_error_type: nil, chargebee_error_param: nil)
|
|
13
|
+
@message = message
|
|
14
|
+
@chargebee_error_code = chargebee_error_code
|
|
15
|
+
@chargebee_api_error_type = chargebee_api_error_type
|
|
16
|
+
@chargebee_error_param = chargebee_error_param
|
|
17
|
+
end
|
|
18
|
+
end
|
|
19
|
+
end
|
|
20
|
+
end
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
# This file is auto-generated by Chargebee.
|
|
2
|
+
# For more information on how to make changes to this file, please see the README.
|
|
3
|
+
# Reach out to dx@chargebee.com for any questions.
|
|
4
|
+
# Copyright 2026 Chargebee Inc.
|
|
5
|
+
|
|
6
|
+
module ChargeBee
|
|
7
|
+
module Telemetry
|
|
8
|
+
# Result passed to TelemetryAdapter#on_request_end.
|
|
9
|
+
class RequestTelemetryResult
|
|
10
|
+
attr_reader :http_status_code, :duration_ms, :error, :end_attributes
|
|
11
|
+
|
|
12
|
+
def initialize(http_status_code:, duration_ms:, error:, end_attributes:)
|
|
13
|
+
@http_status_code = http_status_code
|
|
14
|
+
@duration_ms = duration_ms
|
|
15
|
+
@error = error
|
|
16
|
+
@end_attributes = end_attributes.freeze
|
|
17
|
+
end
|
|
18
|
+
end
|
|
19
|
+
end
|
|
20
|
+
end
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
# This file is auto-generated by Chargebee.
|
|
2
|
+
# For more information on how to make changes to this file, please see the README.
|
|
3
|
+
# Reach out to dx@chargebee.com for any questions.
|
|
4
|
+
# Copyright 2026 Chargebee Inc.
|
|
5
|
+
|
|
6
|
+
module ChargeBee
|
|
7
|
+
module Telemetry
|
|
8
|
+
# Optional telemetry adapter for observability integrations (e.g. OpenTelemetry).
|
|
9
|
+
#
|
|
10
|
+
# When not configured, the SDK skips all telemetry work — zero overhead. The SDK stores the
|
|
11
|
+
# adapter by reference and never clones or deep-copies it.
|
|
12
|
+
#
|
|
13
|
+
# Implementations may inject W3C trace context headers (traceparent, tracestate) into
|
|
14
|
+
# request_headers during on_request_start.
|
|
15
|
+
module TelemetryAdapter
|
|
16
|
+
# Called once per SDK API call before the request is sent (including before retries).
|
|
17
|
+
#
|
|
18
|
+
# context contains prebuilt start attributes. request_headers is a mutable map for trace propagation.
|
|
19
|
+
# Returns an opaque handle passed back to on_request_end, or nil if span creation was skipped.
|
|
20
|
+
def on_request_start(context, request_headers)
|
|
21
|
+
raise NotImplementedError
|
|
22
|
+
end
|
|
23
|
+
|
|
24
|
+
# Called once per SDK API call after the final response or terminal failure.
|
|
25
|
+
#
|
|
26
|
+
# handle is the value returned from on_request_start and may be nil. result contains prebuilt end attributes.
|
|
27
|
+
def on_request_end(handle, result)
|
|
28
|
+
raise NotImplementedError
|
|
29
|
+
end
|
|
30
|
+
end
|
|
31
|
+
end
|
|
32
|
+
end
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
# This file is auto-generated by Chargebee.
|
|
2
|
+
# For more information on how to make changes to this file, please see the README.
|
|
3
|
+
# Reach out to dx@chargebee.com for any questions.
|
|
4
|
+
# Copyright 2026 Chargebee Inc.
|
|
5
|
+
|
|
6
|
+
module ChargeBee
|
|
7
|
+
module Telemetry
|
|
8
|
+
# Span attribute keys shared across Chargebee SDKs.
|
|
9
|
+
module TelemetryAttributeKeys
|
|
10
|
+
SDK_NAME = 'chargebee-ruby'.freeze
|
|
11
|
+
TELEMETRY_SPAN_NAME_PREFIX = 'chargebee'.freeze
|
|
12
|
+
|
|
13
|
+
HTTP_REQUEST_HEADER_ATTRIBUTE_PREFIX = 'http.request.header.'.freeze
|
|
14
|
+
CHARGEBEE_TELEMETRY_HEADER_PREFIX = 'chargebee-'.freeze
|
|
15
|
+
CHARGEBEE_TELEMETRY_HEADER_EXCLUDE_PREFIX = 'chargebee-request-origin-'.freeze
|
|
16
|
+
|
|
17
|
+
URL_FULL = 'url.full'.freeze
|
|
18
|
+
HTTP_REQUEST_METHOD = 'http.request.method'.freeze
|
|
19
|
+
HTTP_RESPONSE_STATUS_CODE = 'http.response.status_code'.freeze
|
|
20
|
+
SERVER_ADDRESS = 'server.address'.freeze
|
|
21
|
+
ERROR_TYPE = 'error.type'.freeze
|
|
22
|
+
CHARGEBEE_SITE = 'chargebee.site'.freeze
|
|
23
|
+
CHARGEBEE_API_VERSION = 'chargebee.api_version'.freeze
|
|
24
|
+
CHARGEBEE_RESOURCE = 'chargebee.resource'.freeze
|
|
25
|
+
CHARGEBEE_OPERATION = 'chargebee.operation'.freeze
|
|
26
|
+
CHARGEBEE_SDK_NAME = 'chargebee.sdk.name'.freeze
|
|
27
|
+
CHARGEBEE_SDK_VERSION = 'chargebee.sdk.version'.freeze
|
|
28
|
+
CHARGEBEE_ERROR_CODE = 'chargebee.error.code'.freeze
|
|
29
|
+
CHARGEBEE_ERROR_TYPE = 'chargebee.error.type'.freeze
|
|
30
|
+
CHARGEBEE_ERROR_PARAM = 'chargebee.error.param'.freeze
|
|
31
|
+
end
|
|
32
|
+
end
|
|
33
|
+
end
|
|
@@ -0,0 +1,123 @@
|
|
|
1
|
+
# This file is auto-generated by Chargebee.
|
|
2
|
+
# For more information on how to make changes to this file, please see the README.
|
|
3
|
+
# Reach out to dx@chargebee.com for any questions.
|
|
4
|
+
# Copyright 2026 Chargebee Inc.
|
|
5
|
+
|
|
6
|
+
module ChargeBee
|
|
7
|
+
module Telemetry
|
|
8
|
+
# Helpers for building standardized Chargebee telemetry context and results.
|
|
9
|
+
class TelemetrySupport
|
|
10
|
+
class << self
|
|
11
|
+
def build_span_name(resource, operation)
|
|
12
|
+
"#{TelemetryAttributeKeys::TELEMETRY_SPAN_NAME_PREFIX}.#{resource}.#{operation}"
|
|
13
|
+
end
|
|
14
|
+
|
|
15
|
+
def resolve_chargebee_api_version(api_path)
|
|
16
|
+
api_path == '/api/v1' ? 'v1' : 'v2'
|
|
17
|
+
end
|
|
18
|
+
|
|
19
|
+
def build_request_start_span_attributes(resource, operation, http_method, http_url, server_address,
|
|
20
|
+
chargebee_site, chargebee_api_version, sdk_version, request_headers = {})
|
|
21
|
+
{
|
|
22
|
+
TelemetryAttributeKeys::URL_FULL => http_url,
|
|
23
|
+
TelemetryAttributeKeys::HTTP_REQUEST_METHOD => http_method,
|
|
24
|
+
TelemetryAttributeKeys::SERVER_ADDRESS => server_address,
|
|
25
|
+
TelemetryAttributeKeys::CHARGEBEE_SITE => chargebee_site,
|
|
26
|
+
TelemetryAttributeKeys::CHARGEBEE_API_VERSION => chargebee_api_version,
|
|
27
|
+
TelemetryAttributeKeys::CHARGEBEE_RESOURCE => resource,
|
|
28
|
+
TelemetryAttributeKeys::CHARGEBEE_OPERATION => operation,
|
|
29
|
+
TelemetryAttributeKeys::CHARGEBEE_SDK_NAME => TelemetryAttributeKeys::SDK_NAME,
|
|
30
|
+
TelemetryAttributeKeys::CHARGEBEE_SDK_VERSION => sdk_version,
|
|
31
|
+
}.merge(build_request_header_span_attributes(request_headers))
|
|
32
|
+
end
|
|
33
|
+
|
|
34
|
+
# Promotes chargebee-* request headers to http.request.header.* attributes; excludes the chargebee-request-origin-* PII family.
|
|
35
|
+
def build_request_header_span_attributes(request_headers)
|
|
36
|
+
attributes = {}
|
|
37
|
+
return attributes if request_headers.nil?
|
|
38
|
+
|
|
39
|
+
request_headers.each do |name, value|
|
|
40
|
+
next if name.nil? || value.nil?
|
|
41
|
+
|
|
42
|
+
lower_name = name.to_s.downcase
|
|
43
|
+
next unless lower_name.start_with?(TelemetryAttributeKeys::CHARGEBEE_TELEMETRY_HEADER_PREFIX)
|
|
44
|
+
next if lower_name.start_with?(TelemetryAttributeKeys::CHARGEBEE_TELEMETRY_HEADER_EXCLUDE_PREFIX)
|
|
45
|
+
|
|
46
|
+
attributes["#{TelemetryAttributeKeys::HTTP_REQUEST_HEADER_ATTRIBUTE_PREFIX}#{lower_name}"] = value.to_s
|
|
47
|
+
end
|
|
48
|
+
|
|
49
|
+
attributes
|
|
50
|
+
end
|
|
51
|
+
|
|
52
|
+
def build_request_end_span_attributes(http_status_code, error)
|
|
53
|
+
attributes = {
|
|
54
|
+
TelemetryAttributeKeys::HTTP_RESPONSE_STATUS_CODE => http_status_code,
|
|
55
|
+
}
|
|
56
|
+
|
|
57
|
+
if error
|
|
58
|
+
if error.chargebee_api_error_type
|
|
59
|
+
attributes[TelemetryAttributeKeys::ERROR_TYPE] = error.chargebee_api_error_type
|
|
60
|
+
attributes[TelemetryAttributeKeys::CHARGEBEE_ERROR_TYPE] = error.chargebee_api_error_type
|
|
61
|
+
end
|
|
62
|
+
attributes[TelemetryAttributeKeys::CHARGEBEE_ERROR_CODE] = error.chargebee_error_code if error.chargebee_error_code
|
|
63
|
+
attributes[TelemetryAttributeKeys::CHARGEBEE_ERROR_PARAM] = error.chargebee_error_param if error.chargebee_error_param
|
|
64
|
+
end
|
|
65
|
+
|
|
66
|
+
attributes
|
|
67
|
+
end
|
|
68
|
+
|
|
69
|
+
def build_request_telemetry_context(resource, operation, http_method, http_url, server_address,
|
|
70
|
+
chargebee_site, chargebee_api_version, sdk_version, request_headers = {})
|
|
71
|
+
RequestTelemetryContext.new(
|
|
72
|
+
span_name: build_span_name(resource, operation),
|
|
73
|
+
resource: resource,
|
|
74
|
+
operation: operation,
|
|
75
|
+
http_method: http_method,
|
|
76
|
+
http_url: http_url,
|
|
77
|
+
server_address: server_address,
|
|
78
|
+
chargebee_site: chargebee_site,
|
|
79
|
+
chargebee_api_version: chargebee_api_version,
|
|
80
|
+
sdk_name: TelemetryAttributeKeys::SDK_NAME,
|
|
81
|
+
sdk_version: sdk_version,
|
|
82
|
+
start_attributes: build_request_start_span_attributes(
|
|
83
|
+
resource, operation, http_method, http_url, server_address, chargebee_site, chargebee_api_version, sdk_version, request_headers
|
|
84
|
+
),
|
|
85
|
+
)
|
|
86
|
+
end
|
|
87
|
+
|
|
88
|
+
def build_request_telemetry_result(http_status_code, duration_ms, error)
|
|
89
|
+
RequestTelemetryResult.new(
|
|
90
|
+
http_status_code: http_status_code,
|
|
91
|
+
duration_ms: duration_ms,
|
|
92
|
+
error: error,
|
|
93
|
+
end_attributes: build_request_end_span_attributes(http_status_code, error),
|
|
94
|
+
)
|
|
95
|
+
end
|
|
96
|
+
|
|
97
|
+
def extract_request_telemetry_error(err)
|
|
98
|
+
return nil if err.nil?
|
|
99
|
+
|
|
100
|
+
message = err.message.to_s
|
|
101
|
+
message = 'Chargebee API request failed' if message.empty?
|
|
102
|
+
|
|
103
|
+
if err.is_a?(ChargeBee::APIError)
|
|
104
|
+
return RequestTelemetryError.new(
|
|
105
|
+
message: message,
|
|
106
|
+
chargebee_error_code: err.api_error_code,
|
|
107
|
+
chargebee_api_error_type: err.type.to_s,
|
|
108
|
+
chargebee_error_param: err.param,
|
|
109
|
+
)
|
|
110
|
+
end
|
|
111
|
+
|
|
112
|
+
RequestTelemetryError.new(message: message)
|
|
113
|
+
end
|
|
114
|
+
|
|
115
|
+
def extract_http_status_code(err)
|
|
116
|
+
return err.http_status_code if err.is_a?(ChargeBee::APIError)
|
|
117
|
+
|
|
118
|
+
nil
|
|
119
|
+
end
|
|
120
|
+
end
|
|
121
|
+
end
|
|
122
|
+
end
|
|
123
|
+
end
|