metronome-sdk 3.4.0 → 3.6.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 +84 -0
- data/README.md +1 -1
- data/lib/metronome_sdk/client.rb +15 -1
- data/lib/metronome_sdk/internal/transport/base_client.rb +2 -0
- data/lib/metronome_sdk/internal/util.rb +22 -7
- data/lib/metronome_sdk/models/base_threshold_commit.rb +10 -1
- data/lib/metronome_sdk/models/contract_v2.rb +443 -15
- data/lib/metronome_sdk/models/credit.rb +74 -4
- data/lib/metronome_sdk/models/override.rb +9 -8
- data/lib/metronome_sdk/models/prepaid_balance_threshold_configuration.rb +27 -1
- data/lib/metronome_sdk/models/prepaid_balance_threshold_configuration_v2.rb +28 -2
- data/lib/metronome_sdk/models/spend_threshold_configuration.rb +26 -1
- data/lib/metronome_sdk/models/spend_threshold_configuration_v2.rb +30 -4
- data/lib/metronome_sdk/models/update_base_threshold_commit.rb +11 -1
- data/lib/metronome_sdk/models/v1/alert_create_params.rb +1 -0
- data/lib/metronome_sdk/models/v1/contract_amend_params.rb +2 -189
- data/lib/metronome_sdk/models/v1/contract_create_params.rb +3 -191
- data/lib/metronome_sdk/models/v1/contract_list_seat_balances_params.rb +119 -0
- data/lib/metronome_sdk/models/v1/contract_list_seat_balances_response.rb +315 -0
- data/lib/metronome_sdk/models/v1/contracts/product_create_params.rb +31 -1
- data/lib/metronome_sdk/models/v1/contracts/product_update_params.rb +31 -1
- data/lib/metronome_sdk/models/v1/customers/customer_alert.rb +1 -0
- data/lib/metronome_sdk/models/v1/customers/invoice.rb +8 -1
- data/lib/metronome_sdk/models/v1/customers/invoice_list_params.rb +29 -1
- data/lib/metronome_sdk/models/v1/package_create_params.rb +2 -30
- data/lib/metronome_sdk/models/v1/package_list_response.rb +28 -9
- data/lib/metronome_sdk/models/v1/package_retrieve_response.rb +29 -9
- data/lib/metronome_sdk/models/v2/contract_edit_params.rb +67 -20
- data/lib/metronome_sdk/models/v2/contract_get_edit_history_response.rb +496 -15
- data/lib/metronome_sdk/resources/v1/contracts/products.rb +6 -2
- data/lib/metronome_sdk/resources/v1/contracts.rb +76 -2
- data/lib/metronome_sdk/resources/v1/customers/invoices.rb +5 -1
- data/lib/metronome_sdk/resources/v1/packages.rb +1 -3
- data/lib/metronome_sdk/version.rb +1 -1
- data/lib/metronome_sdk.rb +3 -1
- data/rbi/metronome_sdk/internal/util.rbi +8 -0
- data/rbi/metronome_sdk/models/base_threshold_commit.rbi +24 -5
- data/rbi/metronome_sdk/models/contract_v2.rbi +916 -19
- data/rbi/metronome_sdk/models/credit.rbi +139 -3
- data/rbi/metronome_sdk/models/override.rbi +9 -12
- data/rbi/metronome_sdk/models/prepaid_balance_threshold_configuration.rbi +54 -3
- data/rbi/metronome_sdk/models/prepaid_balance_threshold_configuration_v2.rbi +55 -4
- data/rbi/metronome_sdk/models/spend_threshold_configuration.rbi +54 -3
- data/rbi/metronome_sdk/models/spend_threshold_configuration_v2.rbi +58 -9
- data/rbi/metronome_sdk/models/update_base_threshold_commit.rbi +22 -4
- data/rbi/metronome_sdk/models/v1/alert_create_params.rbi +5 -0
- data/rbi/metronome_sdk/models/v1/contract_amend_params.rbi +3 -416
- data/rbi/metronome_sdk/models/v1/contract_create_params.rbi +5 -418
- data/rbi/metronome_sdk/models/v1/contract_list_seat_balances_params.rbi +179 -0
- data/rbi/metronome_sdk/models/v1/contract_list_seat_balances_response.rbi +714 -0
- data/rbi/metronome_sdk/models/v1/contracts/product_create_params.rbi +74 -0
- data/rbi/metronome_sdk/models/v1/contracts/product_update_params.rbi +74 -0
- data/rbi/metronome_sdk/models/v1/customers/customer_alert.rbi +5 -0
- data/rbi/metronome_sdk/models/v1/customers/invoice.rbi +9 -0
- data/rbi/metronome_sdk/models/v1/customers/invoice_list_params.rbi +75 -0
- data/rbi/metronome_sdk/models/v1/package_create_params.rbi +3 -76
- data/rbi/metronome_sdk/models/v1/package_list_response.rbi +72 -15
- data/rbi/metronome_sdk/models/v1/package_retrieve_response.rbi +72 -17
- data/rbi/metronome_sdk/models/v2/contract_edit_params.rbi +133 -28
- data/rbi/metronome_sdk/models/v2/contract_get_edit_history_response.rbi +1174 -145
- data/rbi/metronome_sdk/resources/v1/contracts/products.rbi +18 -0
- data/rbi/metronome_sdk/resources/v1/contracts.rbi +88 -3
- data/rbi/metronome_sdk/resources/v1/customers/invoices.rbi +7 -0
- data/rbi/metronome_sdk/resources/v1/packages.rbi +0 -3
- data/sig/metronome_sdk/internal/util.rbs +4 -0
- data/sig/metronome_sdk/models/base_threshold_commit.rbs +13 -3
- data/sig/metronome_sdk/models/contract_v2.rbs +401 -16
- data/sig/metronome_sdk/models/credit.rbs +69 -0
- data/sig/metronome_sdk/models/override.rbs +8 -10
- data/sig/metronome_sdk/models/prepaid_balance_threshold_configuration.rbs +22 -3
- data/sig/metronome_sdk/models/prepaid_balance_threshold_configuration_v2.rbs +23 -4
- data/sig/metronome_sdk/models/spend_threshold_configuration.rbs +22 -3
- data/sig/metronome_sdk/models/spend_threshold_configuration_v2.rbs +26 -7
- data/sig/metronome_sdk/models/update_base_threshold_commit.rbs +15 -2
- data/sig/metronome_sdk/models/v1/alert_create_params.rbs +3 -1
- data/sig/metronome_sdk/models/v1/contract_amend_params.rbs +3 -147
- data/sig/metronome_sdk/models/v1/contract_create_params.rbs +3 -147
- data/sig/metronome_sdk/models/v1/contract_list_seat_balances_params.rbs +96 -0
- data/sig/metronome_sdk/models/v1/contract_list_seat_balances_response.rbs +299 -0
- data/sig/metronome_sdk/models/v1/contracts/product_create_params.rbs +20 -0
- data/sig/metronome_sdk/models/v1/contracts/product_update_params.rbs +20 -0
- data/sig/metronome_sdk/models/v1/customers/customer_alert.rbs +3 -1
- data/sig/metronome_sdk/models/v1/customers/invoice.rbs +7 -0
- data/sig/metronome_sdk/models/v1/customers/invoice_list_params.rbs +29 -1
- data/sig/metronome_sdk/models/v1/package_create_params.rbs +3 -30
- data/sig/metronome_sdk/models/v1/package_list_response.rbs +33 -15
- data/sig/metronome_sdk/models/v1/package_retrieve_response.rbs +33 -15
- data/sig/metronome_sdk/models/v2/contract_edit_params.rbs +33 -10
- data/sig/metronome_sdk/models/v2/contract_get_edit_history_response.rbs +409 -19
- data/sig/metronome_sdk/resources/v1/contracts/products.rbs +2 -0
- data/sig/metronome_sdk/resources/v1/contracts.rbs +15 -0
- data/sig/metronome_sdk/resources/v1/customers/invoices.rbs +2 -0
- data/sig/metronome_sdk/resources/v1/packages.rbs +0 -1
- metadata +8 -2
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA256:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: d4d5355d04639b7153cfe94271378797fceaff008c386c001c6450f66674a584
|
|
4
|
+
data.tar.gz: 25c993147e97e4acead3048b17b7328e67b4e95274bef1893723bf806ddd9bec
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: 653c76e15fba1881dcc6e344161a61f7c0c061aba2603bdb26a3f489986c23e31d1fe77bb2134070f53333efe9efa5d37b73f206abb30b4cba33eb05f967c771
|
|
7
|
+
data.tar.gz: 3d6505e8bd6767e3873ba2d70c28bc93eac7280ae2ca126eba43a18eca5e4a113704574909e5c0a26f503204675bc407582190dd9d1f20afa91ecc98cc30def0
|
data/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,89 @@
|
|
|
1
1
|
# Changelog
|
|
2
2
|
|
|
3
|
+
## 3.6.0 (2026-05-18)
|
|
4
|
+
|
|
5
|
+
Full Changelog: [v3.5.0...v3.6.0](https://github.com/Metronome-Industries/metronome-ruby/compare/v3.5.0...v3.6.0)
|
|
6
|
+
|
|
7
|
+
### Features
|
|
8
|
+
|
|
9
|
+
* [docs] fix typo in "Create a Contract" [1] page ([1c944c1](https://github.com/Metronome-Industries/metronome-ruby/commit/1c944c186c83b405e283708850d5a608e6c21ed6))
|
|
10
|
+
* [orch-383] fix API docs for one-off payment-gated commits ([a4d2798](https://github.com/Metronome-Industries/metronome-ruby/commit/a4d27985195453b3546b5ecd8a420b4d768110db))
|
|
11
|
+
* Add alert specifiers to contract create API ([51db5ed](https://github.com/Metronome-Industries/metronome-ruby/commit/51db5ed0d8954978ac23e2ddc30a6b542a535828))
|
|
12
|
+
* add contract_id filter to list invoices endpoint ([a304fbe](https://github.com/Metronome-Industries/metronome-ruby/commit/a304fbe7fbdec29e84f6d7e00757ac8d53c4ddf2))
|
|
13
|
+
* add invoice type filter for list invoices api ([872e130](https://github.com/Metronome-Industries/metronome-ruby/commit/872e1300646c989ab9d1ae057358213651f140d9))
|
|
14
|
+
* Add list seat balances API endpoint to SDK ([b00dd28](https://github.com/Metronome-Industries/metronome-ruby/commit/b00dd2876202080710203143d27a3b592aa7333b))
|
|
15
|
+
* Add regenerated_from_invoice_id to getInvoice response ([4fcd94f](https://github.com/Metronome-Industries/metronome-ruby/commit/4fcd94f52de907beea33c5f619ee529cdf2ee295))
|
|
16
|
+
* Add sql_breakdown_granularity flag to product create/edit ([101c0ef](https://github.com/Metronome-Industries/metronome-ruby/commit/101c0efded08535d01f7d5ef67b80c3325be7e5a))
|
|
17
|
+
* added custom fields to create contract with package ([3df5eaf](https://github.com/Metronome-Industries/metronome-ruby/commit/3df5eafd29b0d030f2de6c9b1da6bd0f2d83fefd))
|
|
18
|
+
* doc updates ([a38c0ad](https://github.com/Metronome-Industries/metronome-ruby/commit/a38c0adccd0a9de33f91052cef6f8db0bfd054ba))
|
|
19
|
+
* Limit spend breakdown/seat balances to 100 vals ([019e16c](https://github.com/Metronome-Industries/metronome-ruby/commit/019e16ca2e5091d75d9674d3c1ae58e4af6c8786))
|
|
20
|
+
* Pranadreddy/launch 2486 remove dead billing anchor date field from api ([880922c](https://github.com/Metronome-Industries/metronome-ruby/commit/880922c776ce6b9026338097d22629153b06790d))
|
|
21
|
+
* support setting headers via env ([70a6689](https://github.com/Metronome-Industries/metronome-ruby/commit/70a66896bf1c85734adbcc3f90ec88e91b3b124d))
|
|
22
|
+
* Update stainless.yml to include Java configuration logic ([caadd1b](https://github.com/Metronome-Industries/metronome-ruby/commit/caadd1bcdfe6e513fa45e1ffe7ba16be4078f8e0))
|
|
23
|
+
* wip ([d85557d](https://github.com/Metronome-Industries/metronome-ruby/commit/d85557d5c8d4e42eaedeeb01d52e925cfaec2bf5))
|
|
24
|
+
|
|
25
|
+
|
|
26
|
+
### Bug Fixes
|
|
27
|
+
|
|
28
|
+
* add archived_at to Credit schema (parity with Commit) ([c4cb0de](https://github.com/Metronome-Industries/metronome-ruby/commit/c4cb0de6639d6260cd5cd4991c2bdbbca9a56308))
|
|
29
|
+
* **client:** elide content type header on requests without body ([3229b9e](https://github.com/Metronome-Industries/metronome-ruby/commit/3229b9ea9655734024eeacf899aef1559401c950))
|
|
30
|
+
|
|
31
|
+
|
|
32
|
+
### Chores
|
|
33
|
+
|
|
34
|
+
* configure new SDK language ([2318d44](https://github.com/Metronome-Industries/metronome-ruby/commit/2318d447232cd1368c1be58b004f4e56f6ec58f8))
|
|
35
|
+
* configure new SDK language ([c604e19](https://github.com/Metronome-Industries/metronome-ruby/commit/c604e191054d276f6620fe43ef76543c000703ee))
|
|
36
|
+
* configure new SDK language ([85c2a71](https://github.com/Metronome-Industries/metronome-ruby/commit/85c2a714681224c4e5b654ae2a0ffa0ff478c269))
|
|
37
|
+
* configure new SDK language ([7f6bb80](https://github.com/Metronome-Industries/metronome-ruby/commit/7f6bb80a5e0f7838849aa1fef4e255ac7a7c6d44))
|
|
38
|
+
* **internal:** more robust bootstrap script ([3f8dd59](https://github.com/Metronome-Industries/metronome-ruby/commit/3f8dd59db3d7878d6232f01d0fda804657de3e2a))
|
|
39
|
+
|
|
40
|
+
## 3.5.0 (2026-04-18)
|
|
41
|
+
|
|
42
|
+
Full Changelog: [v3.4.0...v3.5.0](https://github.com/Metronome-Industries/metronome-ruby/compare/v3.4.0...v3.5.0)
|
|
43
|
+
|
|
44
|
+
### Features
|
|
45
|
+
|
|
46
|
+
* add override created at in api responses ([87dbd21](https://github.com/Metronome-Industries/metronome-ruby/commit/87dbd21032840c620459273377db9bb272cbfd22))
|
|
47
|
+
* Add recurring_commit_ids and remove recurring_credit_ids from api ([792197c](https://github.com/Metronome-Industries/metronome-ruby/commit/792197c773eb6235d4c29745b813d950746214dd))
|
|
48
|
+
* Docs: Dd/update balance guides ([a0c43b0](https://github.com/Metronome-Industries/metronome-ruby/commit/a0c43b07ceaa54836c753c40dc31a900ead0f30c))
|
|
49
|
+
* Enable OIDC auth for npm publisher ([6db4272](https://github.com/Metronome-Industries/metronome-ruby/commit/6db427233a322a94667e5e35e0de4aa8eb17fdde))
|
|
50
|
+
* External fixes for rollover credits ([6478a14](https://github.com/Metronome-Industries/metronome-ruby/commit/6478a14a3efa407fd1738dfcd94fc57719ced31d))
|
|
51
|
+
* Fully document CreditAdd/CreditUpdate fields in API spec ([eb852a3](https://github.com/Metronome-Industries/metronome-ruby/commit/eb852a392fc610d2a7207d06884bbf2061c11954))
|
|
52
|
+
* Fully document CreditAdd/CreditUpdate fields in API spec ([f0581f3](https://github.com/Metronome-Industries/metronome-ruby/commit/f0581f37f25e052401a9662c41580bd252f42ec8))
|
|
53
|
+
* Map missing `contract_name` when returning Packages ([3eee272](https://github.com/Metronome-Industries/metronome-ruby/commit/3eee272e7797350e99f372996728453946284d16))
|
|
54
|
+
* **ORCH-1361:** add priority to threshold commit OpenAPI schemas ([6461ec2](https://github.com/Metronome-Industries/metronome-ruby/commit/6461ec2ca1efd1b9a09cf33a4c5774dad5f535d1))
|
|
55
|
+
* ORCH-1410: Add discount_configuration to POST v2/contracts/edit ([852219d](https://github.com/Metronome-Industries/metronome-ruby/commit/852219d69ee7cb5e22fdb3e9b0611c463b191f67))
|
|
56
|
+
* remove dead field, pipe day through to MRI, return day when get package ([17f2939](https://github.com/Metronome-Industries/metronome-ruby/commit/17f2939a021072c53619250274aa89278fdb20d4))
|
|
57
|
+
* Support nullable discount fraction on contract update inputs ([c67304b](https://github.com/Metronome-Industries/metronome-ruby/commit/c67304b1a4a9d5ab1761e220e36d3bd1f71e153b))
|
|
58
|
+
|
|
59
|
+
|
|
60
|
+
### Bug Fixes
|
|
61
|
+
|
|
62
|
+
* align path encoding with RFC 3986 section 3.3 ([cba23c1](https://github.com/Metronome-Industries/metronome-ruby/commit/cba23c1734d5642be93612e3d562c43ce5281567))
|
|
63
|
+
* **internal:** correct multipart form field name encoding ([7744335](https://github.com/Metronome-Industries/metronome-ruby/commit/774433578aef086d6997faccc6e48e97c7381ec8))
|
|
64
|
+
* multipart encoding for file arrays ([824320c](https://github.com/Metronome-Industries/metronome-ruby/commit/824320cdfbacbeac8650c6179280d0a71eb24b44))
|
|
65
|
+
* variable name typo ([802a290](https://github.com/Metronome-Industries/metronome-ruby/commit/802a290f7a1eb290c8aad3ec0a6c7ad9eeed20bd))
|
|
66
|
+
|
|
67
|
+
|
|
68
|
+
### Chores
|
|
69
|
+
|
|
70
|
+
* **ci:** skip lint on metadata-only changes ([f14cdaa](https://github.com/Metronome-Industries/metronome-ruby/commit/f14cdaa8a02129e73fc1b32914ae14146b56b4ad))
|
|
71
|
+
* **ci:** support opting out of skipping builds on metadata-only commits ([6f4c5bc](https://github.com/Metronome-Industries/metronome-ruby/commit/6f4c5bc8f054ccafa69ba30514c91657021e871f))
|
|
72
|
+
* **internal:** tweak CI branches ([71b11a6](https://github.com/Metronome-Industries/metronome-ruby/commit/71b11a6dba46733ffec3b0ab10d5812308972c19))
|
|
73
|
+
* **internal:** update gitignore ([dd4bfc8](https://github.com/Metronome-Industries/metronome-ruby/commit/dd4bfc8cae02b3edd68f1104a07b982a6e2c1b3b))
|
|
74
|
+
* **tests:** bump steady to v0.19.4 ([da62d02](https://github.com/Metronome-Industries/metronome-ruby/commit/da62d027d99e26ef0f961336fd08af2926365d99))
|
|
75
|
+
* **tests:** bump steady to v0.19.5 ([76ea6a0](https://github.com/Metronome-Industries/metronome-ruby/commit/76ea6a0aaf684bc2e7c691fa860c8877e1943dc0))
|
|
76
|
+
* **tests:** bump steady to v0.19.6 ([1368bba](https://github.com/Metronome-Industries/metronome-ruby/commit/1368bbac0a69aa766786a9ed78d9195c73b31d09))
|
|
77
|
+
* **tests:** bump steady to v0.19.7 ([5e94fed](https://github.com/Metronome-Industries/metronome-ruby/commit/5e94fed2cf97a1b3a7565ac18952c70b47040847))
|
|
78
|
+
* **tests:** bump steady to v0.20.1 ([069329c](https://github.com/Metronome-Industries/metronome-ruby/commit/069329ca1cc50b77a5b76a057eae32e732066697))
|
|
79
|
+
* **tests:** bump steady to v0.20.2 ([add7ae8](https://github.com/Metronome-Industries/metronome-ruby/commit/add7ae85ea63ebeacbf3cf754ef7bd48a92c701d))
|
|
80
|
+
* **tests:** bump steady to v0.22.1 ([5908006](https://github.com/Metronome-Industries/metronome-ruby/commit/5908006482ed816f9960dc00e727f05067f2d0bc))
|
|
81
|
+
|
|
82
|
+
|
|
83
|
+
### Refactors
|
|
84
|
+
|
|
85
|
+
* **tests:** switch from prism to steady ([e8f7dbc](https://github.com/Metronome-Industries/metronome-ruby/commit/e8f7dbc646afdfa31bcce4a580e863258f76dd06))
|
|
86
|
+
|
|
3
87
|
## 3.4.0 (2026-03-11)
|
|
4
88
|
|
|
5
89
|
Full Changelog: [v3.3.0...v3.4.0](https://github.com/Metronome-Industries/metronome-ruby/compare/v3.3.0...v3.4.0)
|
data/README.md
CHANGED
data/lib/metronome_sdk/client.rb
CHANGED
|
@@ -67,6 +67,19 @@ module MetronomeSDK
|
|
|
67
67
|
raise ArgumentError.new("bearer_token is required, and can be set via environ: \"METRONOME_BEARER_TOKEN\"")
|
|
68
68
|
end
|
|
69
69
|
|
|
70
|
+
headers = {}
|
|
71
|
+
custom_headers_env = ENV["METRONOME_CUSTOM_HEADERS"]
|
|
72
|
+
unless custom_headers_env.nil?
|
|
73
|
+
parsed = {}
|
|
74
|
+
custom_headers_env.split("\n").each do |line|
|
|
75
|
+
colon = line.index(":")
|
|
76
|
+
unless colon.nil?
|
|
77
|
+
parsed[line[0...colon].strip] = line[(colon + 1)..].strip
|
|
78
|
+
end
|
|
79
|
+
end
|
|
80
|
+
headers = parsed.merge(headers)
|
|
81
|
+
end
|
|
82
|
+
|
|
70
83
|
@bearer_token = bearer_token.to_s
|
|
71
84
|
@webhook_secret = webhook_secret&.to_s
|
|
72
85
|
|
|
@@ -75,7 +88,8 @@ module MetronomeSDK
|
|
|
75
88
|
timeout: timeout,
|
|
76
89
|
max_retries: max_retries,
|
|
77
90
|
initial_retry_delay: initial_retry_delay,
|
|
78
|
-
max_retry_delay: max_retry_delay
|
|
91
|
+
max_retry_delay: max_retry_delay,
|
|
92
|
+
headers: headers
|
|
79
93
|
)
|
|
80
94
|
|
|
81
95
|
@v2 = MetronomeSDK::Resources::V2.new(client: self)
|
|
@@ -306,6 +306,8 @@ module MetronomeSDK
|
|
|
306
306
|
MetronomeSDK::Internal::Util.deep_merge(*[req[:body], opts[:extra_body]].compact)
|
|
307
307
|
end
|
|
308
308
|
|
|
309
|
+
headers.delete("content-type") if body.nil?
|
|
310
|
+
|
|
309
311
|
url = MetronomeSDK::Internal::Util.join_parsed_uri(
|
|
310
312
|
@base_url_components,
|
|
311
313
|
{**req, path: path, query: query}
|
|
@@ -157,7 +157,7 @@ module MetronomeSDK
|
|
|
157
157
|
in Hash | nil => coerced
|
|
158
158
|
coerced
|
|
159
159
|
else
|
|
160
|
-
message = "Expected a #{Hash} or #{MetronomeSDK::Internal::Type::BaseModel}, got #{
|
|
160
|
+
message = "Expected a #{Hash} or #{MetronomeSDK::Internal::Type::BaseModel}, got #{input.inspect}"
|
|
161
161
|
raise ArgumentError.new(message)
|
|
162
162
|
end
|
|
163
163
|
end
|
|
@@ -237,6 +237,11 @@ module MetronomeSDK
|
|
|
237
237
|
end
|
|
238
238
|
end
|
|
239
239
|
|
|
240
|
+
# @type [Regexp]
|
|
241
|
+
#
|
|
242
|
+
# https://www.rfc-editor.org/rfc/rfc3986.html#section-3.3
|
|
243
|
+
RFC_3986_NOT_PCHARS = /[^A-Za-z0-9\-._~!$&'()*+,;=:@]+/
|
|
244
|
+
|
|
240
245
|
class << self
|
|
241
246
|
# @api private
|
|
242
247
|
#
|
|
@@ -247,6 +252,15 @@ module MetronomeSDK
|
|
|
247
252
|
"#{uri.scheme}://#{uri.host}#{":#{uri.port}" unless uri.port == uri.default_port}"
|
|
248
253
|
end
|
|
249
254
|
|
|
255
|
+
# @api private
|
|
256
|
+
#
|
|
257
|
+
# @param path [String, Integer]
|
|
258
|
+
#
|
|
259
|
+
# @return [String]
|
|
260
|
+
def encode_path(path)
|
|
261
|
+
path.to_s.gsub(MetronomeSDK::Internal::Util::RFC_3986_NOT_PCHARS) { ERB::Util.url_encode(_1) }
|
|
262
|
+
end
|
|
263
|
+
|
|
250
264
|
# @api private
|
|
251
265
|
#
|
|
252
266
|
# @param path [String, Array<String>]
|
|
@@ -259,7 +273,7 @@ module MetronomeSDK
|
|
|
259
273
|
in []
|
|
260
274
|
""
|
|
261
275
|
in [String => p, *interpolations]
|
|
262
|
-
encoded = interpolations.map {
|
|
276
|
+
encoded = interpolations.map { encode_path(_1) }
|
|
263
277
|
format(p, *encoded)
|
|
264
278
|
end
|
|
265
279
|
end
|
|
@@ -571,16 +585,15 @@ module MetronomeSDK
|
|
|
571
585
|
y << "Content-Disposition: form-data"
|
|
572
586
|
|
|
573
587
|
unless key.nil?
|
|
574
|
-
|
|
575
|
-
y << "; name=\"#{name}\""
|
|
588
|
+
y << "; name=\"#{key}\""
|
|
576
589
|
end
|
|
577
590
|
|
|
578
591
|
case val
|
|
579
592
|
in MetronomeSDK::FilePart unless val.filename.nil?
|
|
580
|
-
filename =
|
|
593
|
+
filename = encode_path(val.filename)
|
|
581
594
|
y << "; filename=\"#{filename}\""
|
|
582
595
|
in Pathname | IO
|
|
583
|
-
filename =
|
|
596
|
+
filename = encode_path(::File.basename(val.to_path))
|
|
584
597
|
y << "; filename=\"#{filename}\""
|
|
585
598
|
else
|
|
586
599
|
end
|
|
@@ -597,6 +610,7 @@ module MetronomeSDK
|
|
|
597
610
|
#
|
|
598
611
|
# @return [Array(String, Enumerable<String>)]
|
|
599
612
|
private def encode_multipart_streaming(body)
|
|
613
|
+
# rubocop:disable Style/CaseEquality
|
|
600
614
|
# RFC 1521 Section 7.2.1 says we should have 70 char maximum for boundary length
|
|
601
615
|
boundary = SecureRandom.urlsafe_base64(46)
|
|
602
616
|
|
|
@@ -606,7 +620,7 @@ module MetronomeSDK
|
|
|
606
620
|
in Hash
|
|
607
621
|
body.each do |key, val|
|
|
608
622
|
case val
|
|
609
|
-
in Array if val.all? { primitive?(_1) }
|
|
623
|
+
in Array if val.all? { primitive?(_1) || MetronomeSDK::Internal::Type::FileInput === _1 }
|
|
610
624
|
val.each do |v|
|
|
611
625
|
write_multipart_chunk(y, boundary: boundary, key: key, val: v, closing: closing)
|
|
612
626
|
end
|
|
@@ -622,6 +636,7 @@ module MetronomeSDK
|
|
|
622
636
|
|
|
623
637
|
fused_io = fused_enum(strio) { closing.each(&:call) }
|
|
624
638
|
[boundary, fused_io]
|
|
639
|
+
# rubocop:enable Style/CaseEquality
|
|
625
640
|
end
|
|
626
641
|
|
|
627
642
|
# @api private
|
|
@@ -22,7 +22,14 @@ module MetronomeSDK
|
|
|
22
22
|
# @return [String, nil]
|
|
23
23
|
optional :name, String
|
|
24
24
|
|
|
25
|
-
# @!
|
|
25
|
+
# @!attribute priority
|
|
26
|
+
# The priority of the commit, used to determine drawdown order. Lower priority
|
|
27
|
+
# commits are consumed first. Defaults to 100 if not specified.
|
|
28
|
+
#
|
|
29
|
+
# @return [Float, nil]
|
|
30
|
+
optional :priority, Float
|
|
31
|
+
|
|
32
|
+
# @!method initialize(product_id:, description: nil, name: nil, priority: nil)
|
|
26
33
|
# Some parameter documentations has been truncated, see
|
|
27
34
|
# {MetronomeSDK::Models::BaseThresholdCommit} for more details.
|
|
28
35
|
#
|
|
@@ -31,6 +38,8 @@ module MetronomeSDK
|
|
|
31
38
|
# @param description [String]
|
|
32
39
|
#
|
|
33
40
|
# @param name [String] Specify the name of the line item for the threshold charge. If left blank, it wi
|
|
41
|
+
#
|
|
42
|
+
# @param priority [Float] The priority of the commit, used to determine drawdown order. Lower priority com
|
|
34
43
|
end
|
|
35
44
|
end
|
|
36
45
|
end
|