terminal-shop 1.7.0 → 2.0.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/README.md +17 -1
- data/lib/terminal-shop/base_client.rb +47 -56
- data/lib/terminal-shop/base_model.rb +300 -352
- data/lib/terminal-shop/base_page.rb +30 -31
- data/lib/terminal-shop/client.rb +2 -3
- data/lib/terminal-shop/errors.rb +12 -17
- data/lib/terminal-shop/extern.rb +1 -4
- data/lib/terminal-shop/models/product.rb +7 -3
- data/lib/terminal-shop/models/region.rb +7 -3
- data/lib/terminal-shop/models/subscription.rb +7 -3
- data/lib/terminal-shop/pooled_net_requester.rb +30 -21
- data/lib/terminal-shop/request_options.rb +5 -12
- data/lib/terminal-shop/resources/address.rb +0 -5
- data/lib/terminal-shop/resources/app.rb +0 -5
- data/lib/terminal-shop/resources/card.rb +0 -6
- data/lib/terminal-shop/resources/cart.rb +0 -7
- data/lib/terminal-shop/resources/email.rb +0 -2
- data/lib/terminal-shop/resources/order.rb +0 -4
- data/lib/terminal-shop/resources/product.rb +0 -3
- data/lib/terminal-shop/resources/profile.rb +0 -3
- data/lib/terminal-shop/resources/subscription.rb +0 -5
- data/lib/terminal-shop/resources/token.rb +0 -5
- data/lib/terminal-shop/resources/view.rb +0 -2
- data/lib/terminal-shop/util.rb +59 -77
- data/lib/terminal-shop/version.rb +1 -1
- data/lib/terminal-shop.rb +16 -0
- data/manifest.yaml +1 -0
- data/rbi/lib/terminal-shop/base_client.rbi +63 -41
- data/rbi/lib/terminal-shop/base_model.rbi +278 -129
- data/rbi/lib/terminal-shop/base_page.rbi +1 -4
- data/rbi/lib/terminal-shop/client.rbi +29 -30
- data/rbi/lib/terminal-shop/errors.rbi +12 -14
- data/rbi/lib/terminal-shop/extern.rbi +1 -1
- data/rbi/lib/terminal-shop/models/address.rbi +25 -51
- data/rbi/lib/terminal-shop/models/address_create_params.rbi +23 -46
- data/rbi/lib/terminal-shop/models/address_create_response.rbi +2 -6
- data/rbi/lib/terminal-shop/models/address_delete_params.rbi +1 -1
- data/rbi/lib/terminal-shop/models/address_delete_response.rbi +1 -6
- data/rbi/lib/terminal-shop/models/address_get_params.rbi +1 -1
- data/rbi/lib/terminal-shop/models/address_get_response.rbi +8 -6
- data/rbi/lib/terminal-shop/models/address_list_params.rbi +1 -1
- data/rbi/lib/terminal-shop/models/address_list_response.rbi +5 -6
- data/rbi/lib/terminal-shop/models/app.rbi +9 -24
- data/rbi/lib/terminal-shop/models/app_create_params.rbi +3 -13
- data/rbi/lib/terminal-shop/models/app_create_response.rbi +10 -20
- data/rbi/lib/terminal-shop/models/app_delete_params.rbi +1 -1
- data/rbi/lib/terminal-shop/models/app_delete_response.rbi +1 -6
- data/rbi/lib/terminal-shop/models/app_get_params.rbi +1 -1
- data/rbi/lib/terminal-shop/models/app_get_response.rbi +5 -6
- data/rbi/lib/terminal-shop/models/app_list_params.rbi +1 -1
- data/rbi/lib/terminal-shop/models/app_list_response.rbi +5 -6
- data/rbi/lib/terminal-shop/models/card.rbi +22 -36
- data/rbi/lib/terminal-shop/models/card_collect_params.rbi +1 -1
- data/rbi/lib/terminal-shop/models/card_collect_response.rbi +11 -14
- data/rbi/lib/terminal-shop/models/card_create_params.rbi +4 -7
- data/rbi/lib/terminal-shop/models/card_create_response.rbi +2 -6
- data/rbi/lib/terminal-shop/models/card_delete_params.rbi +1 -1
- data/rbi/lib/terminal-shop/models/card_delete_response.rbi +1 -6
- data/rbi/lib/terminal-shop/models/card_get_params.rbi +1 -1
- data/rbi/lib/terminal-shop/models/card_get_response.rbi +5 -6
- data/rbi/lib/terminal-shop/models/card_list_params.rbi +1 -1
- data/rbi/lib/terminal-shop/models/card_list_response.rbi +5 -6
- data/rbi/lib/terminal-shop/models/cart.rbi +53 -88
- data/rbi/lib/terminal-shop/models/cart_clear_params.rbi +1 -1
- data/rbi/lib/terminal-shop/models/cart_clear_response.rbi +1 -6
- data/rbi/lib/terminal-shop/models/cart_convert_params.rbi +1 -1
- data/rbi/lib/terminal-shop/models/cart_convert_response.rbi +5 -6
- data/rbi/lib/terminal-shop/models/cart_get_params.rbi +1 -1
- data/rbi/lib/terminal-shop/models/cart_get_response.rbi +5 -6
- data/rbi/lib/terminal-shop/models/cart_set_address_params.rbi +3 -7
- data/rbi/lib/terminal-shop/models/cart_set_address_response.rbi +1 -6
- data/rbi/lib/terminal-shop/models/cart_set_card_params.rbi +3 -7
- data/rbi/lib/terminal-shop/models/cart_set_card_response.rbi +1 -6
- data/rbi/lib/terminal-shop/models/cart_set_item_params.rbi +5 -13
- data/rbi/lib/terminal-shop/models/cart_set_item_response.rbi +5 -6
- data/rbi/lib/terminal-shop/models/email_create_params.rbi +3 -7
- data/rbi/lib/terminal-shop/models/email_create_response.rbi +1 -6
- data/rbi/lib/terminal-shop/models/order.rbi +80 -139
- data/rbi/lib/terminal-shop/models/order_create_params.rbi +7 -19
- data/rbi/lib/terminal-shop/models/order_create_response.rbi +2 -6
- data/rbi/lib/terminal-shop/models/order_get_params.rbi +1 -1
- data/rbi/lib/terminal-shop/models/order_get_response.rbi +5 -6
- data/rbi/lib/terminal-shop/models/order_list_params.rbi +1 -1
- data/rbi/lib/terminal-shop/models/order_list_response.rbi +5 -6
- data/rbi/lib/terminal-shop/models/product.rbi +52 -80
- data/rbi/lib/terminal-shop/models/product_get_params.rbi +1 -1
- data/rbi/lib/terminal-shop/models/product_get_response.rbi +8 -6
- data/rbi/lib/terminal-shop/models/product_list_params.rbi +1 -1
- data/rbi/lib/terminal-shop/models/product_list_response.rbi +5 -6
- data/rbi/lib/terminal-shop/models/product_variant.rbi +7 -18
- data/rbi/lib/terminal-shop/models/profile.rbi +20 -36
- data/rbi/lib/terminal-shop/models/profile_me_params.rbi +1 -1
- data/rbi/lib/terminal-shop/models/profile_me_response.rbi +8 -6
- data/rbi/lib/terminal-shop/models/profile_update_params.rbi +3 -13
- data/rbi/lib/terminal-shop/models/profile_update_response.rbi +8 -6
- data/rbi/lib/terminal-shop/models/region.rbi +10 -8
- data/rbi/lib/terminal-shop/models/subscription.rbi +35 -75
- data/rbi/lib/terminal-shop/models/subscription_create_params.rbi +1 -1
- data/rbi/lib/terminal-shop/models/subscription_create_response.rbi +1 -6
- data/rbi/lib/terminal-shop/models/subscription_delete_params.rbi +1 -1
- data/rbi/lib/terminal-shop/models/subscription_delete_response.rbi +1 -6
- data/rbi/lib/terminal-shop/models/subscription_get_params.rbi +1 -1
- data/rbi/lib/terminal-shop/models/subscription_get_response.rbi +8 -6
- data/rbi/lib/terminal-shop/models/subscription_list_params.rbi +1 -1
- data/rbi/lib/terminal-shop/models/subscription_list_response.rbi +4 -8
- data/rbi/lib/terminal-shop/models/token.rbi +8 -18
- data/rbi/lib/terminal-shop/models/token_create_params.rbi +1 -1
- data/rbi/lib/terminal-shop/models/token_create_response.rbi +11 -20
- data/rbi/lib/terminal-shop/models/token_delete_params.rbi +1 -1
- data/rbi/lib/terminal-shop/models/token_delete_response.rbi +1 -6
- data/rbi/lib/terminal-shop/models/token_get_params.rbi +1 -1
- data/rbi/lib/terminal-shop/models/token_get_response.rbi +6 -6
- data/rbi/lib/terminal-shop/models/token_list_params.rbi +1 -1
- data/rbi/lib/terminal-shop/models/token_list_response.rbi +5 -6
- data/rbi/lib/terminal-shop/models/view_init_params.rbi +1 -1
- data/rbi/lib/terminal-shop/models/view_init_response.rbi +37 -81
- data/rbi/lib/terminal-shop/pooled_net_requester.rbi +24 -6
- data/rbi/lib/terminal-shop/request_options.rbi +32 -57
- data/rbi/lib/terminal-shop/resources/address.rbi +26 -6
- data/rbi/lib/terminal-shop/resources/app.rbi +18 -6
- data/rbi/lib/terminal-shop/resources/card.rbi +27 -8
- data/rbi/lib/terminal-shop/resources/cart.rbi +29 -9
- data/rbi/lib/terminal-shop/resources/email.rbi +7 -2
- data/rbi/lib/terminal-shop/resources/order.rbi +20 -5
- data/rbi/lib/terminal-shop/resources/product.rbi +9 -3
- data/rbi/lib/terminal-shop/resources/profile.rbi +4 -2
- data/rbi/lib/terminal-shop/resources/subscription.rbi +26 -6
- data/rbi/lib/terminal-shop/resources/token.rbi +18 -6
- data/rbi/lib/terminal-shop/resources/view.rbi +3 -1
- data/rbi/lib/terminal-shop/util.rbi +78 -20
- data/rbi/lib/terminal-shop/version.rbi +1 -1
- data/sig/terminal-shop/base_client.rbs +20 -15
- data/sig/terminal-shop/base_model.rbs +36 -18
- data/sig/terminal-shop/client.rbs +8 -8
- data/sig/terminal-shop/errors.rbs +21 -21
- data/sig/terminal-shop/models/address.rbs +11 -15
- data/sig/terminal-shop/models/address_create_params.rbs +11 -16
- data/sig/terminal-shop/models/address_create_response.rbs +1 -6
- data/sig/terminal-shop/models/address_delete_params.rbs +1 -6
- data/sig/terminal-shop/models/address_delete_response.rbs +1 -6
- data/sig/terminal-shop/models/address_get_params.rbs +1 -6
- data/sig/terminal-shop/models/address_get_response.rbs +1 -6
- data/sig/terminal-shop/models/address_list_params.rbs +1 -6
- data/sig/terminal-shop/models/address_list_response.rbs +1 -6
- data/sig/terminal-shop/models/app.rbs +6 -5
- data/sig/terminal-shop/models/app_create_params.rbs +5 -10
- data/sig/terminal-shop/models/app_create_response.rbs +4 -12
- data/sig/terminal-shop/models/app_delete_params.rbs +1 -6
- data/sig/terminal-shop/models/app_delete_response.rbs +1 -6
- data/sig/terminal-shop/models/app_get_params.rbs +1 -5
- data/sig/terminal-shop/models/app_get_response.rbs +1 -5
- data/sig/terminal-shop/models/app_list_params.rbs +1 -5
- data/sig/terminal-shop/models/app_list_response.rbs +1 -6
- data/sig/terminal-shop/models/card.rbs +7 -16
- data/sig/terminal-shop/models/card_collect_params.rbs +1 -6
- data/sig/terminal-shop/models/card_collect_response.rbs +4 -12
- data/sig/terminal-shop/models/card_create_params.rbs +4 -6
- data/sig/terminal-shop/models/card_create_response.rbs +1 -6
- data/sig/terminal-shop/models/card_delete_params.rbs +1 -6
- data/sig/terminal-shop/models/card_delete_response.rbs +1 -6
- data/sig/terminal-shop/models/card_get_params.rbs +1 -5
- data/sig/terminal-shop/models/card_get_response.rbs +1 -6
- data/sig/terminal-shop/models/card_list_params.rbs +1 -5
- data/sig/terminal-shop/models/card_list_response.rbs +1 -6
- data/sig/terminal-shop/models/cart.rbs +20 -34
- data/sig/terminal-shop/models/cart_clear_params.rbs +1 -6
- data/sig/terminal-shop/models/cart_clear_response.rbs +1 -6
- data/sig/terminal-shop/models/cart_convert_params.rbs +1 -6
- data/sig/terminal-shop/models/cart_convert_response.rbs +1 -6
- data/sig/terminal-shop/models/cart_get_params.rbs +1 -5
- data/sig/terminal-shop/models/cart_get_response.rbs +1 -6
- data/sig/terminal-shop/models/cart_set_address_params.rbs +4 -9
- data/sig/terminal-shop/models/cart_set_address_response.rbs +1 -6
- data/sig/terminal-shop/models/cart_set_card_params.rbs +4 -6
- data/sig/terminal-shop/models/cart_set_card_response.rbs +1 -6
- data/sig/terminal-shop/models/cart_set_item_params.rbs +5 -10
- data/sig/terminal-shop/models/cart_set_item_response.rbs +1 -6
- data/sig/terminal-shop/models/email_create_params.rbs +4 -6
- data/sig/terminal-shop/models/email_create_response.rbs +1 -6
- data/sig/terminal-shop/models/order.rbs +31 -50
- data/sig/terminal-shop/models/order_create_params.rbs +6 -11
- data/sig/terminal-shop/models/order_create_response.rbs +1 -6
- data/sig/terminal-shop/models/order_get_params.rbs +1 -5
- data/sig/terminal-shop/models/order_get_response.rbs +1 -6
- data/sig/terminal-shop/models/order_list_params.rbs +1 -6
- data/sig/terminal-shop/models/order_list_response.rbs +1 -6
- data/sig/terminal-shop/models/product.rbs +20 -27
- data/sig/terminal-shop/models/product_get_params.rbs +1 -6
- data/sig/terminal-shop/models/product_get_response.rbs +1 -6
- data/sig/terminal-shop/models/product_list_params.rbs +1 -6
- data/sig/terminal-shop/models/product_list_response.rbs +1 -6
- data/sig/terminal-shop/models/product_variant.rbs +1 -5
- data/sig/terminal-shop/models/profile.rbs +8 -17
- data/sig/terminal-shop/models/profile_me_params.rbs +1 -6
- data/sig/terminal-shop/models/profile_me_response.rbs +1 -6
- data/sig/terminal-shop/models/profile_update_params.rbs +5 -10
- data/sig/terminal-shop/models/profile_update_response.rbs +1 -6
- data/sig/terminal-shop/models/region.rbs +4 -2
- data/sig/terminal-shop/models/subscription.rbs +15 -27
- data/sig/terminal-shop/models/subscription_create_params.rbs +1 -6
- data/sig/terminal-shop/models/subscription_create_response.rbs +1 -6
- data/sig/terminal-shop/models/subscription_delete_params.rbs +1 -6
- data/sig/terminal-shop/models/subscription_delete_response.rbs +1 -6
- data/sig/terminal-shop/models/subscription_get_params.rbs +1 -6
- data/sig/terminal-shop/models/subscription_get_response.rbs +1 -6
- data/sig/terminal-shop/models/subscription_list_params.rbs +1 -6
- data/sig/terminal-shop/models/subscription_list_response.rbs +3 -6
- data/sig/terminal-shop/models/token.rbs +1 -5
- data/sig/terminal-shop/models/token_create_params.rbs +1 -6
- data/sig/terminal-shop/models/token_create_response.rbs +4 -12
- data/sig/terminal-shop/models/token_delete_params.rbs +1 -6
- data/sig/terminal-shop/models/token_delete_response.rbs +1 -6
- data/sig/terminal-shop/models/token_get_params.rbs +1 -5
- data/sig/terminal-shop/models/token_get_response.rbs +1 -6
- data/sig/terminal-shop/models/token_list_params.rbs +1 -6
- data/sig/terminal-shop/models/token_list_response.rbs +1 -6
- data/sig/terminal-shop/models/view_init_params.rbs +1 -5
- data/sig/terminal-shop/models/view_init_response.rbs +15 -23
- data/sig/terminal-shop/pooled_net_requester.rbs +10 -3
- data/sig/terminal-shop/request_options.rbs +2 -2
- data/sig/terminal-shop/resources/address.rbs +22 -41
- data/sig/terminal-shop/resources/app.rbs +16 -34
- data/sig/terminal-shop/resources/card.rbs +18 -40
- data/sig/terminal-shop/resources/cart.rbs +22 -47
- data/sig/terminal-shop/resources/email.rbs +4 -8
- data/sig/terminal-shop/resources/order.rbs +13 -26
- data/sig/terminal-shop/resources/product.rbs +7 -16
- data/sig/terminal-shop/resources/profile.rbs +8 -16
- data/sig/terminal-shop/resources/subscription.rbs +21 -43
- data/sig/terminal-shop/resources/token.rbs +14 -32
- data/sig/terminal-shop/resources/view.rbs +3 -7
- data/sig/terminal-shop/util.rbs +9 -9
- data/sig/terminal-shop/version.rbs +1 -1
- metadata +4 -4
@@ -1,60 +1,59 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
|
3
3
|
module TerminalShop
|
4
|
-
# @private
|
5
|
-
#
|
6
|
-
# @abstract
|
7
|
-
#
|
8
4
|
# @example
|
9
|
-
#
|
10
|
-
#
|
11
|
-
#
|
12
|
-
# end
|
13
|
-
# ```
|
5
|
+
# if page.has_next?
|
6
|
+
# page = page.next_page
|
7
|
+
# end
|
14
8
|
#
|
15
9
|
# @example
|
16
|
-
#
|
17
|
-
#
|
18
|
-
#
|
19
|
-
# end
|
20
|
-
# ```
|
10
|
+
# page.auto_paging_each do |product|
|
11
|
+
# puts(product)
|
12
|
+
# end
|
21
13
|
#
|
22
14
|
# @example
|
23
|
-
#
|
24
|
-
#
|
15
|
+
# products =
|
16
|
+
# page
|
17
|
+
# .to_enum
|
18
|
+
# .lazy
|
19
|
+
# .select { _1.object_id.even? }
|
20
|
+
# .map(&:itself)
|
21
|
+
# .take(2)
|
22
|
+
# .to_a
|
25
23
|
#
|
26
|
-
#
|
27
|
-
# ```
|
24
|
+
# products => Array
|
28
25
|
module BasePage
|
26
|
+
# rubocop:disable Lint/UnusedMethodArgument
|
27
|
+
|
29
28
|
# @return [Boolean]
|
30
|
-
#
|
31
29
|
def next_page? = (raise NotImplementedError)
|
32
30
|
|
33
31
|
# @raise [TerminalShop::APIError]
|
34
32
|
# @return [TerminalShop::BasePage]
|
35
|
-
#
|
36
33
|
def next_page = (raise NotImplementedError)
|
37
34
|
|
38
35
|
# @param blk [Proc]
|
39
36
|
#
|
40
37
|
# @return [void]
|
41
|
-
#
|
42
38
|
def auto_paging_each(&) = (raise NotImplementedError)
|
43
39
|
|
44
40
|
# @return [Enumerable]
|
45
|
-
#
|
46
41
|
def to_enum = super(:auto_paging_each)
|
47
42
|
|
48
43
|
alias_method :enum_for, :to_enum
|
49
44
|
|
50
|
-
#
|
51
|
-
#
|
52
|
-
#
|
53
|
-
#
|
54
|
-
#
|
55
|
-
#
|
56
|
-
|
57
|
-
|
58
|
-
|
45
|
+
# @api private
|
46
|
+
#
|
47
|
+
# @param client [TerminalShop::BaseClient]
|
48
|
+
# @param req [Hash{Symbol=>Object}]
|
49
|
+
# @param headers [Hash{String=>String}, Net::HTTPHeader]
|
50
|
+
# @param page_data [Object]
|
51
|
+
def initialize(client:, req:, headers:, page_data:)
|
52
|
+
@client = client
|
53
|
+
@req = req
|
54
|
+
super()
|
55
|
+
end
|
56
|
+
|
57
|
+
# rubocop:enable Lint/UnusedMethodArgument
|
59
58
|
end
|
60
59
|
end
|
data/lib/terminal-shop/client.rb
CHANGED
@@ -16,6 +16,7 @@ module TerminalShop
|
|
16
16
|
DEFAULT_MAX_RETRY_DELAY = 8.0
|
17
17
|
|
18
18
|
# rubocop:disable Style/MutableConstant
|
19
|
+
# @type [Hash{Symbol=>String}]
|
19
20
|
ENVIRONMENTS = {production: "https://api.terminal.shop/", dev: "https://api.dev.terminal.shop/"}
|
20
21
|
# rubocop:enable Style/MutableConstant
|
21
22
|
|
@@ -58,10 +59,9 @@ module TerminalShop
|
|
58
59
|
# @return [TerminalShop::Resources::View]
|
59
60
|
attr_reader :view
|
60
61
|
|
61
|
-
# @private
|
62
|
+
# @api private
|
62
63
|
#
|
63
64
|
# @return [Hash{String=>String}]
|
64
|
-
#
|
65
65
|
private def auth_headers
|
66
66
|
return {} if @bearer_token.nil?
|
67
67
|
|
@@ -90,7 +90,6 @@ module TerminalShop
|
|
90
90
|
# @param initial_retry_delay [Float]
|
91
91
|
#
|
92
92
|
# @param max_retry_delay [Float]
|
93
|
-
#
|
94
93
|
def initialize(
|
95
94
|
environment: nil,
|
96
95
|
base_url: nil,
|
data/lib/terminal-shop/errors.rb
CHANGED
@@ -4,7 +4,7 @@ module TerminalShop
|
|
4
4
|
class Error < StandardError
|
5
5
|
# @!parse
|
6
6
|
# # @return [StandardError, nil]
|
7
|
-
#
|
7
|
+
# attr_accessor :cause
|
8
8
|
end
|
9
9
|
|
10
10
|
class ConversionError < TerminalShop::Error
|
@@ -12,15 +12,15 @@ module TerminalShop
|
|
12
12
|
|
13
13
|
class APIError < TerminalShop::Error
|
14
14
|
# @return [URI::Generic]
|
15
|
-
|
15
|
+
attr_accessor :url
|
16
16
|
|
17
17
|
# @return [Integer, nil]
|
18
|
-
|
18
|
+
attr_accessor :status
|
19
19
|
|
20
20
|
# @return [Object, nil]
|
21
|
-
|
21
|
+
attr_accessor :body
|
22
22
|
|
23
|
-
# @private
|
23
|
+
# @api private
|
24
24
|
#
|
25
25
|
# @param url [URI::Generic]
|
26
26
|
# @param status [Integer, nil]
|
@@ -28,7 +28,6 @@ module TerminalShop
|
|
28
28
|
# @param request [nil]
|
29
29
|
# @param response [nil]
|
30
30
|
# @param message [String, nil]
|
31
|
-
#
|
32
31
|
def initialize(url:, status: nil, body: nil, request: nil, response: nil, message: nil)
|
33
32
|
@url = url
|
34
33
|
@status = status
|
@@ -42,13 +41,13 @@ module TerminalShop
|
|
42
41
|
class APIConnectionError < TerminalShop::APIError
|
43
42
|
# @!parse
|
44
43
|
# # @return [nil]
|
45
|
-
#
|
44
|
+
# attr_accessor :status
|
46
45
|
|
47
46
|
# @!parse
|
48
47
|
# # @return [nil]
|
49
|
-
#
|
48
|
+
# attr_accessor :body
|
50
49
|
|
51
|
-
# @private
|
50
|
+
# @api private
|
52
51
|
#
|
53
52
|
# @param url [URI::Generic]
|
54
53
|
# @param status [nil]
|
@@ -56,7 +55,6 @@ module TerminalShop
|
|
56
55
|
# @param request [nil]
|
57
56
|
# @param response [nil]
|
58
57
|
# @param message [String, nil]
|
59
|
-
#
|
60
58
|
def initialize(
|
61
59
|
url:,
|
62
60
|
status: nil,
|
@@ -70,7 +68,7 @@ module TerminalShop
|
|
70
68
|
end
|
71
69
|
|
72
70
|
class APITimeoutError < TerminalShop::APIConnectionError
|
73
|
-
# @private
|
71
|
+
# @api private
|
74
72
|
#
|
75
73
|
# @param url [URI::Generic]
|
76
74
|
# @param status [nil]
|
@@ -78,7 +76,6 @@ module TerminalShop
|
|
78
76
|
# @param request [nil]
|
79
77
|
# @param response [nil]
|
80
78
|
# @param message [String, nil]
|
81
|
-
#
|
82
79
|
def initialize(
|
83
80
|
url:,
|
84
81
|
status: nil,
|
@@ -92,7 +89,7 @@ module TerminalShop
|
|
92
89
|
end
|
93
90
|
|
94
91
|
class APIStatusError < TerminalShop::APIError
|
95
|
-
# @private
|
92
|
+
# @api private
|
96
93
|
#
|
97
94
|
# @param url [URI::Generic]
|
98
95
|
# @param status [Integer]
|
@@ -102,7 +99,6 @@ module TerminalShop
|
|
102
99
|
# @param message [String, nil]
|
103
100
|
#
|
104
101
|
# @return [TerminalShop::APIStatusError]
|
105
|
-
#
|
106
102
|
def self.for(url:, status:, body:, request:, response:, message: nil)
|
107
103
|
kwargs = {url: url, status: status, body: body, request: request, response: response, message: message}
|
108
104
|
|
@@ -130,9 +126,9 @@ module TerminalShop
|
|
130
126
|
|
131
127
|
# @!parse
|
132
128
|
# # @return [Integer]
|
133
|
-
#
|
129
|
+
# attr_accessor :status
|
134
130
|
|
135
|
-
# @private
|
131
|
+
# @api private
|
136
132
|
#
|
137
133
|
# @param url [URI::Generic]
|
138
134
|
# @param status [Integer]
|
@@ -140,7 +136,6 @@ module TerminalShop
|
|
140
136
|
# @param request [nil]
|
141
137
|
# @param response [nil]
|
142
138
|
# @param message [String, nil]
|
143
|
-
#
|
144
139
|
def initialize(url:, status:, body:, request:, response:, message: nil)
|
145
140
|
message ||= {url: url.to_s, status: status, body: body}
|
146
141
|
super(
|
data/lib/terminal-shop/extern.rb
CHANGED
@@ -72,14 +72,18 @@ module TerminalShop
|
|
72
72
|
|
73
73
|
# def initialize: (Hash | TerminalShop::BaseModel) -> void
|
74
74
|
|
75
|
-
# @abstract
|
76
|
-
#
|
77
75
|
# Whether the product must be or can be subscribed to.
|
78
|
-
|
76
|
+
module Subscription
|
77
|
+
extend TerminalShop::Enum
|
78
|
+
|
79
79
|
ALLOWED = :allowed
|
80
80
|
REQUIRED = :required
|
81
81
|
|
82
82
|
finalize!
|
83
|
+
|
84
|
+
# @!parse
|
85
|
+
# # @return [Array<Symbol>]
|
86
|
+
# def self.values; end
|
83
87
|
end
|
84
88
|
|
85
89
|
class Tags < TerminalShop::BaseModel
|
@@ -2,14 +2,18 @@
|
|
2
2
|
|
3
3
|
module TerminalShop
|
4
4
|
module Models
|
5
|
-
# @abstract
|
6
|
-
#
|
7
5
|
# A Terminal shop user's region.
|
8
|
-
|
6
|
+
module Region
|
7
|
+
extend TerminalShop::Enum
|
8
|
+
|
9
9
|
EU = :eu
|
10
10
|
NA = :na
|
11
11
|
|
12
12
|
finalize!
|
13
|
+
|
14
|
+
# @!parse
|
15
|
+
# # @return [Array<Symbol>]
|
16
|
+
# def self.values; end
|
13
17
|
end
|
14
18
|
end
|
15
19
|
end
|
@@ -68,10 +68,10 @@ module TerminalShop
|
|
68
68
|
|
69
69
|
# def initialize: (Hash | TerminalShop::BaseModel) -> void
|
70
70
|
|
71
|
-
# @abstract
|
72
|
-
#
|
73
71
|
# Schedule of the subscription.
|
74
|
-
|
72
|
+
module Schedule
|
73
|
+
extend TerminalShop::Union
|
74
|
+
|
75
75
|
variant -> { TerminalShop::Models::SubscriptionAPI::Schedule::Fixed }
|
76
76
|
|
77
77
|
variant -> { TerminalShop::Models::SubscriptionAPI::Schedule::Weekly }
|
@@ -109,6 +109,10 @@ module TerminalShop
|
|
109
109
|
|
110
110
|
# def initialize: (Hash | TerminalShop::BaseModel) -> void
|
111
111
|
end
|
112
|
+
|
113
|
+
# @!parse
|
114
|
+
# # @return [Array(TerminalShop::Models::SubscriptionAPI::Schedule::Fixed, TerminalShop::Models::SubscriptionAPI::Schedule::Weekly)]
|
115
|
+
# def self.variants; end
|
112
116
|
end
|
113
117
|
end
|
114
118
|
end
|
@@ -1,16 +1,18 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
|
3
3
|
module TerminalShop
|
4
|
-
# @private
|
5
|
-
#
|
4
|
+
# @api private
|
6
5
|
class PooledNetRequester
|
6
|
+
# from the golang stdlib
|
7
|
+
# https://github.com/golang/go/blob/c8eced8580028328fde7c03cbfcb720ce15b2358/src/net/http/transport.go#L49
|
8
|
+
KEEP_ALIVE_TIMEOUT = 30
|
9
|
+
|
7
10
|
class << self
|
8
|
-
# @private
|
11
|
+
# @api private
|
9
12
|
#
|
10
13
|
# @param url [URI::Generic]
|
11
14
|
#
|
12
15
|
# @return [Net::HTTP]
|
13
|
-
#
|
14
16
|
def connect(url)
|
15
17
|
port =
|
16
18
|
case [url.port, url.scheme]
|
@@ -28,17 +30,16 @@ module TerminalShop
|
|
28
30
|
end
|
29
31
|
end
|
30
32
|
|
31
|
-
# @private
|
33
|
+
# @api private
|
32
34
|
#
|
33
35
|
# @param conn [Net::HTTP]
|
34
36
|
# @param deadline [Float]
|
35
|
-
#
|
36
37
|
def calibrate_socket_timeout(conn, deadline)
|
37
38
|
timeout = deadline - TerminalShop::Util.monotonic_secs
|
38
39
|
conn.open_timeout = conn.read_timeout = conn.write_timeout = conn.continue_timeout = timeout
|
39
40
|
end
|
40
41
|
|
41
|
-
# @private
|
42
|
+
# @api private
|
42
43
|
#
|
43
44
|
# @param request [Hash{Symbol=>Object}] .
|
44
45
|
#
|
@@ -50,8 +51,8 @@ module TerminalShop
|
|
50
51
|
#
|
51
52
|
# @param blk [Proc]
|
52
53
|
#
|
54
|
+
# @yieldparam [String]
|
53
55
|
# @return [Net::HTTPGenericRequest]
|
54
|
-
#
|
55
56
|
def build_request(request, &)
|
56
57
|
method, url, headers, body = request.fetch_values(:method, :url, :headers, :body)
|
57
58
|
req = Net::HTTPGenericRequest.new(
|
@@ -65,6 +66,7 @@ module TerminalShop
|
|
65
66
|
|
66
67
|
case body
|
67
68
|
in nil
|
69
|
+
nil
|
68
70
|
in String
|
69
71
|
req["content-length"] ||= body.bytesize.to_s unless req["transfer-encoding"]
|
70
72
|
req.body_stream = TerminalShop::Util::ReadIOAdapter.new(body, &)
|
@@ -80,13 +82,17 @@ module TerminalShop
|
|
80
82
|
end
|
81
83
|
end
|
82
84
|
|
83
|
-
# @private
|
85
|
+
# @api private
|
84
86
|
#
|
85
87
|
# @param url [URI::Generic]
|
88
|
+
# @param deadline [Float]
|
86
89
|
# @param blk [Proc]
|
87
90
|
#
|
88
|
-
|
91
|
+
# @raise [Timeout::Error]
|
92
|
+
# @yieldparam [Net::HTTP]
|
93
|
+
private def with_pool(url, deadline:, &blk)
|
89
94
|
origin = TerminalShop::Util.uri_origin(url)
|
95
|
+
timeout = deadline - TerminalShop::Util.monotonic_secs
|
90
96
|
pool =
|
91
97
|
@mutex.synchronize do
|
92
98
|
@pools[origin] ||= ConnectionPool.new(size: @size) do
|
@@ -94,10 +100,10 @@ module TerminalShop
|
|
94
100
|
end
|
95
101
|
end
|
96
102
|
|
97
|
-
pool.with(&)
|
103
|
+
pool.with(timeout: timeout, &blk)
|
98
104
|
end
|
99
105
|
|
100
|
-
# @private
|
106
|
+
# @api private
|
101
107
|
#
|
102
108
|
# @param request [Hash{Symbol=>Object}] .
|
103
109
|
#
|
@@ -111,15 +117,14 @@ module TerminalShop
|
|
111
117
|
#
|
112
118
|
# @option request [Float] :deadline
|
113
119
|
#
|
114
|
-
# @return [Array(Net::HTTPResponse, Enumerable)]
|
115
|
-
#
|
120
|
+
# @return [Array(Integer, Net::HTTPResponse, Enumerable)]
|
116
121
|
def execute(request)
|
117
122
|
url, deadline = request.fetch_values(:url, :deadline)
|
118
123
|
|
119
124
|
eof = false
|
120
125
|
finished = false
|
121
126
|
enum = Enumerator.new do |y|
|
122
|
-
with_pool(url) do |conn|
|
127
|
+
with_pool(url, deadline: deadline) do |conn|
|
123
128
|
next if finished
|
124
129
|
|
125
130
|
req = self.class.build_request(request) do
|
@@ -127,11 +132,14 @@ module TerminalShop
|
|
127
132
|
end
|
128
133
|
|
129
134
|
self.class.calibrate_socket_timeout(conn, deadline)
|
130
|
-
|
135
|
+
unless conn.started?
|
136
|
+
conn.keep_alive_timeout = self.class::KEEP_ALIVE_TIMEOUT
|
137
|
+
conn.start
|
138
|
+
end
|
131
139
|
|
132
140
|
self.class.calibrate_socket_timeout(conn, deadline)
|
133
141
|
conn.request(req) do |rsp|
|
134
|
-
y << [conn, rsp]
|
142
|
+
y << [conn, req, rsp]
|
135
143
|
break if finished
|
136
144
|
|
137
145
|
rsp.read_body do |bytes|
|
@@ -143,9 +151,11 @@ module TerminalShop
|
|
143
151
|
eof = true
|
144
152
|
end
|
145
153
|
end
|
154
|
+
rescue Timeout::Error
|
155
|
+
raise TerminalShop::APITimeoutError
|
146
156
|
end
|
147
157
|
|
148
|
-
conn, response = enum.next
|
158
|
+
conn, _, response = enum.next
|
149
159
|
body = TerminalShop::Util.fused_enum(enum, external: true) do
|
150
160
|
finished = true
|
151
161
|
tap do
|
@@ -155,13 +165,12 @@ module TerminalShop
|
|
155
165
|
end
|
156
166
|
conn.finish if !eof && conn&.started?
|
157
167
|
end
|
158
|
-
[response, (response.body = body)]
|
168
|
+
[Integer(response.code), response, (response.body = body)]
|
159
169
|
end
|
160
170
|
|
161
|
-
# @private
|
171
|
+
# @api private
|
162
172
|
#
|
163
173
|
# @param size [Integer]
|
164
|
-
#
|
165
174
|
def initialize(size: Etc.nprocessors)
|
166
175
|
@mutex = Mutex.new
|
167
176
|
@size = size
|
@@ -1,10 +1,7 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
|
3
3
|
module TerminalShop
|
4
|
-
# @private
|
5
|
-
#
|
6
|
-
# @abstract
|
7
|
-
#
|
4
|
+
# @api private
|
8
5
|
module RequestParameters
|
9
6
|
# @!parse
|
10
7
|
# # Options to specify HTTP behaviour for this request.
|
@@ -12,7 +9,6 @@ module TerminalShop
|
|
12
9
|
# attr_accessor :request_options
|
13
10
|
|
14
11
|
# @param mod [Module]
|
15
|
-
#
|
16
12
|
def self.included(mod)
|
17
13
|
return unless mod <= TerminalShop::BaseModel
|
18
14
|
|
@@ -20,15 +16,13 @@ module TerminalShop
|
|
20
16
|
mod.optional(:request_options, TerminalShop::RequestOptions)
|
21
17
|
end
|
22
18
|
|
23
|
-
# @private
|
24
|
-
#
|
19
|
+
# @api private
|
25
20
|
module Converter
|
26
|
-
# @private
|
21
|
+
# @api private
|
27
22
|
#
|
28
23
|
# @param params [Object]
|
29
24
|
#
|
30
25
|
# @return [Array(Object, Hash{Symbol=>Object})]
|
31
|
-
#
|
32
26
|
def dump_request(params)
|
33
27
|
case (dumped = dump(params))
|
34
28
|
in Hash
|
@@ -46,12 +40,11 @@ module TerminalShop
|
|
46
40
|
# When making a request, you can pass an actual {RequestOptions} instance, or
|
47
41
|
# simply pass a Hash with symbol keys matching the attributes on this class.
|
48
42
|
class RequestOptions < TerminalShop::BaseModel
|
49
|
-
# @private
|
43
|
+
# @api private
|
50
44
|
#
|
51
45
|
# @param opts [TerminalShop::RequestOptions, Hash{Symbol=>Object}]
|
52
46
|
#
|
53
47
|
# @raise [ArgumentError]
|
54
|
-
#
|
55
48
|
def self.validate!(opts)
|
56
49
|
case opts
|
57
50
|
in TerminalShop::RequestOptions | Hash
|
@@ -90,7 +83,7 @@ module TerminalShop
|
|
90
83
|
# Extra data to send with the request. These are deep merged into any data
|
91
84
|
# generated as part of the normal request.
|
92
85
|
#
|
93
|
-
# @return [
|
86
|
+
# @return [Object, nil]
|
94
87
|
optional :extra_body, TerminalShop::HashOf[TerminalShop::Unknown]
|
95
88
|
|
96
89
|
# @!attribute max_retries
|
@@ -26,7 +26,6 @@ module TerminalShop
|
|
26
26
|
# @option params [TerminalShop::RequestOptions, Hash{Symbol=>Object}, nil] :request_options
|
27
27
|
#
|
28
28
|
# @return [TerminalShop::Models::AddressCreateResponse]
|
29
|
-
#
|
30
29
|
def create(params)
|
31
30
|
parsed, options = TerminalShop::Models::AddressCreateParams.dump_request(params)
|
32
31
|
@client.request(
|
@@ -45,7 +44,6 @@ module TerminalShop
|
|
45
44
|
# @option params [TerminalShop::RequestOptions, Hash{Symbol=>Object}, nil] :request_options
|
46
45
|
#
|
47
46
|
# @return [TerminalShop::Models::AddressListResponse]
|
48
|
-
#
|
49
47
|
def list(params = {})
|
50
48
|
@client.request(
|
51
49
|
method: :get,
|
@@ -64,7 +62,6 @@ module TerminalShop
|
|
64
62
|
# @option params [TerminalShop::RequestOptions, Hash{Symbol=>Object}, nil] :request_options
|
65
63
|
#
|
66
64
|
# @return [TerminalShop::Models::AddressDeleteResponse]
|
67
|
-
#
|
68
65
|
def delete(id, params = {})
|
69
66
|
@client.request(
|
70
67
|
method: :delete,
|
@@ -83,7 +80,6 @@ module TerminalShop
|
|
83
80
|
# @option params [TerminalShop::RequestOptions, Hash{Symbol=>Object}, nil] :request_options
|
84
81
|
#
|
85
82
|
# @return [TerminalShop::Models::AddressGetResponse]
|
86
|
-
#
|
87
83
|
def get(id, params = {})
|
88
84
|
@client.request(
|
89
85
|
method: :get,
|
@@ -94,7 +90,6 @@ module TerminalShop
|
|
94
90
|
end
|
95
91
|
|
96
92
|
# @param client [TerminalShop::Client]
|
97
|
-
#
|
98
93
|
def initialize(client:)
|
99
94
|
@client = client
|
100
95
|
end
|
@@ -14,7 +14,6 @@ module TerminalShop
|
|
14
14
|
# @option params [TerminalShop::RequestOptions, Hash{Symbol=>Object}, nil] :request_options
|
15
15
|
#
|
16
16
|
# @return [TerminalShop::Models::AppCreateResponse]
|
17
|
-
#
|
18
17
|
def create(params)
|
19
18
|
parsed, options = TerminalShop::Models::AppCreateParams.dump_request(params)
|
20
19
|
@client.request(
|
@@ -33,7 +32,6 @@ module TerminalShop
|
|
33
32
|
# @option params [TerminalShop::RequestOptions, Hash{Symbol=>Object}, nil] :request_options
|
34
33
|
#
|
35
34
|
# @return [TerminalShop::Models::AppListResponse]
|
36
|
-
#
|
37
35
|
def list(params = {})
|
38
36
|
@client.request(
|
39
37
|
method: :get,
|
@@ -52,7 +50,6 @@ module TerminalShop
|
|
52
50
|
# @option params [TerminalShop::RequestOptions, Hash{Symbol=>Object}, nil] :request_options
|
53
51
|
#
|
54
52
|
# @return [TerminalShop::Models::AppDeleteResponse]
|
55
|
-
#
|
56
53
|
def delete(id, params = {})
|
57
54
|
@client.request(
|
58
55
|
method: :delete,
|
@@ -71,7 +68,6 @@ module TerminalShop
|
|
71
68
|
# @option params [TerminalShop::RequestOptions, Hash{Symbol=>Object}, nil] :request_options
|
72
69
|
#
|
73
70
|
# @return [TerminalShop::Models::AppGetResponse]
|
74
|
-
#
|
75
71
|
def get(id, params = {})
|
76
72
|
@client.request(
|
77
73
|
method: :get,
|
@@ -82,7 +78,6 @@ module TerminalShop
|
|
82
78
|
end
|
83
79
|
|
84
80
|
# @param client [TerminalShop::Client]
|
85
|
-
#
|
86
81
|
def initialize(client:)
|
87
82
|
@client = client
|
88
83
|
end
|
@@ -13,7 +13,6 @@ module TerminalShop
|
|
13
13
|
# @option params [TerminalShop::RequestOptions, Hash{Symbol=>Object}, nil] :request_options
|
14
14
|
#
|
15
15
|
# @return [TerminalShop::Models::CardCreateResponse]
|
16
|
-
#
|
17
16
|
def create(params)
|
18
17
|
parsed, options = TerminalShop::Models::CardCreateParams.dump_request(params)
|
19
18
|
@client.request(
|
@@ -32,7 +31,6 @@ module TerminalShop
|
|
32
31
|
# @option params [TerminalShop::RequestOptions, Hash{Symbol=>Object}, nil] :request_options
|
33
32
|
#
|
34
33
|
# @return [TerminalShop::Models::CardListResponse]
|
35
|
-
#
|
36
34
|
def list(params = {})
|
37
35
|
@client.request(
|
38
36
|
method: :get,
|
@@ -51,7 +49,6 @@ module TerminalShop
|
|
51
49
|
# @option params [TerminalShop::RequestOptions, Hash{Symbol=>Object}, nil] :request_options
|
52
50
|
#
|
53
51
|
# @return [TerminalShop::Models::CardDeleteResponse]
|
54
|
-
#
|
55
52
|
def delete(id, params = {})
|
56
53
|
@client.request(
|
57
54
|
method: :delete,
|
@@ -69,7 +66,6 @@ module TerminalShop
|
|
69
66
|
# @option params [TerminalShop::RequestOptions, Hash{Symbol=>Object}, nil] :request_options
|
70
67
|
#
|
71
68
|
# @return [TerminalShop::Models::CardCollectResponse]
|
72
|
-
#
|
73
69
|
def collect(params = {})
|
74
70
|
@client.request(
|
75
71
|
method: :post,
|
@@ -88,7 +84,6 @@ module TerminalShop
|
|
88
84
|
# @option params [TerminalShop::RequestOptions, Hash{Symbol=>Object}, nil] :request_options
|
89
85
|
#
|
90
86
|
# @return [TerminalShop::Models::CardGetResponse]
|
91
|
-
#
|
92
87
|
def get(id, params = {})
|
93
88
|
@client.request(
|
94
89
|
method: :get,
|
@@ -99,7 +94,6 @@ module TerminalShop
|
|
99
94
|
end
|
100
95
|
|
101
96
|
# @param client [TerminalShop::Client]
|
102
|
-
#
|
103
97
|
def initialize(client:)
|
104
98
|
@client = client
|
105
99
|
end
|