dear_inventory 1.4.0 → 1.5.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.
Files changed (164) hide show
  1. checksums.yaml +4 -4
  2. data/.rubocop.yml +13 -4
  3. data/Gemfile +14 -0
  4. data/README.md +1 -10
  5. data/dear_inventory.gemspec +5 -15
  6. data/lib/dear_inventory/config.rb +12 -25
  7. data/lib/dear_inventory/environment.rb +1 -2
  8. data/lib/dear_inventory/error.rb +1 -6
  9. data/lib/dear_inventory/errors/api_limit.rb +0 -1
  10. data/lib/dear_inventory/errors/bad_request.rb +0 -1
  11. data/lib/dear_inventory/errors/no_more_pages.rb +0 -1
  12. data/lib/dear_inventory/errors/not_paginated.rb +0 -9
  13. data/lib/dear_inventory/errors/request.rb +1 -11
  14. data/lib/dear_inventory/errors/validation.rb +0 -1
  15. data/lib/dear_inventory/lib/date_time.rb +1 -6
  16. data/lib/dear_inventory/lib/endpoint_class.rb +4 -25
  17. data/lib/dear_inventory/lib/is_a_subclass.rb +1 -7
  18. data/lib/dear_inventory/lib/request.rb +10 -35
  19. data/lib/dear_inventory/lib/strings/urlize.rb +0 -4
  20. data/lib/dear_inventory/model.rb +26 -59
  21. data/lib/dear_inventory/models/additional_attributes.rb +0 -3
  22. data/lib/dear_inventory/models/address.rb +0 -3
  23. data/lib/dear_inventory/models/advanced_purchase.rb +0 -3
  24. data/lib/dear_inventory/models/attachment.rb +0 -3
  25. data/lib/dear_inventory/models/bill_of_materials_product.rb +0 -3
  26. data/lib/dear_inventory/models/bill_of_materials_service.rb +0 -3
  27. data/lib/dear_inventory/models/customer.rb +0 -3
  28. data/lib/dear_inventory/models/customers/address.rb +0 -3
  29. data/lib/dear_inventory/models/customers/contact.rb +0 -3
  30. data/lib/dear_inventory/models/customers.rb +0 -3
  31. data/lib/dear_inventory/models/inventory_movement.rb +0 -3
  32. data/lib/dear_inventory/models/product.rb +0 -3
  33. data/lib/dear_inventory/models/product_availability.rb +0 -3
  34. data/lib/dear_inventory/models/product_availability_results.rb +0 -3
  35. data/lib/dear_inventory/models/products/movement.rb +0 -3
  36. data/lib/dear_inventory/models/products.rb +0 -3
  37. data/lib/dear_inventory/models/purchase.rb +0 -3
  38. data/lib/dear_inventory/models/purchases/additional_charge.rb +0 -3
  39. data/lib/dear_inventory/models/purchases/advanced/credit_note.rb +0 -3
  40. data/lib/dear_inventory/models/purchases/advanced/invoice.rb +0 -3
  41. data/lib/dear_inventory/models/purchases/advanced/manual_journal.rb +0 -3
  42. data/lib/dear_inventory/models/purchases/advanced/put_away.rb +0 -3
  43. data/lib/dear_inventory/models/purchases/advanced/put_away_line.rb +0 -3
  44. data/lib/dear_inventory/models/purchases/advanced/stock.rb +0 -3
  45. data/lib/dear_inventory/models/purchases/advanced/stock_line.rb +0 -3
  46. data/lib/dear_inventory/models/purchases/credit_note.rb +0 -3
  47. data/lib/dear_inventory/models/purchases/inventory_movement.rb +0 -3
  48. data/lib/dear_inventory/models/purchases/invoice.rb +0 -3
  49. data/lib/dear_inventory/models/purchases/invoice_additional_charge.rb +0 -3
  50. data/lib/dear_inventory/models/purchases/invoice_line.rb +0 -3
  51. data/lib/dear_inventory/models/purchases/line.rb +0 -3
  52. data/lib/dear_inventory/models/purchases/manual_journal.rb +0 -3
  53. data/lib/dear_inventory/models/purchases/manual_journal_line.rb +0 -3
  54. data/lib/dear_inventory/models/purchases/order.rb +0 -3
  55. data/lib/dear_inventory/models/purchases/payment_line.rb +0 -3
  56. data/lib/dear_inventory/models/purchases/stock.rb +0 -3
  57. data/lib/dear_inventory/models/purchases/stock_line.rb +0 -3
  58. data/lib/dear_inventory/models/purchases/unstock_line.rb +0 -3
  59. data/lib/dear_inventory/models/purchases.rb +3 -8
  60. data/lib/dear_inventory/models/purchases_results.rb +0 -3
  61. data/lib/dear_inventory/models/reorder_level.rb +0 -3
  62. data/lib/dear_inventory/models/request.rb +5 -16
  63. data/lib/dear_inventory/models/sale.rb +0 -3
  64. data/lib/dear_inventory/models/sales/additional_charge.rb +0 -3
  65. data/lib/dear_inventory/models/sales/credit_note.rb +0 -3
  66. data/lib/dear_inventory/models/sales/fulfilment.rb +0 -3
  67. data/lib/dear_inventory/models/sales/fulfilments/pick_pack.rb +0 -3
  68. data/lib/dear_inventory/models/sales/fulfilments/pick_pack_line.rb +0 -3
  69. data/lib/dear_inventory/models/sales/fulfilments/ship.rb +0 -3
  70. data/lib/dear_inventory/models/sales/fulfilments/ship_line.rb +0 -3
  71. data/lib/dear_inventory/models/sales/invoice.rb +0 -3
  72. data/lib/dear_inventory/models/sales/invoice_additional_charge.rb +0 -3
  73. data/lib/dear_inventory/models/sales/invoice_line.rb +0 -3
  74. data/lib/dear_inventory/models/sales/line.rb +0 -3
  75. data/lib/dear_inventory/models/sales/manual_journal.rb +0 -3
  76. data/lib/dear_inventory/models/sales/manual_journal_line.rb +0 -3
  77. data/lib/dear_inventory/models/sales/order.rb +0 -3
  78. data/lib/dear_inventory/models/sales/payment_line.rb +0 -3
  79. data/lib/dear_inventory/models/sales/quote.rb +0 -3
  80. data/lib/dear_inventory/models/sales.rb +1 -6
  81. data/lib/dear_inventory/models/sales_results.rb +0 -3
  82. data/lib/dear_inventory/models/shipping_address.rb +0 -3
  83. data/lib/dear_inventory/models/supplier.rb +0 -3
  84. data/lib/dear_inventory/models/test_request.rb +5 -20
  85. data/lib/dear_inventory/models/transaction.rb +0 -3
  86. data/lib/dear_inventory/parameters/advanced_purchase/show.rb +0 -3
  87. data/lib/dear_inventory/parameters/customer/create.rb +170 -0
  88. data/lib/dear_inventory/parameters/customer/index.rb +0 -3
  89. data/lib/dear_inventory/parameters/customer/show.rb +170 -0
  90. data/lib/dear_inventory/parameters/customer/update.rb +175 -0
  91. data/lib/dear_inventory/parameters/product/index.rb +0 -3
  92. data/lib/dear_inventory/parameters/product_availability/index.rb +0 -3
  93. data/lib/dear_inventory/parameters/purchase/index.rb +0 -3
  94. data/lib/dear_inventory/parameters/purchase/show.rb +0 -3
  95. data/lib/dear_inventory/parameters/sale/delete.rb +0 -3
  96. data/lib/dear_inventory/parameters/sale/index.rb +0 -3
  97. data/lib/dear_inventory/parameters/sale/show.rb +0 -3
  98. data/lib/dear_inventory/parameters.rb +16 -97
  99. data/lib/dear_inventory/resource.rb +4 -15
  100. data/lib/dear_inventory/resources/advanced_purchase.rb +0 -7
  101. data/lib/dear_inventory/resources/customer.rb +17 -10
  102. data/lib/dear_inventory/resources/product.rb +0 -7
  103. data/lib/dear_inventory/resources/product_availability.rb +1 -9
  104. data/lib/dear_inventory/resources/purchase.rb +0 -12
  105. data/lib/dear_inventory/resources/sale.rb +3 -22
  106. data/lib/dear_inventory/response.rb +25 -73
  107. data/lib/dear_inventory/test_response.rb +9 -24
  108. data/lib/dear_inventory/validator.rb +10 -38
  109. data/lib/dear_inventory/validators/array.rb +15 -0
  110. data/lib/dear_inventory/validators/boolean.rb +0 -4
  111. data/lib/dear_inventory/validators/enum.rb +2 -6
  112. data/lib/dear_inventory/validators/guid.rb +4 -11
  113. data/lib/dear_inventory/validators/integer.rb +0 -4
  114. data/lib/dear_inventory/validators/required.rb +0 -4
  115. data/lib/dear_inventory/validators/string.rb +0 -4
  116. data/lib/dear_inventory/validators/time.rb +0 -4
  117. data/lib/dear_inventory/version.rb +1 -2
  118. data/lib/dear_inventory.rb +6 -12
  119. metadata +22 -219
  120. data/sorbet/config +0 -2
  121. data/sorbet/rbi/gems/addressable.rbi +0 -199
  122. data/sorbet/rbi/gems/ast.rbi +0 -48
  123. data/sorbet/rbi/gems/byebug.rbi +0 -1040
  124. data/sorbet/rbi/gems/coderay.rbi +0 -92
  125. data/sorbet/rbi/gems/crack.rbi +0 -48
  126. data/sorbet/rbi/gems/domain_name.rbi +0 -52
  127. data/sorbet/rbi/gems/dotenv.rbi +0 -68
  128. data/sorbet/rbi/gems/ffi-compiler.rbi +0 -27
  129. data/sorbet/rbi/gems/ffi.rbi +0 -560
  130. data/sorbet/rbi/gems/hashdiff.rbi +0 -66
  131. data/sorbet/rbi/gems/http-cookie.rbi +0 -93
  132. data/sorbet/rbi/gems/http-form_data.rbi +0 -76
  133. data/sorbet/rbi/gems/http-parser.rbi +0 -121
  134. data/sorbet/rbi/gems/http.rbi +0 -616
  135. data/sorbet/rbi/gems/jaro_winkler.rbi +0 -15
  136. data/sorbet/rbi/gems/method_source.rbi +0 -64
  137. data/sorbet/rbi/gems/parallel.rbi +0 -82
  138. data/sorbet/rbi/gems/parser.rbi +0 -857
  139. data/sorbet/rbi/gems/pry-byebug.rbi +0 -155
  140. data/sorbet/rbi/gems/pry.rbi +0 -1965
  141. data/sorbet/rbi/gems/public_suffix.rbi +0 -104
  142. data/sorbet/rbi/gems/rainbow.rbi +0 -118
  143. data/sorbet/rbi/gems/rake.rbi +0 -646
  144. data/sorbet/rbi/gems/rspec-core.rbi +0 -1732
  145. data/sorbet/rbi/gems/rspec-expectations.rbi +0 -388
  146. data/sorbet/rbi/gems/rspec-mocks.rbi +0 -820
  147. data/sorbet/rbi/gems/rspec-support.rbi +0 -269
  148. data/sorbet/rbi/gems/rspec.rbi +0 -15
  149. data/sorbet/rbi/gems/rubocop-performance.rbi +0 -277
  150. data/sorbet/rbi/gems/rubocop-rspec.rbi +0 -887
  151. data/sorbet/rbi/gems/rubocop.rbi +0 -6952
  152. data/sorbet/rbi/gems/ruby-progressbar.rbi +0 -305
  153. data/sorbet/rbi/gems/unf.rbi +0 -19
  154. data/sorbet/rbi/gems/unicode-display_width.rbi +0 -17
  155. data/sorbet/rbi/gems/vcr.rbi +0 -572
  156. data/sorbet/rbi/gems/webmock.rbi +0 -569
  157. data/sorbet/rbi/hidden-definitions/errors.txt +0 -11809
  158. data/sorbet/rbi/hidden-definitions/hidden.rbi +0 -20623
  159. data/sorbet/rbi/sorbet-typed/lib/bundler/all/bundler.rbi +0 -8684
  160. data/sorbet/rbi/sorbet-typed/lib/rainbow/all/rainbow.rbi +0 -276
  161. data/sorbet/rbi/sorbet-typed/lib/ruby/all/gem.rbi +0 -4222
  162. data/sorbet/rbi/sorbet-typed/lib/ruby/all/open3.rbi +0 -111
  163. data/sorbet/rbi/sorbet-typed/lib/ruby/all/resolv.rbi +0 -543
  164. data/sorbet/rbi/todo.rbi +0 -11
@@ -1,19 +1,12 @@
1
- # typed: strict
2
1
  # frozen_string_literal: true
3
2
 
4
3
  module DearInventory
5
4
  class Sale < Resource
6
5
  class << self
7
- extend T::Sig
8
-
9
6
  # Sales
10
7
  #
11
8
  # @param params [Hash] URL query string parameters that conform to
12
9
  # DearInventory::Parameters::Sale::Index
13
- sig do
14
- params(params: T::Hash[Symbol, T.untyped]).
15
- returns(DearInventory::Response)
16
- end
17
10
  def index(params = {})
18
11
  new.request(
19
12
  :get,
@@ -29,10 +22,6 @@ module DearInventory
29
22
  #
30
23
  # @param params [Hash] URL query string parameters that conform to
31
24
  # DearInventory::Parameters::Sale::Show
32
- sig do
33
- params(params: T::Hash[Symbol, T.untyped]).
34
- returns(DearInventory::Response)
35
- end
36
25
  def show(params = {})
37
26
  new.request(
38
27
  :get,
@@ -46,10 +35,6 @@ module DearInventory
46
35
  #
47
36
  # @param params [Hash] URL query string parameters that conform to
48
37
  # DearInventory::Parameters::Sale::Delete
49
- sig do
50
- params(params: T::Hash[Symbol, T.untyped]).
51
- returns(DearInventory::Response)
52
- end
53
38
  def delete(params = {})
54
39
  new.request(
55
40
  :delete,
@@ -62,14 +47,10 @@ module DearInventory
62
47
 
63
48
  private
64
49
 
65
- sig { params(endpoint: T.nilable(String)).returns(String) }
66
50
  def resource_uri(endpoint)
67
- case endpoint
68
- when "index"
69
- "#{self.class.const_get(:URI_BASE)}/salelist"
70
- when "show", "delete"
71
- "#{self.class.const_get(:URI_BASE)}/sale"
72
- end
51
+ return super unless endpoint == "index"
52
+
53
+ "#{self.class.const_get(:URI_BASE)}/salelist"
73
54
  end
74
55
  end
75
56
  end
@@ -1,46 +1,30 @@
1
- # typed: strict
2
1
  # frozen_string_literal: true
3
2
 
4
3
  module DearInventory
5
4
  class Response
6
- extend T::Sig
7
5
  extend DearInventory::IsASubclass
8
6
 
9
- sig { returns(DearInventory::Models::Request) }
10
- attr_reader :request
11
- sig { returns(HTTP::Response) }
12
- attr_reader :response
7
+ attr_reader :request, :response
13
8
 
14
- # rubocop:disable Metrics/AbcSize
15
9
  # rubocop:disable Metrics/MethodLength
16
- sig do
17
- params(
18
- request: DearInventory::Models::Request,
19
- response: HTTP::Response,
20
- num_previous_records: Integer
21
- ).void
22
- end
23
10
  def initialize(request:, response:, num_previous_records: 0)
24
- @request = T.let(request, DearInventory::Models::Request)
25
- @response = T.let(response, HTTP::Response)
26
- @num_previous_records = T.let(num_previous_records, Integer)
11
+ @request = request
12
+ @response = response
13
+ @num_previous_records = num_previous_records
27
14
 
28
- @fields = T.let(nil, T.nilable(T::Array[Symbol]))
29
- @http_status = T.let(nil, T.nilable(Integer))
30
- @load_full_record = T.let(nil, T.nilable(T::Boolean))
31
- @num_records_paged = T.let(nil, T.nilable(Integer))
32
- @uri = T.let(nil, T.nilable(String))
15
+ @fields = nil
16
+ @http_status = nil
17
+ @load_full_record = nil
18
+ @num_records_paged = nil
19
+ @uri = nil
33
20
 
34
21
  raise_error unless success?
35
22
 
36
- body_copy = T.cast(body, T.nilable(T::Hash[String, T.untyped]))
37
- @model = T.let(@request.model.new(body_copy), DearInventory::Model)
23
+ @model = @request.model.new(body)
38
24
  assign_values
39
25
  end
40
- # rubocop:enable Metrics/AbcSize
41
26
  # rubocop:enable Metrics/MethodLength
42
27
 
43
- sig { returns(T::Array[Symbol]) }
44
28
  def fields
45
29
  @fields ||= begin
46
30
  values = @request.model.const_get(:FIELDS).values.map do |field|
@@ -51,32 +35,27 @@ module DearInventory
51
35
  end
52
36
  end
53
37
 
54
- sig { returns(T.nilable(String)) }
55
38
  def error
56
39
  if body.respond_to?(:fetch)
57
- body_copy = T.cast(body, T::Hash[String, T.untyped])
40
+ body_copy = body
58
41
  return body_copy.fetch("Exception", nil)
59
42
  end
60
43
 
61
- T.cast(body, T.nilable(String))
44
+ body
62
45
  end
63
46
 
64
- sig { returns(T::Hash[Symbol, String]) }
65
47
  def headers
66
48
  @response.headers
67
49
  end
68
50
 
69
- sig { returns(Integer) }
70
51
  def http_status
71
52
  @http_status ||= @response.status.code
72
53
  end
73
54
 
74
- sig { returns(T::Boolean) }
75
55
  def paginated?
76
56
  @model.respond_to?(:page)
77
57
  end
78
58
 
79
- sig { params(block: T.proc.params(arg0: DearInventory::Model).void).void }
80
59
  def each(&block)
81
60
  raise_not_paginated unless paginated?
82
61
 
@@ -89,51 +68,44 @@ module DearInventory
89
68
  end
90
69
  end
91
70
 
92
- sig { returns(DearInventory::Response) }
93
71
  def next_page
94
72
  raise_not_paginated unless paginated?
95
73
  raise DearInventory::NoMorePagesError unless next_page?
96
74
 
97
75
  request = @request.dup
98
- T.unsafe(request.params).page = T.unsafe(@model).page + 1
76
+ request.params.page = @model.page + 1
99
77
 
100
78
  DearInventory::Request.(request, num_previous_records: num_records_paged)
101
79
  end
102
80
 
103
- sig { returns(T::Boolean) }
104
81
  def next_page?
105
82
  raise_not_paginated unless paginated?
106
83
 
107
- num_records_paged < T.unsafe(self).total
84
+ num_records_paged < total
108
85
  end
109
86
 
110
- sig { returns(Integer) }
111
87
  def num_records_paged
112
88
  @num_records_paged ||= begin
113
89
  raise_not_paginated unless paginated?
114
90
 
115
- @num_previous_records + T.unsafe(self).records.count
91
+ @num_previous_records + records.count
116
92
  end
117
93
  end
118
94
 
119
- sig { void }
120
95
  def raise_not_paginated
121
- raise DearInventory::NotPaginatedError.new(uri: uri)
96
+ raise DearInventory::NotPaginatedError.new(uri)
122
97
  end
123
98
 
124
- sig { returns(T::Boolean) }
125
99
  def success?
126
100
  http_status == 200
127
101
  end
128
102
 
129
- sig { returns(String) }
130
103
  def uri
131
104
  @uri ||= @response.uri.to_s
132
105
  end
133
106
 
134
- protected
107
+ private
135
108
 
136
- sig { returns(T.any(T::Hash[String, T.untyped], String)) }
137
109
  def body
138
110
  string_body = @response.body.to_s
139
111
  parsed_body = JSON.parse(string_body)
@@ -147,59 +119,39 @@ module DearInventory
147
119
  string_body
148
120
  end
149
121
 
150
- private
151
-
152
- sig { void }
153
122
  def assign_values
154
123
  fields.each { |field| define_alias_method(field) }
155
124
  end
156
125
 
157
- sig { params(method_name: Symbol).void }
158
126
  def define_alias_method(method_name)
159
127
  define_singleton_method(method_name) do
160
128
  @model.public_send(method_name)
161
129
  end
162
130
  end
163
131
 
164
- API_LIMIT_ERROR = T.let(
165
- "You have reached 60 calls per 60 seconds API limit.", String
166
- )
167
-
168
- # rubocop:disable Metrics/AbcSize
169
- sig { returns(DearInventory::Error) }
132
+ API_LIMIT_ERROR = "You have reached 60 calls per 60 seconds API limit."
133
+ private_constant :API_LIMIT_ERROR
170
134
  def raise_error
171
- if http_status == 400
172
- raise T.unsafe(DearInventory::BadRequestError).new(error, self)
173
- end
135
+ raise DearInventory::BadRequestError.new(error, self) if http_status == 400
174
136
 
175
- if http_status == 503 && error == API_LIMIT_ERROR
176
- raise T.unsafe(DearInventory::APILimitError)
177
- end
137
+ raise DearInventory::APILimitError if http_status == 503 && error == API_LIMIT_ERROR
178
138
 
179
- raise T.unsafe(DearInventory::Error).
139
+ raise DearInventory::Error.
180
140
  new("Unknown error (#{http_status}): #{error}")
181
141
  end
182
- # rubocop:enable Metrics/AbcSize
183
142
 
184
- sig do
185
- params(
186
- response: DearInventory::Response,
187
- block: T.proc.params(arg0: DearInventory::Model).void
188
- ).void
189
- end
190
143
  def iterate_over_records(response, block)
191
- return if T.unsafe(response).records.nil?
144
+ return if response.records.nil?
192
145
 
193
- T.unsafe(response).records.each do |record|
146
+ response.records.each do |record|
194
147
  record = record.full_record if load_full_record?
195
148
  block.call(record)
196
149
  end
197
150
  end
198
151
 
199
- sig { returns(T::Boolean) }
200
152
  def load_full_record?
201
153
  @load_full_record ||=
202
- T.unsafe(self).records.first.respond_to?(:full_record)
154
+ records.first.respond_to?(:full_record)
203
155
  end
204
156
  end
205
157
  end
@@ -1,42 +1,27 @@
1
- # typed: strict
2
1
  # frozen_string_literal: true
3
2
 
4
3
  module DearInventory
5
4
  class TestResponse < Response
6
- extend T::Sig
7
5
  extend DearInventory::IsASubclass
8
6
 
9
- sig { returns(DearInventory::Models::Request) }
10
- attr_reader :request
11
- sig { returns(HTTP::Response) }
12
- attr_reader :response
7
+ attr_reader :request, :response
13
8
 
14
- # rubocop:disable Metrics/AbcSize
15
- sig do
16
- params(
17
- request: DearInventory::Models::TestRequest,
18
- body: T.nilable(T::Hash[String, T.untyped]),
19
- num_previous_records: Integer
20
- ).void
21
- end
22
9
  def initialize(request:, body:, num_previous_records: 0)
23
- @request = T.let(request, DearInventory::Models::Request)
24
- @num_previous_records = T.let(num_previous_records, Integer)
10
+ @request = request
11
+ @num_previous_records = num_previous_records
25
12
 
26
- @fields = T.let(nil, T.nilable(T::Array[Symbol]))
27
- @http_status = T.let(nil, T.nilable(Integer))
28
- @load_full_record = T.let(nil, T.nilable(T::Boolean))
29
- @num_records_paged = T.let(nil, T.nilable(Integer))
30
- @uri = T.let(nil, T.nilable(String))
13
+ @fields = nil
14
+ @http_status = nil
15
+ @load_full_record = nil
16
+ @num_records_paged = nil
17
+ @uri = nil
31
18
 
32
19
  raise_error unless success?
33
20
 
34
- @model = T.let(@request.model.new(body), DearInventory::Model)
21
+ @model = @request.model.new(body)
35
22
  assign_values
36
23
  end
37
- # rubocop:enable Metrics/AbcSize
38
24
 
39
- sig { returns(Integer) }
40
25
  def http_status
41
26
  200
42
27
  end
@@ -1,59 +1,31 @@
1
- # typed: strict
2
1
  # frozen_string_literal: true
3
2
 
4
3
  module DearInventory
5
4
  class Validator
6
- extend T::Sig
7
-
8
- extend T::Helpers
9
- abstract!
10
-
11
- DEFAULT_OPTIONS = T.let(
12
- {
13
- limit: nil,
14
- max_length: nil,
15
- values: nil,
16
- }.freeze,
17
- T::Hash[Symbol, T.nilable(T.any(Integer, T::Array[String]))]
18
- )
5
+ DEFAULT_OPTIONS = {
6
+ limit: nil,
7
+ max_length: nil,
8
+ values: nil,
9
+ }.freeze
19
10
  private_constant :DEFAULT_OPTIONS
20
11
 
21
- sig do
22
- params(
23
- field_name: Symbol,
24
- value: T.nilable(T.any(Date, Numeric, String, T::Boolean, Time)),
25
- options: T::Hash[Symbol, T.untyped]
26
- ).void
27
- end
28
12
  def self.call(field_name, value, options: DEFAULT_OPTIONS)
29
13
  new(field_name, value, options: options).call
30
14
  end
31
15
 
32
- sig do
33
- params(
34
- field_name: Symbol,
35
- value: T.nilable(T.any(Date, Numeric, String, T::Boolean, Time)),
36
- options: T::Hash[Symbol, T.untyped]
37
- ).void
38
- end
39
16
  def initialize(field_name, value, options: DEFAULT_OPTIONS)
40
- @field_name = T.let(field_name, Symbol)
41
- @value =
42
- T.let(value, T.nilable(T.any(Date, Numeric, String, T::Boolean, Time)))
17
+ @field_name = field_name
18
+ @value = value
43
19
 
44
- @limit = T.let(options[:limit], T.nilable(Integer))
45
- @max_length = T.let(options[:limit], T.nilable(Integer))
46
- @values = T.let(options[:values], T.nilable(T::Array[String]))
20
+ @limit = options[:limit]
21
+ @max_length = options[:limit]
22
+ @values = options[:values]
47
23
  end
48
24
 
49
25
  private
50
26
 
51
- sig { abstract.void }
52
27
  def call; end
53
28
 
54
- protected
55
-
56
- sig { params(message: String).void }
57
29
  def raise_error(message)
58
30
  raise ValidationError, "#{@field_name} is invalid, #{message}"
59
31
  end
@@ -0,0 +1,15 @@
1
+ # frozen_string_literal: true
2
+
3
+ module DearInventory
4
+ module Validators
5
+ class Array < DearInventory::Validator
6
+ def call
7
+ value = instance_variable_get(:@value)
8
+ return if value.nil?
9
+ return if value.is_a?(::Array)
10
+
11
+ raise_error("expected an Array but received #{value.inspect}")
12
+ end
13
+ end
14
+ end
15
+ end
@@ -1,12 +1,8 @@
1
- # typed: strict
2
1
  # frozen_string_literal: true
3
2
 
4
3
  module DearInventory
5
4
  module Validators
6
5
  class Boolean < DearInventory::Validator
7
- extend T::Sig
8
-
9
- sig { override.void }
10
6
  def call
11
7
  value = instance_variable_get(:@value)
12
8
  return if [true, false, nil].include?(value)
@@ -1,20 +1,16 @@
1
- # typed: strict
2
1
  # frozen_string_literal: true
3
2
 
4
3
  module DearInventory
5
4
  module Validators
6
5
  class Enum < DearInventory::Validator
7
- extend T::Sig
8
-
9
- sig { override.void }
10
6
  def call
11
7
  value = instance_variable_get(:@value)
12
8
  return if value.nil?
13
- return if T.must(@values).include?(value)
9
+ return if @values.include?(value)
14
10
 
15
11
  raise_error(
16
12
  "expected one of " \
17
- "#{T.must(@values).map(&:inspect).join(", ")} " \
13
+ "#{@values.map(&:inspect).join(", ")} " \
18
14
  "but received #{value.inspect}"
19
15
  )
20
16
  end
@@ -1,20 +1,13 @@
1
- # typed: strict
2
1
  # frozen_string_literal: true
3
2
 
4
3
  module DearInventory
5
4
  module Validators
6
5
  class Guid < DearInventory::Validator
7
- extend T::Sig
6
+ REGEX = [
7
+ /\A[\da-f]{32}\z/i,
8
+ /\A(urn:uuid:)?[\da-f]{8}-([\da-f]{4}-){3}[\da-f]{12}\z/i,
9
+ ].freeze
8
10
 
9
- REGEX = T.let(
10
- [
11
- /\A[\da-f]{32}\z/i,
12
- /\A(urn:uuid:)?[\da-f]{8}-([\da-f]{4}-){3}[\da-f]{12}\z/i,
13
- ].freeze,
14
- T::Array[Regexp]
15
- )
16
-
17
- sig { override.void }
18
11
  def call
19
12
  value = instance_variable_get(:@value)
20
13
  return if value.nil?
@@ -1,12 +1,8 @@
1
- # typed: strict
2
1
  # frozen_string_literal: true
3
2
 
4
3
  module DearInventory
5
4
  module Validators
6
5
  class Integer < DearInventory::Validator
7
- extend T::Sig
8
-
9
- sig { override.void }
10
6
  def call
11
7
  value = instance_variable_get(:@value)
12
8
  return if value.nil?
@@ -1,12 +1,8 @@
1
- # typed: strict
2
1
  # frozen_string_literal: true
3
2
 
4
3
  module DearInventory
5
4
  module Validators
6
5
  class Required < DearInventory::Validator
7
- extend T::Sig
8
-
9
- sig { override.void }
10
6
  def call
11
7
  return if present?(instance_variable_get(:@value))
12
8
 
@@ -1,12 +1,8 @@
1
- # typed: true
2
1
  # frozen_string_literal: true
3
2
 
4
3
  module DearInventory
5
4
  module Validators
6
5
  class String < DearInventory::Validator
7
- extend T::Sig
8
-
9
- sig { override.void }
10
6
  def call
11
7
  value = instance_variable_get(:@value)
12
8
  return if value.nil?
@@ -1,12 +1,8 @@
1
- # typed: strict
2
1
  # frozen_string_literal: true
3
2
 
4
3
  module DearInventory
5
4
  module Validators
6
5
  class DateTime < DearInventory::Validator
7
- extend T::Sig
8
-
9
- sig { override.void }
10
6
  def call
11
7
  value = instance_variable_get(:@value)
12
8
  return if value.nil?
@@ -1,6 +1,5 @@
1
- # typed: strong
2
1
  # frozen_string_literal: true
3
2
 
4
3
  module DearInventory
5
- VERSION = "1.4.0"
4
+ VERSION = "1.5.0"
6
5
  end
@@ -1,8 +1,6 @@
1
- # typed: strong
2
1
  # frozen_string_literal: true
3
2
 
4
3
  require "http"
5
- require "sorbet-runtime"
6
4
 
7
5
  require "dear_inventory/config"
8
6
  require "dear_inventory/environment"
@@ -91,6 +89,7 @@ require "dear_inventory/models/request"
91
89
  require "dear_inventory/models/test_request"
92
90
 
93
91
  require "dear_inventory/validator"
92
+ require "dear_inventory/validators/array"
94
93
  require "dear_inventory/validators/boolean"
95
94
  require "dear_inventory/validators/enum"
96
95
  require "dear_inventory/validators/guid"
@@ -101,7 +100,10 @@ require "dear_inventory/validators/time"
101
100
 
102
101
  require "dear_inventory/parameters"
103
102
  require "dear_inventory/parameters/advanced_purchase/show"
103
+ require "dear_inventory/parameters/customer/create"
104
104
  require "dear_inventory/parameters/customer/index"
105
+ require "dear_inventory/parameters/customer/show"
106
+ require "dear_inventory/parameters/customer/update"
105
107
  require "dear_inventory/parameters/product/index"
106
108
  require "dear_inventory/parameters/product_availability/index"
107
109
  require "dear_inventory/parameters/purchase/index"
@@ -124,21 +126,13 @@ require "dear_inventory/test_response"
124
126
  require "dear_inventory/version"
125
127
 
126
128
  module DearInventory
127
- extend T::Sig
128
-
129
- @config = T.let(Config.new, Config)
129
+ @config = Config.new
130
130
 
131
131
  class << self
132
- extend T::Sig
133
-
134
- sig { returns(Config) }
135
132
  attr_reader :config
136
133
 
137
- # rubocop:disable Lint/UnusedMethodArgument
138
- sig { params(block: T.proc.params(config: Config).void).void }
139
- def configure(&block)
134
+ def configure(&)
140
135
  yield config
141
136
  end
142
- # rubocop:enable Lint/UnusedMethodArgument
143
137
  end
144
138
  end