metronome-sdk 1.0.0 → 2.1.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 +91 -0
- data/README.md +1 -1
- data/lib/metronome_sdk/errors.rb +25 -11
- data/lib/metronome_sdk/file_part.rb +10 -7
- data/lib/metronome_sdk/internal/body_cursor_page.rb +1 -1
- data/lib/metronome_sdk/internal/cursor_page.rb +1 -1
- data/lib/metronome_sdk/internal/cursor_page_without_limit.rb +1 -1
- data/lib/metronome_sdk/internal/transport/base_client.rb +11 -7
- data/lib/metronome_sdk/internal/transport/pooled_net_requester.rb +34 -31
- data/lib/metronome_sdk/internal/type/base_page.rb +1 -1
- data/lib/metronome_sdk/internal/type/enum.rb +25 -0
- data/lib/metronome_sdk/internal/type/file_input.rb +7 -4
- data/lib/metronome_sdk/internal/util.rb +8 -7
- data/lib/metronome_sdk/models/contract.rb +1 -0
- data/lib/metronome_sdk/models/contract_v2.rb +275 -6
- data/lib/metronome_sdk/models/contract_without_amendments.rb +2 -2
- data/lib/metronome_sdk/models/hierarchy_configuration.rb +123 -2
- data/lib/metronome_sdk/models/payment_gate_config.rb +1 -0
- data/lib/metronome_sdk/models/payment_gate_config_v2.rb +1 -0
- data/lib/metronome_sdk/models/subscription.rb +95 -1
- data/lib/metronome_sdk/models/v1/alert_archive_params.rb +8 -4
- data/lib/metronome_sdk/models/v1/alert_create_params.rb +38 -36
- data/lib/metronome_sdk/models/v1/contract_amend_params.rb +1 -0
- data/lib/metronome_sdk/models/v1/contract_create_params.rb +157 -9
- data/lib/metronome_sdk/models/v1/contract_list_balances_params.rb +9 -1
- data/lib/metronome_sdk/models/v1/customer_create_params.rb +11 -1
- data/lib/metronome_sdk/models/v1/customer_detail.rb +9 -1
- data/lib/metronome_sdk/models/v1/customer_preview_events_params.rb +19 -25
- data/lib/metronome_sdk/models/v1/customer_preview_events_response.rb +3 -3
- data/lib/metronome_sdk/models/v1/customer_retrieve_billing_configurations_response.rb +1 -0
- data/lib/metronome_sdk/models/v1/customer_set_billing_configurations_params.rb +1 -0
- data/lib/metronome_sdk/models/v1/customers/alert_list_params.rb +3 -3
- data/lib/metronome_sdk/models/v1/customers/alert_reset_params.rb +2 -2
- data/lib/metronome_sdk/models/v1/customers/alert_retrieve_params.rb +12 -12
- data/lib/metronome_sdk/models/v1/customers/billing_config_create_params.rb +6 -1
- data/lib/metronome_sdk/models/v1/customers/billing_config_delete_params.rb +1 -0
- data/lib/metronome_sdk/models/v1/customers/billing_config_retrieve_params.rb +1 -0
- data/lib/metronome_sdk/models/v1/customers/billing_config_retrieve_response.rb +6 -1
- data/lib/metronome_sdk/models/v1/customers/commit_create_params.rb +1 -1
- data/lib/metronome_sdk/models/v1/customers/customer_alert.rb +41 -38
- data/lib/metronome_sdk/models/v1/customers/invoice.rb +256 -16
- data/lib/metronome_sdk/models/v1/customers/invoice_retrieve_pdf_params.rb +30 -0
- data/lib/metronome_sdk/models/v1/payment.rb +157 -0
- data/lib/metronome_sdk/models/v1/payment_attempt_params.rb +28 -0
- data/lib/metronome_sdk/models/v1/payment_attempt_response.rb +18 -0
- data/lib/metronome_sdk/models/v1/payment_cancel_params.rb +28 -0
- data/lib/metronome_sdk/models/v1/payment_cancel_response.rb +18 -0
- data/lib/metronome_sdk/models/v1/payment_list_params.rb +53 -0
- data/lib/metronome_sdk/models/v1/payment_status.rb +19 -0
- data/lib/metronome_sdk/models/v1/setting_upsert_avalara_credentials_params.rb +65 -0
- data/lib/metronome_sdk/models/v1/setting_upsert_avalara_credentials_response.rb +12 -0
- data/lib/metronome_sdk/models/v1/settings/billing_provider_create_params.rb +73 -0
- data/lib/metronome_sdk/models/v1/settings/billing_provider_create_response.rb +31 -0
- data/lib/metronome_sdk/models/v1/settings/billing_provider_list_params.rb +26 -0
- data/lib/metronome_sdk/models/v1/settings/billing_provider_list_response.rb +105 -0
- data/lib/metronome_sdk/models/v2/contract_edit_commit_params.rb +9 -1
- data/lib/metronome_sdk/models/v2/contract_edit_credit_params.rb +9 -1
- data/lib/metronome_sdk/models/v2/contract_edit_params.rb +219 -9
- data/lib/metronome_sdk/models/v2/contract_get_edit_history_response.rb +195 -8
- data/lib/metronome_sdk/resources/v1/alerts.rb +57 -53
- data/lib/metronome_sdk/resources/v1/contracts.rb +8 -5
- data/lib/metronome_sdk/resources/v1/credit_grants.rb +10 -5
- data/lib/metronome_sdk/resources/v1/customers/alerts.rb +70 -51
- data/lib/metronome_sdk/resources/v1/customers/billing_config.rb +7 -4
- data/lib/metronome_sdk/resources/v1/customers/commits.rb +2 -1
- data/lib/metronome_sdk/resources/v1/customers/invoices.rb +57 -1
- data/lib/metronome_sdk/resources/v1/customers/plans.rb +8 -4
- data/lib/metronome_sdk/resources/v1/customers.rb +13 -8
- data/lib/metronome_sdk/resources/v1/payments.rb +102 -0
- data/lib/metronome_sdk/resources/v1/plans.rb +8 -4
- data/lib/metronome_sdk/resources/v1/settings/billing_providers.rb +75 -0
- data/lib/metronome_sdk/resources/v1/settings.rb +55 -0
- data/lib/metronome_sdk/resources/v1/usage.rb +4 -2
- data/lib/metronome_sdk/resources/v1.rb +8 -0
- data/lib/metronome_sdk/resources/v2/contracts.rb +9 -3
- data/lib/metronome_sdk/version.rb +1 -1
- data/lib/metronome_sdk.rb +17 -0
- data/rbi/metronome_sdk/errors.rbi +29 -2
- data/rbi/metronome_sdk/file_part.rbi +1 -1
- data/rbi/metronome_sdk/internal/transport/base_client.rbi +4 -5
- data/rbi/metronome_sdk/internal/type/base_page.rbi +1 -1
- data/rbi/metronome_sdk/internal/util.rbi +1 -1
- data/rbi/metronome_sdk/models/contract.rbi +5 -0
- data/rbi/metronome_sdk/models/contract_v2.rbi +635 -10
- data/rbi/metronome_sdk/models/contract_without_amendments.rbi +2 -2
- data/rbi/metronome_sdk/models/hierarchy_configuration.rbi +286 -6
- data/rbi/metronome_sdk/models/payment_gate_config.rbi +5 -0
- data/rbi/metronome_sdk/models/payment_gate_config_v2.rbi +5 -0
- data/rbi/metronome_sdk/models/subscription.rbi +190 -0
- data/rbi/metronome_sdk/models/v1/alert_archive_params.rbi +6 -4
- data/rbi/metronome_sdk/models/v1/alert_create_params.rbi +51 -47
- data/rbi/metronome_sdk/models/v1/contract_amend_params.rbi +5 -0
- data/rbi/metronome_sdk/models/v1/contract_create_params.rbi +326 -10
- data/rbi/metronome_sdk/models/v1/contract_list_balances_params.rbi +11 -0
- data/rbi/metronome_sdk/models/v1/customer_create_params.rbi +11 -0
- data/rbi/metronome_sdk/models/v1/customer_detail.rbi +8 -0
- data/rbi/metronome_sdk/models/v1/customer_preview_events_params.rbi +24 -32
- data/rbi/metronome_sdk/models/v1/customer_preview_events_response.rbi +10 -9
- data/rbi/metronome_sdk/models/v1/customer_retrieve_billing_configurations_response.rbi +5 -0
- data/rbi/metronome_sdk/models/v1/customer_set_billing_configurations_params.rbi +5 -0
- data/rbi/metronome_sdk/models/v1/customers/alert_list_params.rbi +4 -4
- data/rbi/metronome_sdk/models/v1/customers/alert_reset_params.rbi +2 -2
- data/rbi/metronome_sdk/models/v1/customers/alert_retrieve_params.rbi +14 -14
- data/rbi/metronome_sdk/models/v1/customers/billing_config_create_params.rbi +11 -0
- data/rbi/metronome_sdk/models/v1/customers/billing_config_delete_params.rbi +5 -0
- data/rbi/metronome_sdk/models/v1/customers/billing_config_retrieve_params.rbi +5 -0
- data/rbi/metronome_sdk/models/v1/customers/billing_config_retrieve_response.rbi +6 -0
- data/rbi/metronome_sdk/models/v1/customers/commit_create_params.rbi +2 -2
- data/rbi/metronome_sdk/models/v1/customers/customer_alert.rbi +53 -44
- data/rbi/metronome_sdk/models/v1/customers/invoice.rbi +462 -38
- data/rbi/metronome_sdk/models/v1/customers/invoice_retrieve_pdf_params.rbi +50 -0
- data/rbi/metronome_sdk/models/v1/payment.rbi +324 -0
- data/rbi/metronome_sdk/models/v1/payment_attempt_params.rbi +48 -0
- data/rbi/metronome_sdk/models/v1/payment_attempt_response.rbi +35 -0
- data/rbi/metronome_sdk/models/v1/payment_cancel_params.rbi +48 -0
- data/rbi/metronome_sdk/models/v1/payment_cancel_response.rbi +35 -0
- data/rbi/metronome_sdk/models/v1/payment_list_params.rbi +91 -0
- data/rbi/metronome_sdk/models/v1/payment_status.rbi +33 -0
- data/rbi/metronome_sdk/models/v1/setting_upsert_avalara_credentials_params.rbi +115 -0
- data/rbi/metronome_sdk/models/v1/setting_upsert_avalara_credentials_response.rbi +25 -0
- data/rbi/metronome_sdk/models/v1/settings/billing_provider_create_params.rbi +157 -0
- data/rbi/metronome_sdk/models/v1/settings/billing_provider_create_response.rbi +75 -0
- data/rbi/metronome_sdk/models/v1/settings/billing_provider_list_params.rbi +50 -0
- data/rbi/metronome_sdk/models/v1/settings/billing_provider_list_response.rbi +245 -0
- data/rbi/metronome_sdk/models/v2/contract_edit_commit_params.rbi +18 -0
- data/rbi/metronome_sdk/models/v2/contract_edit_credit_params.rbi +18 -0
- data/rbi/metronome_sdk/models/v2/contract_edit_params.rbi +536 -12
- data/rbi/metronome_sdk/models/v2/contract_get_edit_history_response.rbi +462 -14
- data/rbi/metronome_sdk/resources/v1/alerts.rbi +68 -64
- data/rbi/metronome_sdk/resources/v1/contracts.rbi +8 -4
- data/rbi/metronome_sdk/resources/v1/credit_grants.rbi +10 -5
- data/rbi/metronome_sdk/resources/v1/customers/alerts.rbi +73 -54
- data/rbi/metronome_sdk/resources/v1/customers/billing_config.rbi +8 -4
- data/rbi/metronome_sdk/resources/v1/customers/commits.rbi +3 -2
- data/rbi/metronome_sdk/resources/v1/customers/invoices.rbi +38 -1
- data/rbi/metronome_sdk/resources/v1/customers/plans.rbi +8 -4
- data/rbi/metronome_sdk/resources/v1/customers.rbi +17 -11
- data/rbi/metronome_sdk/resources/v1/payments.rbi +72 -0
- data/rbi/metronome_sdk/resources/v1/plans.rbi +8 -4
- data/rbi/metronome_sdk/resources/v1/settings/billing_providers.rbi +63 -0
- data/rbi/metronome_sdk/resources/v1/settings.rbi +47 -0
- data/rbi/metronome_sdk/resources/v1/usage.rbi +4 -2
- data/rbi/metronome_sdk/resources/v1.rbi +6 -0
- data/rbi/metronome_sdk/resources/v2/contracts.rbi +14 -0
- data/sig/metronome_sdk/errors.rbs +7 -0
- data/sig/metronome_sdk/file_part.rbs +1 -1
- data/sig/metronome_sdk/models/contract.rbs +2 -0
- data/sig/metronome_sdk/models/contract_v2.rbs +241 -12
- data/sig/metronome_sdk/models/hierarchy_configuration.rbs +87 -6
- data/sig/metronome_sdk/models/payment_gate_config.rbs +2 -1
- data/sig/metronome_sdk/models/payment_gate_config_v2.rbs +2 -1
- data/sig/metronome_sdk/models/subscription.rbs +80 -0
- data/sig/metronome_sdk/models/v1/contract_amend_params.rbs +2 -1
- data/sig/metronome_sdk/models/v1/contract_create_params.rbs +91 -5
- data/sig/metronome_sdk/models/v1/contract_list_balances_params.rbs +7 -0
- data/sig/metronome_sdk/models/v1/customer_create_params.rbs +2 -0
- data/sig/metronome_sdk/models/v1/customer_detail.rbs +5 -0
- data/sig/metronome_sdk/models/v1/customer_preview_events_params.rbs +0 -7
- data/sig/metronome_sdk/models/v1/customer_preview_events_response.rbs +6 -4
- data/sig/metronome_sdk/models/v1/customer_retrieve_billing_configurations_response.rbs +2 -0
- data/sig/metronome_sdk/models/v1/customer_set_billing_configurations_params.rbs +2 -0
- data/sig/metronome_sdk/models/v1/customers/billing_config_create_params.rbs +2 -0
- data/sig/metronome_sdk/models/v1/customers/billing_config_delete_params.rbs +2 -0
- data/sig/metronome_sdk/models/v1/customers/billing_config_retrieve_params.rbs +2 -0
- data/sig/metronome_sdk/models/v1/customers/customer_alert.rbs +2 -0
- data/sig/metronome_sdk/models/v1/customers/invoice.rbs +244 -19
- data/sig/metronome_sdk/models/v1/customers/invoice_retrieve_pdf_params.rbs +32 -0
- data/sig/metronome_sdk/models/v1/payment.rbs +198 -0
- data/sig/metronome_sdk/models/v1/payment_attempt_params.rbs +30 -0
- data/sig/metronome_sdk/models/v1/payment_attempt_response.rbs +15 -0
- data/sig/metronome_sdk/models/v1/payment_cancel_params.rbs +30 -0
- data/sig/metronome_sdk/models/v1/payment_cancel_response.rbs +15 -0
- data/sig/metronome_sdk/models/v1/payment_list_params.rbs +56 -0
- data/sig/metronome_sdk/models/v1/payment_status.rbs +19 -0
- data/sig/metronome_sdk/models/v1/setting_upsert_avalara_credentials_params.rbs +54 -0
- data/sig/metronome_sdk/models/v1/setting_upsert_avalara_credentials_response.rbs +13 -0
- data/sig/metronome_sdk/models/v1/settings/billing_provider_create_params.rbs +64 -0
- data/sig/metronome_sdk/models/v1/settings/billing_provider_create_response.rbs +34 -0
- data/sig/metronome_sdk/models/v1/settings/billing_provider_list_params.rbs +28 -0
- data/sig/metronome_sdk/models/v1/settings/billing_provider_list_response.rbs +102 -0
- data/sig/metronome_sdk/models/v2/contract_edit_commit_params.rbs +9 -0
- data/sig/metronome_sdk/models/v2/contract_edit_credit_params.rbs +9 -0
- data/sig/metronome_sdk/models/v2/contract_edit_params.rbs +184 -7
- data/sig/metronome_sdk/models/v2/contract_get_edit_history_response.rbs +221 -18
- data/sig/metronome_sdk/resources/v1/contracts.rbs +1 -0
- data/sig/metronome_sdk/resources/v1/customers/invoices.rbs +6 -0
- data/sig/metronome_sdk/resources/v1/payments.rbs +30 -0
- data/sig/metronome_sdk/resources/v1/settings/billing_providers.rbs +23 -0
- data/sig/metronome_sdk/resources/v1/settings.rbs +19 -0
- data/sig/metronome_sdk/resources/v1.rbs +4 -0
- data/sig/metronome_sdk/resources/v2/contracts.rbs +3 -0
- metadata +53 -2
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA256:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: f70b65323a25a4de65861565a092a6aa70f43d28e5e910acca44d883efe9cf86
|
|
4
|
+
data.tar.gz: 4d89458274f95fb69ca5d6bccad455a6ecaf92a3d1a93b8843290166f724e01d
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: '010907bdf574da3664f42af09be522e41a87dfc4ae1280ee4307326c8d62751c1fdc11bfec4214ec22176cbaf0002a2f1a7b6ed3668da3fb3347ab2bdb3b5494'
|
|
7
|
+
data.tar.gz: d9be0ec4d10b760064dc84412f78c074258613af6b2ba7e33432ddade4c39d6356ed9d4fc59fb7a89eadc1ce4cd99f893e7c329bbedc27b4dc8e3ac8f76d1c5d
|
data/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,96 @@
|
|
|
1
1
|
# Changelog
|
|
2
2
|
|
|
3
|
+
## 2.1.0 (2025-10-31)
|
|
4
|
+
|
|
5
|
+
Full Changelog: [v2.0.0...v2.1.0](https://github.com/Metronome-Industries/metronome-ruby/compare/v2.0.0...v2.1.0)
|
|
6
|
+
|
|
7
|
+
### Features
|
|
8
|
+
|
|
9
|
+
* [ORCH-282] plumb `payment_method_id` to the payment gateway object ([bba092f](https://github.com/Metronome-Industries/metronome-ruby/commit/bba092fbe0b66d2f2df6187c579bdc0458375a65))
|
|
10
|
+
* [ORCH-797] add billing_provider_error to invoice.external_invoice ([7f77e42](https://github.com/Metronome-Industries/metronome-ruby/commit/7f77e42d219f720783d480096248bf153e771336))
|
|
11
|
+
* Add avalara creds + billing provider APIs to SDK. Add avalara creds API to docs. ([9808e39](https://github.com/Metronome-Industries/metronome-ruby/commit/9808e39003df39e50183c64e806ef4589819353d))
|
|
12
|
+
* add beta tag to stripe auto charge items ([652727e](https://github.com/Metronome-Industries/metronome-ruby/commit/652727e1f6df7269a3b6db00f401460aab32ce6d))
|
|
13
|
+
* add exclude_zero_balances field behind a FF for anthropic ([9e7b1a4](https://github.com/Metronome-Industries/metronome-ruby/commit/9e7b1a461fe7eb13fd846f18f0ea329f6b1083b7))
|
|
14
|
+
* add METRONOME to BillingProvider type ([2f7e988](https://github.com/Metronome-Industries/metronome-ruby/commit/2f7e9882bf53acae0356e748be68e37067ef9bd9))
|
|
15
|
+
* docs(api) Documentation for seat-based subscription linked recurring commits beta release ([2e53b04](https://github.com/Metronome-Industries/metronome-ruby/commit/2e53b04d23b9e49184bd91d32c712a4c59a73f0a))
|
|
16
|
+
* handle thread interrupts in the core HTTP client ([db696fe](https://github.com/Metronome-Industries/metronome-ruby/commit/db696fe074207b842d076aaafa549c5695c87dd5))
|
|
17
|
+
* ignore_duplicates ([cd50ce6](https://github.com/Metronome-Industries/metronome-ruby/commit/cd50ce63586d55d98557e050024cad863be60b99))
|
|
18
|
+
* internal: moving plans docs to deprecated section of new docs site ([f5f12b4](https://github.com/Metronome-Industries/metronome-ruby/commit/f5f12b4af2bbc39d892b885b6b6f768128330806))
|
|
19
|
+
* not ready for review ([efabbf6](https://github.com/Metronome-Industries/metronome-ruby/commit/efabbf64195a0575e5136ba7de0a0552a11a7592))
|
|
20
|
+
* not ready for review ([624dd4f](https://github.com/Metronome-Industries/metronome-ruby/commit/624dd4f2c827279317bb7ac53cb9c8ab9aa4dde8))
|
|
21
|
+
* Relax requirement on customer level commits for invoice_contract_id if do_not_invoice is set to true ([af4a8a7](https://github.com/Metronome-Industries/metronome-ruby/commit/af4a8a72d376d709a69b9cd248e54ef12eaa8124))
|
|
22
|
+
* update get customer alerts api to include low seat balance type ([1e08e6d](https://github.com/Metronome-Industries/metronome-ruby/commit/1e08e6d2f1186dd47e17a6bf986d8732ec9801b3))
|
|
23
|
+
|
|
24
|
+
|
|
25
|
+
### Bug Fixes
|
|
26
|
+
|
|
27
|
+
* **api:** Make id field required in /v2/notifications/edit ([34c16c6](https://github.com/Metronome-Industries/metronome-ruby/commit/34c16c6bcebdfc18765883b017708225cf6d312c))
|
|
28
|
+
|
|
29
|
+
|
|
30
|
+
### Chores
|
|
31
|
+
|
|
32
|
+
* **api:** Note SQL BM is not supported in previewCustomerEvents description ([1bb482c](https://github.com/Metronome-Industries/metronome-ruby/commit/1bb482c536bc70849b425b45a073431cf4dff009))
|
|
33
|
+
|
|
34
|
+
|
|
35
|
+
### Documentation
|
|
36
|
+
|
|
37
|
+
* add migrate amendments to edits page ([6b10754](https://github.com/Metronome-Industries/metronome-ruby/commit/6b1075422730cb9b1b254ac7549c76b8f5f8d475))
|
|
38
|
+
|
|
39
|
+
## 2.0.0 (2025-10-16)
|
|
40
|
+
|
|
41
|
+
Full Changelog: [v1.0.0...v2.0.0](https://github.com/Metronome-Industries/metronome-ruby/compare/v1.0.0...v2.0.0)
|
|
42
|
+
|
|
43
|
+
### ⚠ BREAKING CHANGES
|
|
44
|
+
|
|
45
|
+
* **api:** Remove customer_id from preview events payload
|
|
46
|
+
* **api:** in getEditHistory endpoint, commit invoice schedule amount, unit price, and quantity are now optional values
|
|
47
|
+
* **api:** Added optional archive_filter param to /notifications/offset/list endpoint
|
|
48
|
+
|
|
49
|
+
### Features
|
|
50
|
+
|
|
51
|
+
* Add empty handler for cancelPayment ([7e99149](https://github.com/Metronome-Industries/metronome-ruby/commit/7e99149c22a82550ec373c0727351c4b70c852eb))
|
|
52
|
+
* Add payment APIs to the SDK ([616d0df](https://github.com/Metronome-Industries/metronome-ruby/commit/616d0df5ded63e16bb817733c839196ac9033074))
|
|
53
|
+
* **api:** add billing_periods to Subscription ([fadf0b8](https://github.com/Metronome-Industries/metronome-ruby/commit/fadf0b8e5db369baefffa0a7e30602da594eff03))
|
|
54
|
+
* **api:** add new payments/attempt v1 api endpoint ([da865e7](https://github.com/Metronome-Industries/metronome-ruby/commit/da865e7efa8e041a6e84f3482ec786fb9ae0bb91))
|
|
55
|
+
* **api:** Added optional archive_filter param to /notifications/offset/list endpoint ([2fdc9f4](https://github.com/Metronome-Industries/metronome-ruby/commit/2fdc9f4e905b00e8bdfcfc7c364d08bb60b40c5f))
|
|
56
|
+
* **api:** Remove customer_id from preview events payload ([20ca72d](https://github.com/Metronome-Industries/metronome-ruby/commit/20ca72d41c6793058ab236e67b29bc2e0d2b4143))
|
|
57
|
+
* Bump graphql version and fix type errors ([13a12b1](https://github.com/Metronome-Industries/metronome-ruby/commit/13a12b145a0cf9889315ebf05bb147943632e520))
|
|
58
|
+
* elia/orch 128 add external apis for payments ([91fb616](https://github.com/Metronome-Industries/metronome-ruby/commit/91fb6167790ec522698bdbdb22ccd370f1bddcc2))
|
|
59
|
+
* expose response headers for both streams and errors ([9f0e87e](https://github.com/Metronome-Industries/metronome-ruby/commit/9f0e87e8df28a54ccc7a913d687205dee5ccf9cb))
|
|
60
|
+
* feat(api):Allow clients retrieve archived config via `/notifications/get` ([466033c](https://github.com/Metronome-Industries/metronome-ruby/commit/466033c55325bd066a9a8c6669955bbec1328ce1))
|
|
61
|
+
* internal: releasing x-mint ([d14a332](https://github.com/Metronome-Industries/metronome-ruby/commit/d14a33277f46d61ab13a26e22dd88f343583d9d6))
|
|
62
|
+
* internal: Skip retrieve_pdf API SDK tests ([c079dc3](https://github.com/Metronome-Industries/metronome-ruby/commit/c079dc32fddf4862e271cf60fd0192cca3cb0ce1))
|
|
63
|
+
* internal(docs): adding confluent endpoints ([79bb81b](https://github.com/Metronome-Industries/metronome-ruby/commit/79bb81b1b17ebd05349fac0279bc17b0a71f9245))
|
|
64
|
+
* LAUNCH-516 add getSubscriptionSeatsScheduleHistory api ([bcc34f8](https://github.com/Metronome-Industries/metronome-ruby/commit/bcc34f8dd2fe1be818ecbd1dbf9108020a15f2f7))
|
|
65
|
+
* rename getSubscriptionSeatsScheduleHistory to getSubscriptionSeatsHistory ([68ef0a3](https://github.com/Metronome-Industries/metronome-ruby/commit/68ef0a3ddd9771fa4d810d750f37483d24d2d3f0))
|
|
66
|
+
* Return array of invoices instead of single invoice and handle multipl… ([129d95e](https://github.com/Metronome-Industries/metronome-ruby/commit/129d95ef9c26cd35adb9b493aa07f610f53c2a89))
|
|
67
|
+
* Set up contract get and create with new AH info ([9a174d7](https://github.com/Metronome-Industries/metronome-ruby/commit/9a174d758368c63f563b26e840afa7385c7040cc))
|
|
68
|
+
* update api docs ([e9ef5a1](https://github.com/Metronome-Industries/metronome-ruby/commit/e9ef5a1e3aa60612c73d0bb7f88fe95382e81549))
|
|
69
|
+
|
|
70
|
+
|
|
71
|
+
### Bug Fixes
|
|
72
|
+
|
|
73
|
+
* absolutely qualified uris should always override the default ([d2a34bf](https://github.com/Metronome-Industries/metronome-ruby/commit/d2a34bf32891e8e9938f939c53971cf8c824406b))
|
|
74
|
+
* always send `filename=...` for multipart requests where a file is expected ([618065e](https://github.com/Metronome-Industries/metronome-ruby/commit/618065efd1dfc5f78842f26047c63f8f8214d922))
|
|
75
|
+
* **api:** in getEditHistory endpoint, commit invoice schedule amount, unit price, and quantity are now optional values ([d2a37fb](https://github.com/Metronome-Industries/metronome-ruby/commit/d2a37fb61ca0bd828868a2b7d86ddd0d5a12f311))
|
|
76
|
+
* coroutine leaks from connection pool ([f44d189](https://github.com/Metronome-Industries/metronome-ruby/commit/f44d18933e585e241d04277911be69eedbb72be8))
|
|
77
|
+
* **internal:** use null byte as file separator in the fast formatting script ([dec574a](https://github.com/Metronome-Industries/metronome-ruby/commit/dec574a038c9a81c43efd52fadbe9ed4b41d9465))
|
|
78
|
+
* LAUNCH-1130 remove min and max in api spec for better valiation error message ([1e2282c](https://github.com/Metronome-Industries/metronome-ruby/commit/1e2282cd8b3feab83f0b487e29509a7591d854b1))
|
|
79
|
+
* shorten multipart boundary sep to less than RFC specificed max length ([b49e6f1](https://github.com/Metronome-Industries/metronome-ruby/commit/b49e6f16e1836ddb330d3bb22ed5cbe70ebe435d))
|
|
80
|
+
* should not reuse buffers for `IO.copy_stream` interop ([c80da18](https://github.com/Metronome-Industries/metronome-ruby/commit/c80da18b2978ee09675a8031db122a04450fcd24))
|
|
81
|
+
|
|
82
|
+
|
|
83
|
+
### Performance Improvements
|
|
84
|
+
|
|
85
|
+
* faster code formatting ([1a84007](https://github.com/Metronome-Industries/metronome-ruby/commit/1a8400771228e75a50f7003f8864740da000f583))
|
|
86
|
+
|
|
87
|
+
|
|
88
|
+
### Chores
|
|
89
|
+
|
|
90
|
+
* allow fast-format to use bsd sed as well ([10fad42](https://github.com/Metronome-Industries/metronome-ruby/commit/10fad42d511c0a696c22b4f94b5c6c828b855980))
|
|
91
|
+
* do not install brew dependencies in ./scripts/bootstrap by default ([92ff30c](https://github.com/Metronome-Industries/metronome-ruby/commit/92ff30cd9332917e0f465525ccf2ac809d8de48b))
|
|
92
|
+
* ignore linter error for tests having large collections ([785a441](https://github.com/Metronome-Industries/metronome-ruby/commit/785a441f773283af8731625e50de3ea7d67bdc81))
|
|
93
|
+
|
|
3
94
|
## 1.0.0 (2025-09-15)
|
|
4
95
|
|
|
5
96
|
Full Changelog: [v0.3.0...v1.0.0](https://github.com/Metronome-Industries/metronome-ruby/compare/v0.3.0...v1.0.0)
|
data/README.md
CHANGED
data/lib/metronome_sdk/errors.rb
CHANGED
|
@@ -40,6 +40,9 @@ module MetronomeSDK
|
|
|
40
40
|
# @return [Integer, nil]
|
|
41
41
|
attr_accessor :status
|
|
42
42
|
|
|
43
|
+
# @return [Hash{String=>String}, nil]
|
|
44
|
+
attr_accessor :headers
|
|
45
|
+
|
|
43
46
|
# @return [Object, nil]
|
|
44
47
|
attr_accessor :body
|
|
45
48
|
|
|
@@ -47,13 +50,15 @@ module MetronomeSDK
|
|
|
47
50
|
#
|
|
48
51
|
# @param url [URI::Generic]
|
|
49
52
|
# @param status [Integer, nil]
|
|
53
|
+
# @param headers [Hash{String=>String}, nil]
|
|
50
54
|
# @param body [Object, nil]
|
|
51
55
|
# @param request [nil]
|
|
52
56
|
# @param response [nil]
|
|
53
57
|
# @param message [String, nil]
|
|
54
|
-
def initialize(url:, status: nil, body: nil, request: nil, response: nil, message: nil)
|
|
58
|
+
def initialize(url:, status: nil, headers: nil, body: nil, request: nil, response: nil, message: nil)
|
|
55
59
|
@url = url
|
|
56
60
|
@status = status
|
|
61
|
+
@headers = headers
|
|
57
62
|
@body = body
|
|
58
63
|
@request = request
|
|
59
64
|
@response = response
|
|
@@ -74,6 +79,7 @@ module MetronomeSDK
|
|
|
74
79
|
#
|
|
75
80
|
# @param url [URI::Generic]
|
|
76
81
|
# @param status [nil]
|
|
82
|
+
# @param headers [Hash{String=>String}, nil]
|
|
77
83
|
# @param body [nil]
|
|
78
84
|
# @param request [nil]
|
|
79
85
|
# @param response [nil]
|
|
@@ -81,6 +87,7 @@ module MetronomeSDK
|
|
|
81
87
|
def initialize(
|
|
82
88
|
url:,
|
|
83
89
|
status: nil,
|
|
90
|
+
headers: nil,
|
|
84
91
|
body: nil,
|
|
85
92
|
request: nil,
|
|
86
93
|
response: nil,
|
|
@@ -95,6 +102,7 @@ module MetronomeSDK
|
|
|
95
102
|
#
|
|
96
103
|
# @param url [URI::Generic]
|
|
97
104
|
# @param status [nil]
|
|
105
|
+
# @param headers [Hash{String=>String}, nil]
|
|
98
106
|
# @param body [nil]
|
|
99
107
|
# @param request [nil]
|
|
100
108
|
# @param response [nil]
|
|
@@ -102,6 +110,7 @@ module MetronomeSDK
|
|
|
102
110
|
def initialize(
|
|
103
111
|
url:,
|
|
104
112
|
status: nil,
|
|
113
|
+
headers: nil,
|
|
105
114
|
body: nil,
|
|
106
115
|
request: nil,
|
|
107
116
|
response: nil,
|
|
@@ -116,21 +125,24 @@ module MetronomeSDK
|
|
|
116
125
|
#
|
|
117
126
|
# @param url [URI::Generic]
|
|
118
127
|
# @param status [Integer]
|
|
128
|
+
# @param headers [Hash{String=>String}, nil]
|
|
119
129
|
# @param body [Object, nil]
|
|
120
130
|
# @param request [nil]
|
|
121
131
|
# @param response [nil]
|
|
122
132
|
# @param message [String, nil]
|
|
123
133
|
#
|
|
124
134
|
# @return [self]
|
|
125
|
-
def self.for(url:, status:, body:, request:, response:, message: nil)
|
|
126
|
-
kwargs =
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
135
|
+
def self.for(url:, status:, headers:, body:, request:, response:, message: nil)
|
|
136
|
+
kwargs =
|
|
137
|
+
{
|
|
138
|
+
url: url,
|
|
139
|
+
status: status,
|
|
140
|
+
headers: headers,
|
|
141
|
+
body: body,
|
|
142
|
+
request: request,
|
|
143
|
+
response: response,
|
|
144
|
+
message: message
|
|
145
|
+
}
|
|
134
146
|
|
|
135
147
|
case status
|
|
136
148
|
in 400
|
|
@@ -162,15 +174,17 @@ module MetronomeSDK
|
|
|
162
174
|
#
|
|
163
175
|
# @param url [URI::Generic]
|
|
164
176
|
# @param status [Integer]
|
|
177
|
+
# @param headers [Hash{String=>String}, nil]
|
|
165
178
|
# @param body [Object, nil]
|
|
166
179
|
# @param request [nil]
|
|
167
180
|
# @param response [nil]
|
|
168
181
|
# @param message [String, nil]
|
|
169
|
-
def initialize(url:, status:, body:, request:, response:, message: nil)
|
|
182
|
+
def initialize(url:, status:, headers:, body:, request:, response:, message: nil)
|
|
170
183
|
message ||= {url: url.to_s, status: status, body: body}
|
|
171
184
|
super(
|
|
172
185
|
url: url,
|
|
173
186
|
status: status,
|
|
187
|
+
headers: headers,
|
|
174
188
|
body: body,
|
|
175
189
|
request: request,
|
|
176
190
|
response: response,
|
|
@@ -38,18 +38,21 @@ module MetronomeSDK
|
|
|
38
38
|
def to_yaml(*a) = read.to_yaml(*a)
|
|
39
39
|
|
|
40
40
|
# @param content [Pathname, StringIO, IO, String]
|
|
41
|
-
# @param filename [String, nil]
|
|
41
|
+
# @param filename [Pathname, String, nil]
|
|
42
42
|
# @param content_type [String, nil]
|
|
43
43
|
def initialize(content, filename: nil, content_type: nil)
|
|
44
|
-
@
|
|
44
|
+
@content_type = content_type
|
|
45
45
|
@filename =
|
|
46
|
-
case content
|
|
47
|
-
in Pathname
|
|
48
|
-
|
|
46
|
+
case [filename, (@content = content)]
|
|
47
|
+
in [String | Pathname, _]
|
|
48
|
+
::File.basename(filename)
|
|
49
|
+
in [nil, Pathname]
|
|
50
|
+
content.basename.to_path
|
|
51
|
+
in [nil, IO]
|
|
52
|
+
content.to_path
|
|
49
53
|
else
|
|
50
|
-
filename
|
|
54
|
+
filename
|
|
51
55
|
end
|
|
52
|
-
@content_type = content_type
|
|
53
56
|
end
|
|
54
57
|
end
|
|
55
58
|
end
|
|
@@ -60,7 +60,7 @@ module MetronomeSDK
|
|
|
60
60
|
#
|
|
61
61
|
# @param client [MetronomeSDK::Internal::Transport::BaseClient]
|
|
62
62
|
# @param req [Hash{Symbol=>Object}]
|
|
63
|
-
# @param headers [Hash{String=>String}
|
|
63
|
+
# @param headers [Hash{String=>String}]
|
|
64
64
|
# @param page_data [Hash{Symbol=>Object}]
|
|
65
65
|
def initialize(client:, req:, headers:, page_data:)
|
|
66
66
|
super
|
|
@@ -60,7 +60,7 @@ module MetronomeSDK
|
|
|
60
60
|
#
|
|
61
61
|
# @param client [MetronomeSDK::Internal::Transport::BaseClient]
|
|
62
62
|
# @param req [Hash{Symbol=>Object}]
|
|
63
|
-
# @param headers [Hash{String=>String}
|
|
63
|
+
# @param headers [Hash{String=>String}]
|
|
64
64
|
# @param page_data [Hash{Symbol=>Object}]
|
|
65
65
|
def initialize(client:, req:, headers:, page_data:)
|
|
66
66
|
super
|
|
@@ -60,7 +60,7 @@ module MetronomeSDK
|
|
|
60
60
|
#
|
|
61
61
|
# @param client [MetronomeSDK::Internal::Transport::BaseClient]
|
|
62
62
|
# @param req [Hash{Symbol=>Object}]
|
|
63
|
-
# @param headers [Hash{String=>String}
|
|
63
|
+
# @param headers [Hash{String=>String}]
|
|
64
64
|
# @param page_data [Hash{Symbol=>Object}]
|
|
65
65
|
def initialize(client:, req:, headers:, page_data:)
|
|
66
66
|
super
|
|
@@ -47,7 +47,7 @@ module MetronomeSDK
|
|
|
47
47
|
# @api private
|
|
48
48
|
#
|
|
49
49
|
# @param status [Integer]
|
|
50
|
-
# @param headers [Hash{String=>String}
|
|
50
|
+
# @param headers [Hash{String=>String}]
|
|
51
51
|
#
|
|
52
52
|
# @return [Boolean]
|
|
53
53
|
def should_retry?(status, headers:)
|
|
@@ -85,7 +85,7 @@ module MetronomeSDK
|
|
|
85
85
|
#
|
|
86
86
|
# @param status [Integer]
|
|
87
87
|
#
|
|
88
|
-
# @param response_headers [Hash{String=>String}
|
|
88
|
+
# @param response_headers [Hash{String=>String}]
|
|
89
89
|
#
|
|
90
90
|
# @return [Hash{Symbol=>Object}]
|
|
91
91
|
def follow_redirect(request, status:, response_headers:)
|
|
@@ -378,6 +378,7 @@ module MetronomeSDK
|
|
|
378
378
|
rescue MetronomeSDK::Errors::APIConnectionError => e
|
|
379
379
|
status = e
|
|
380
380
|
end
|
|
381
|
+
headers = MetronomeSDK::Internal::Util.normalized_headers(response&.each_header&.to_h)
|
|
381
382
|
|
|
382
383
|
case status
|
|
383
384
|
in ..299
|
|
@@ -390,7 +391,7 @@ module MetronomeSDK
|
|
|
390
391
|
in 300..399
|
|
391
392
|
self.class.reap_connection!(status, stream: stream)
|
|
392
393
|
|
|
393
|
-
request = self.class.follow_redirect(request, status: status, response_headers:
|
|
394
|
+
request = self.class.follow_redirect(request, status: status, response_headers: headers)
|
|
394
395
|
send_request(
|
|
395
396
|
request,
|
|
396
397
|
redirect_count: redirect_count + 1,
|
|
@@ -399,9 +400,9 @@ module MetronomeSDK
|
|
|
399
400
|
)
|
|
400
401
|
in MetronomeSDK::Errors::APIConnectionError if retry_count >= max_retries
|
|
401
402
|
raise status
|
|
402
|
-
in (400..) if retry_count >= max_retries || !self.class.should_retry?(status, headers:
|
|
403
|
+
in (400..) if retry_count >= max_retries || !self.class.should_retry?(status, headers: headers)
|
|
403
404
|
decoded = Kernel.then do
|
|
404
|
-
MetronomeSDK::Internal::Util.decode_content(
|
|
405
|
+
MetronomeSDK::Internal::Util.decode_content(headers, stream: stream, suppress_error: true)
|
|
405
406
|
ensure
|
|
406
407
|
self.class.reap_connection!(status, stream: stream)
|
|
407
408
|
end
|
|
@@ -409,6 +410,7 @@ module MetronomeSDK
|
|
|
409
410
|
raise MetronomeSDK::Errors::APIStatusError.for(
|
|
410
411
|
url: url,
|
|
411
412
|
status: status,
|
|
413
|
+
headers: headers,
|
|
412
414
|
body: decoded,
|
|
413
415
|
request: nil,
|
|
414
416
|
response: response
|
|
@@ -485,19 +487,21 @@ module MetronomeSDK
|
|
|
485
487
|
send_retry_header: send_retry_header
|
|
486
488
|
)
|
|
487
489
|
|
|
488
|
-
|
|
490
|
+
headers = MetronomeSDK::Internal::Util.normalized_headers(response.each_header.to_h)
|
|
491
|
+
decoded = MetronomeSDK::Internal::Util.decode_content(headers, stream: stream)
|
|
489
492
|
case req
|
|
490
493
|
in {stream: Class => st}
|
|
491
494
|
st.new(
|
|
492
495
|
model: model,
|
|
493
496
|
url: url,
|
|
494
497
|
status: status,
|
|
498
|
+
headers: headers,
|
|
495
499
|
response: response,
|
|
496
500
|
unwrap: unwrap,
|
|
497
501
|
stream: decoded
|
|
498
502
|
)
|
|
499
503
|
in {page: Class => page}
|
|
500
|
-
page.new(client: self, req: req, headers:
|
|
504
|
+
page.new(client: self, req: req, headers: headers, page_data: decoded)
|
|
501
505
|
else
|
|
502
506
|
unwrapped = MetronomeSDK::Internal::Util.dig(decoded, unwrap)
|
|
503
507
|
MetronomeSDK::Internal::Type::Converter.coerce(model, unwrapped)
|
|
@@ -128,37 +128,47 @@ module MetronomeSDK
|
|
|
128
128
|
url, deadline = request.fetch_values(:url, :deadline)
|
|
129
129
|
|
|
130
130
|
req = nil
|
|
131
|
-
eof = false
|
|
132
131
|
finished = false
|
|
133
|
-
closing = nil
|
|
134
132
|
|
|
135
133
|
# rubocop:disable Metrics/BlockLength
|
|
136
134
|
enum = Enumerator.new do |y|
|
|
137
|
-
|
|
138
|
-
next if finished
|
|
139
|
-
|
|
140
|
-
req, closing = self.class.build_request(request) do
|
|
141
|
-
self.class.calibrate_socket_timeout(conn, deadline)
|
|
142
|
-
end
|
|
143
|
-
|
|
144
|
-
self.class.calibrate_socket_timeout(conn, deadline)
|
|
145
|
-
unless conn.started?
|
|
146
|
-
conn.keep_alive_timeout = self.class::KEEP_ALIVE_TIMEOUT
|
|
147
|
-
conn.start
|
|
148
|
-
end
|
|
135
|
+
next if finished
|
|
149
136
|
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
137
|
+
with_pool(url, deadline: deadline) do |conn|
|
|
138
|
+
eof = false
|
|
139
|
+
closing = nil
|
|
140
|
+
::Thread.handle_interrupt(Object => :never) do
|
|
141
|
+
::Thread.handle_interrupt(Object => :immediate) do
|
|
142
|
+
req, closing = self.class.build_request(request) do
|
|
143
|
+
self.class.calibrate_socket_timeout(conn, deadline)
|
|
144
|
+
end
|
|
154
145
|
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
146
|
+
self.class.calibrate_socket_timeout(conn, deadline)
|
|
147
|
+
unless conn.started?
|
|
148
|
+
conn.keep_alive_timeout = self.class::KEEP_ALIVE_TIMEOUT
|
|
149
|
+
conn.start
|
|
150
|
+
end
|
|
158
151
|
|
|
159
152
|
self.class.calibrate_socket_timeout(conn, deadline)
|
|
153
|
+
conn.request(req) do |rsp|
|
|
154
|
+
y << [req, rsp]
|
|
155
|
+
break if finished
|
|
156
|
+
|
|
157
|
+
rsp.read_body do |bytes|
|
|
158
|
+
y << bytes.force_encoding(Encoding::BINARY)
|
|
159
|
+
break if finished
|
|
160
|
+
|
|
161
|
+
self.class.calibrate_socket_timeout(conn, deadline)
|
|
162
|
+
end
|
|
163
|
+
eof = true
|
|
164
|
+
end
|
|
165
|
+
end
|
|
166
|
+
ensure
|
|
167
|
+
begin
|
|
168
|
+
conn.finish if !eof && conn&.started?
|
|
169
|
+
ensure
|
|
170
|
+
closing&.call
|
|
160
171
|
end
|
|
161
|
-
eof = true
|
|
162
172
|
end
|
|
163
173
|
end
|
|
164
174
|
rescue Timeout::Error
|
|
@@ -168,17 +178,10 @@ module MetronomeSDK
|
|
|
168
178
|
end
|
|
169
179
|
# rubocop:enable Metrics/BlockLength
|
|
170
180
|
|
|
171
|
-
|
|
181
|
+
_, response = enum.next
|
|
172
182
|
body = MetronomeSDK::Internal::Util.fused_enum(enum, external: true) do
|
|
173
183
|
finished = true
|
|
174
|
-
|
|
175
|
-
enum.next
|
|
176
|
-
rescue StopIteration
|
|
177
|
-
nil
|
|
178
|
-
end
|
|
179
|
-
ensure
|
|
180
|
-
conn.finish if !eof && conn&.started?
|
|
181
|
-
closing&.call
|
|
184
|
+
loop { enum.next }
|
|
182
185
|
end
|
|
183
186
|
[Integer(response.code), response, body]
|
|
184
187
|
end
|
|
@@ -39,7 +39,7 @@ module MetronomeSDK
|
|
|
39
39
|
#
|
|
40
40
|
# @param client [MetronomeSDK::Internal::Transport::BaseClient]
|
|
41
41
|
# @param req [Hash{Symbol=>Object}]
|
|
42
|
-
# @param headers [Hash{String=>String}
|
|
42
|
+
# @param headers [Hash{String=>String}]
|
|
43
43
|
# @param page_data [Object]
|
|
44
44
|
def initialize(client:, req:, headers:, page_data:)
|
|
45
45
|
@client = client
|
|
@@ -15,6 +15,31 @@ module MetronomeSDK
|
|
|
15
15
|
#
|
|
16
16
|
# We can therefore convert string values to Symbols, but can't convert other
|
|
17
17
|
# values safely.
|
|
18
|
+
#
|
|
19
|
+
# @example
|
|
20
|
+
# # `payment_status` is a `MetronomeSDK::V1::PaymentStatus`
|
|
21
|
+
# case payment_status
|
|
22
|
+
# when MetronomeSDK::V1::PaymentStatus::PENDING
|
|
23
|
+
# # ...
|
|
24
|
+
# when MetronomeSDK::V1::PaymentStatus::REQUIRES_INTERVENTION
|
|
25
|
+
# # ...
|
|
26
|
+
# when MetronomeSDK::V1::PaymentStatus::PAID
|
|
27
|
+
# # ...
|
|
28
|
+
# else
|
|
29
|
+
# puts(payment_status)
|
|
30
|
+
# end
|
|
31
|
+
#
|
|
32
|
+
# @example
|
|
33
|
+
# case payment_status
|
|
34
|
+
# in :pending
|
|
35
|
+
# # ...
|
|
36
|
+
# in :requires_intervention
|
|
37
|
+
# # ...
|
|
38
|
+
# in :paid
|
|
39
|
+
# # ...
|
|
40
|
+
# else
|
|
41
|
+
# puts(payment_status)
|
|
42
|
+
# end
|
|
18
43
|
module Enum
|
|
19
44
|
include MetronomeSDK::Internal::Type::Converter
|
|
20
45
|
include MetronomeSDK::Internal::Util::SorbetRuntimeSupport
|
|
@@ -82,17 +82,20 @@ module MetronomeSDK
|
|
|
82
82
|
#
|
|
83
83
|
# @return [Pathname, StringIO, IO, String, Object]
|
|
84
84
|
def dump(value, state:)
|
|
85
|
-
# rubocop:disable Lint/DuplicateBranch
|
|
86
85
|
case value
|
|
86
|
+
in StringIO | String
|
|
87
|
+
# https://datatracker.ietf.org/doc/html/rfc7578#section-4.2
|
|
88
|
+
# while not required, a filename is recommended, and in practice many servers do expect this
|
|
89
|
+
MetronomeSDK::FilePart.new(value, filename: "upload")
|
|
87
90
|
in IO
|
|
88
91
|
state[:can_retry] = false
|
|
92
|
+
value.to_path.nil? ? MetronomeSDK::FilePart.new(value, filename: "upload") : value
|
|
89
93
|
in MetronomeSDK::FilePart if value.content.is_a?(IO)
|
|
90
94
|
state[:can_retry] = false
|
|
95
|
+
value
|
|
91
96
|
else
|
|
97
|
+
value
|
|
92
98
|
end
|
|
93
|
-
# rubocop:enable Lint/DuplicateBranch
|
|
94
|
-
|
|
95
|
-
value
|
|
96
99
|
end
|
|
97
100
|
|
|
98
101
|
# @api private
|
|
@@ -346,8 +346,9 @@ module MetronomeSDK
|
|
|
346
346
|
base_path, base_query = lhs.fetch_values(:path, :query)
|
|
347
347
|
slashed = base_path.end_with?("/") ? base_path : "#{base_path}/"
|
|
348
348
|
|
|
349
|
-
|
|
350
|
-
|
|
349
|
+
merged = {**parse_uri(rhs.fetch(:path)), **rhs.except(:path, :query)}
|
|
350
|
+
parsed_path, parsed_query = merged.fetch_values(:path, :query)
|
|
351
|
+
override = URI::Generic.build(**merged.slice(:scheme, :host, :port), path: parsed_path)
|
|
351
352
|
|
|
352
353
|
joined = URI.join(URI::Generic.build(lhs.except(:path, :query)), slashed, override)
|
|
353
354
|
query = deep_merge(
|
|
@@ -473,10 +474,9 @@ module MetronomeSDK
|
|
|
473
474
|
# @return [Enumerable<String>]
|
|
474
475
|
def writable_enum(&blk)
|
|
475
476
|
Enumerator.new do |y|
|
|
476
|
-
buf = String.new
|
|
477
477
|
y.define_singleton_method(:write) do
|
|
478
|
-
self <<
|
|
479
|
-
|
|
478
|
+
self << _1.dup
|
|
479
|
+
_1.bytesize
|
|
480
480
|
end
|
|
481
481
|
|
|
482
482
|
blk.call(y)
|
|
@@ -566,7 +566,8 @@ module MetronomeSDK
|
|
|
566
566
|
#
|
|
567
567
|
# @return [Array(String, Enumerable<String>)]
|
|
568
568
|
private def encode_multipart_streaming(body)
|
|
569
|
-
|
|
569
|
+
# RFC 1521 Section 7.2.1 says we should have 70 char maximum for boundary length
|
|
570
|
+
boundary = SecureRandom.urlsafe_base64(46)
|
|
570
571
|
|
|
571
572
|
closing = []
|
|
572
573
|
strio = writable_enum do |y|
|
|
@@ -647,7 +648,7 @@ module MetronomeSDK
|
|
|
647
648
|
#
|
|
648
649
|
# Assumes each chunk in stream has `Encoding::BINARY`.
|
|
649
650
|
#
|
|
650
|
-
# @param headers [Hash{String=>String}
|
|
651
|
+
# @param headers [Hash{String=>String}]
|
|
651
652
|
# @param stream [Enumerable<String>]
|
|
652
653
|
# @param suppress_error [Boolean]
|
|
653
654
|
#
|