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
@@ -0,0 +1,175 @@
1
+ # frozen_string_literal: true
2
+
3
+ module DearInventory
4
+ class Parameters
5
+ module Customer
6
+ class Update < DearInventory::Parameters
7
+ fields(
8
+ id: {
9
+ property: :ID,
10
+ type: :Guid,
11
+ required: true,
12
+ },
13
+ account_receivable: {
14
+ property: :AccountReceivable,
15
+ type: :String,
16
+ required: true,
17
+ },
18
+ additional_attribute1: {
19
+ property: :AdditionalAttribute1,
20
+ type: :String,
21
+ required: false,
22
+ },
23
+ additional_attribute10: {
24
+ property: :AdditionalAttribute10,
25
+ type: :String,
26
+ required: false,
27
+ },
28
+ additional_attribute2: {
29
+ property: :AdditionalAttribute2,
30
+ type: :String,
31
+ required: false,
32
+ },
33
+ additional_attribute3: {
34
+ property: :AdditionalAttribute3,
35
+ type: :String,
36
+ required: false,
37
+ },
38
+ additional_attribute4: {
39
+ property: :AdditionalAttribute4,
40
+ type: :String,
41
+ required: false,
42
+ },
43
+ additional_attribute5: {
44
+ property: :AdditionalAttribute5,
45
+ type: :String,
46
+ required: false,
47
+ },
48
+ additional_attribute6: {
49
+ property: :AdditionalAttribute6,
50
+ type: :String,
51
+ required: false,
52
+ },
53
+ additional_attribute7: {
54
+ property: :AdditionalAttribute7,
55
+ type: :String,
56
+ required: false,
57
+ },
58
+ additional_attribute8: {
59
+ property: :AdditionalAttribute8,
60
+ type: :String,
61
+ required: false,
62
+ },
63
+ additional_attribute9: {
64
+ property: :AdditionalAttribute9,
65
+ type: :String,
66
+ required: false,
67
+ },
68
+ addresses: {
69
+ property: :Addresses,
70
+ type: :Array,
71
+ model: DearInventory::Models::Customers::Address,
72
+ required: false,
73
+ },
74
+ attribute_set: {
75
+ property: :AttributeSet,
76
+ type: :String,
77
+ required: false,
78
+ },
79
+ contacts: {
80
+ property: :Contacts,
81
+ type: :Array,
82
+ model: DearInventory::Models::Customers::Contact,
83
+ required: false,
84
+ },
85
+ carrier: {
86
+ property: :Carrier,
87
+ type: :String,
88
+ required: false,
89
+ },
90
+ comments: {
91
+ property: :Comments,
92
+ type: :String,
93
+ required: false,
94
+ },
95
+ credit_limit: {
96
+ property: :CreditLimit,
97
+ type: :Integer,
98
+ required: false,
99
+ },
100
+ currency: {
101
+ property: :Currency,
102
+ type: :String,
103
+ required: true,
104
+ },
105
+ discount: {
106
+ property: :Discount,
107
+ type: :Integer,
108
+ required: false,
109
+ },
110
+ display_name: {
111
+ property: :DisplayName,
112
+ type: :String,
113
+ required: false,
114
+ },
115
+ is_on_credit_hold: {
116
+ property: :IsOnCreditHold,
117
+ type: :Boolean,
118
+ required: false,
119
+ },
120
+ location: {
121
+ property: :Location,
122
+ type: :String,
123
+ required: false,
124
+ },
125
+ name: {
126
+ property: :Name,
127
+ type: :String,
128
+ required: true,
129
+ },
130
+ payment_term: {
131
+ property: :PaymentTerm,
132
+ type: :String,
133
+ required: true,
134
+ },
135
+ price_tier: {
136
+ property: :PriceTier,
137
+ type: :String,
138
+ required: false,
139
+ },
140
+ revenue_account: {
141
+ property: :RevenueAccount,
142
+ type: :String,
143
+ required: true,
144
+ },
145
+ sales_representative: {
146
+ property: :SalesRepresentative,
147
+ type: :String,
148
+ required: false,
149
+ },
150
+ status: {
151
+ property: :Status,
152
+ type: :Enum,
153
+ values: %w[Active Deprecated],
154
+ required: true,
155
+ },
156
+ tags: {
157
+ property: :Tags,
158
+ type: :String,
159
+ required: false,
160
+ },
161
+ tax_number: {
162
+ property: :TaxNumber,
163
+ type: :Integer,
164
+ required: false,
165
+ },
166
+ tax_rule: {
167
+ property: :TaxRule,
168
+ type: :String,
169
+ required: true,
170
+ }
171
+ )
172
+ end
173
+ end
174
+ end
175
+ end
@@ -1,12 +1,9 @@
1
- # typed: strict
2
1
  # frozen_string_literal: true
3
2
 
4
3
  module DearInventory
5
4
  class Parameters
6
5
  module Product
7
6
  class Index < DearInventory::Parameters
8
- extend T::Sig
9
-
10
7
  fields(
11
8
  id: {
12
9
  property: :ID,
@@ -1,12 +1,9 @@
1
- # typed: strict
2
1
  # frozen_string_literal: true
3
2
 
4
3
  module DearInventory
5
4
  class Parameters
6
5
  module ProductAvailability
7
6
  class Index < DearInventory::Parameters
8
- extend T::Sig
9
-
10
7
  fields(
11
8
  id: {
12
9
  property: :ID,
@@ -1,12 +1,9 @@
1
- # typed: strict
2
1
  # frozen_string_literal: true
3
2
 
4
3
  module DearInventory
5
4
  class Parameters
6
5
  module Purchase
7
6
  class Index < DearInventory::Parameters
8
- extend T::Sig
9
-
10
7
  fields(
11
8
  page: {
12
9
  property: :Page,
@@ -1,12 +1,9 @@
1
- # typed: strict
2
1
  # frozen_string_literal: true
3
2
 
4
3
  module DearInventory
5
4
  class Parameters
6
5
  module Purchase
7
6
  class Show < DearInventory::Parameters
8
- extend T::Sig
9
-
10
7
  fields(
11
8
  id: {
12
9
  property: :ID,
@@ -1,12 +1,9 @@
1
- # typed: strict
2
1
  # frozen_string_literal: true
3
2
 
4
3
  module DearInventory
5
4
  class Parameters
6
5
  module Sale
7
6
  class Delete < DearInventory::Parameters
8
- extend T::Sig
9
-
10
7
  fields(
11
8
  id: {
12
9
  property: :ID,
@@ -1,12 +1,9 @@
1
- # typed: strict
2
1
  # frozen_string_literal: true
3
2
 
4
3
  module DearInventory
5
4
  class Parameters
6
5
  module Sale
7
6
  class Index < DearInventory::Parameters
8
- extend T::Sig
9
-
10
7
  fields(
11
8
  page: {
12
9
  property: :Page,
@@ -1,12 +1,9 @@
1
- # typed: strict
2
1
  # frozen_string_literal: true
3
2
 
4
3
  module DearInventory
5
4
  class Parameters
6
5
  module Sale
7
6
  class Show < DearInventory::Parameters
8
- extend T::Sig
9
-
10
7
  fields(
11
8
  id: {
12
9
  property: :ID,
@@ -1,27 +1,15 @@
1
- # typed: strict
2
1
  # frozen_string_literal: true
3
2
 
4
3
  module DearInventory
5
4
  class Parameters
6
- extend T::Sig
7
5
  extend DearInventory::IsASubclass
8
6
 
9
- sig { params(params: T::Hash[Symbol, T.untyped]).void }
10
7
  def initialize(params)
11
- @values = T.let({}, T::Hash[Symbol, T.untyped])
8
+ @values = {}
12
9
  assign_params(params)
13
10
  end
14
11
 
15
12
  class << self
16
- extend T::Sig
17
-
18
- sig do
19
- params(
20
- fields: T::Hash[
21
- Symbol, T::Hash[Symbol, T.any(Symbol, T::Array[String], T::Boolean)]
22
- ]
23
- ).void
24
- end
25
13
  def fields(fields)
26
14
  const_set(:FIELDS, fields.freeze)
27
15
 
@@ -30,13 +18,6 @@ module DearInventory
30
18
  end
31
19
  end
32
20
 
33
- sig do
34
- params(
35
- resource_class: T.class_of(DearInventory::Resource),
36
- endpoint: T.nilable(String),
37
- params: T::Hash[Symbol, T.untyped]
38
- ).returns(T.untyped)
39
- end
40
21
  def convert(resource_class, endpoint, params)
41
22
  params_class = endpoint_class(resource_class, endpoint)
42
23
 
@@ -48,56 +29,25 @@ module DearInventory
48
29
 
49
30
  private
50
31
 
51
- sig do
52
- params(
53
- resource_class: T.class_of(DearInventory::Resource),
54
- endpoint: T.nilable(String)
55
- ).returns(T.class_of(DearInventory::Parameters))
56
- end
57
32
  def endpoint_class(resource_class, endpoint)
58
- params_class = DearInventory::EndpointClass.(
33
+ DearInventory::EndpointClass.(
59
34
  class_type: "Parameters",
60
35
  resource_class: resource_class,
61
36
  endpoint: endpoint
62
37
  )
63
- T.cast(params_class, T.class_of(DearInventory::Parameters))
64
38
  end
65
39
 
66
- # rubocop:disable Metrics/MethodLength
67
- sig do
68
- params(
69
- name: Symbol,
70
- specifications: T::Hash[
71
- Symbol, T.any(Symbol, T::Array[String], T::Boolean)
72
- ]
73
- ).void
74
- end
75
40
  def define_method_for_validator(name, specifications)
76
41
  case specifications[:type]
77
42
  when :Enum
78
43
  define_enum_method(name, specifications)
79
44
  when :String
80
- define_string_method(
81
- name,
82
- T.cast(specifications, T::Hash[Symbol, T.any(Symbol, T::Boolean)])
83
- )
45
+ define_string_method(name, specifications)
84
46
  else
85
- define_method_without_options(
86
- name,
87
- T.cast(specifications, T::Hash[Symbol, T.any(Symbol, T::Boolean)])
88
- )
47
+ define_method_without_options(name, specifications)
89
48
  end
90
49
  end
91
- # rubocop:enable Metrics/MethodLength
92
-
93
- sig do
94
- params(
95
- name: Symbol,
96
- specifications: T::Hash[
97
- Symbol, T.any(Symbol, T::Array[String], T::Boolean)
98
- ]
99
- ).void
100
- end
50
+
101
51
  def define_enum_method(name, specifications)
102
52
  validator = DearInventory::Validators::Enum
103
53
  options = {
@@ -106,12 +56,6 @@ module DearInventory
106
56
  define_method_with_options(name, validator, options)
107
57
  end
108
58
 
109
- sig do
110
- params(
111
- name: Symbol,
112
- specifications: T::Hash[Symbol, T.any(Symbol, T::Boolean)]
113
- ).void
114
- end
115
59
  def define_string_method(name, specifications)
116
60
  validator = DearInventory::Validators::String
117
61
  options = {
@@ -120,15 +64,6 @@ module DearInventory
120
64
  define_method_with_options(name, validator, options)
121
65
  end
122
66
 
123
- sig do
124
- params(
125
- name: Symbol,
126
- validator: T.class_of(DearInventory::Validator),
127
- options: T::Hash[
128
- Symbol, T.nilable(T.any(Symbol, T::Array[String], T::Boolean))
129
- ]
130
- ).void
131
- end
132
67
  def define_method_with_options(name, validator, options)
133
68
  define_method("#{name}=") do |value|
134
69
  validator.(
@@ -137,46 +72,30 @@ module DearInventory
137
72
  options: options
138
73
  )
139
74
 
140
- T.unsafe(self).instance_variable_get(:@values)[name] = value
75
+ instance_variable_get(:@values)[name] = value
141
76
  end
142
77
  end
143
78
 
144
- sig do
145
- params(
146
- name: Symbol,
147
- specifications: T::Hash[Symbol, T.any(Symbol, T::Boolean)]
148
- ).void
149
- end
150
79
  def define_method_without_options(name, specifications)
151
80
  validator = Object.const_get(
152
81
  "DearInventory::Validators::#{specifications[:type]}"
153
82
  )
154
83
  define_method("#{name}=") do |value|
155
84
  validator.(name, value)
156
- T.unsafe(self).instance_variable_get(:@values)[name] = value
85
+ instance_variable_get(:@values)[name] = value
157
86
  end
158
87
  end
159
88
 
160
- sig do
161
- params(
162
- params_class: T.nilable(T.class_of(DearInventory::Parameters)),
163
- resource_class: T.class_of(DearInventory::Resource),
164
- endpoint: T.nilable(String),
165
- params: T::Hash[Symbol, T.untyped]
166
- ).returns(T.nilable(DearInventory::Parameters))
167
- end
168
89
  def convert_with_params_class(
169
90
  params_class:, resource_class:, endpoint:, params:
170
91
  )
171
92
  return params_class.new(params) unless params_class.nil?
172
93
 
173
94
  message = "No parameters class can be found for resource, " \
174
- "#{resource_class}, with endpoint #{endpoint}"
95
+ "#{resource_class}, with endpoint #{endpoint}"
175
96
  raise ArgumentError, message
176
97
  end
177
98
  end
178
-
179
- sig { returns(T::Hash[Symbol, T.untyped]) }
180
99
  def to_h
181
100
  self.class.
182
101
  const_get(:FIELDS).
@@ -190,12 +109,6 @@ module DearInventory
190
109
 
191
110
  private
192
111
 
193
- sig do
194
- params(
195
- field_name: Symbol,
196
- specifications: T::Hash[Symbol, T.untyped]
197
- ).returns(T.nilable(T.any(String, Numeric, T::Boolean)))
198
- end
199
112
  def parameter_value(field_name, specifications)
200
113
  value = @values[field_name]
201
114
  Validators::Required.(field_name, value) if specifications[:required]
@@ -207,10 +120,16 @@ module DearInventory
207
120
  end
208
121
  end
209
122
 
210
- sig { params(params: T::Hash[Symbol, T.untyped]).void }
211
123
  def assign_params(params)
212
124
  params.each do |name, value|
213
- public_send(:"#{name}=", value)
125
+ formatted_value =
126
+ if value.is_a?(Array)
127
+ value.map { |record| record.transform_keys { |key| key.to_s.titleize.delete(" ") } }
128
+ else
129
+ value
130
+ end
131
+
132
+ public_send(:"#{name}=", formatted_value)
214
133
  end
215
134
  end
216
135
  end
@@ -1,19 +1,9 @@
1
- # typed: strict
2
1
  # frozen_string_literal: true
3
2
 
4
3
  module DearInventory
5
4
  class Resource
6
- extend T::Sig
7
5
  extend DearInventory::IsASubclass
8
6
 
9
- sig do
10
- params(
11
- action: Symbol,
12
- model: T.class_of(DearInventory::Model),
13
- endpoint: T.nilable(String),
14
- params: T::Hash[Symbol, T.untyped]
15
- ).returns(DearInventory::Response)
16
- end
17
7
  def request(action, model:, endpoint: nil, params: {})
18
8
  request = DearInventory::Models::Request.new(
19
9
  action: action,
@@ -26,12 +16,11 @@ module DearInventory
26
16
 
27
17
  private
28
18
 
29
- URI_BASE = T.let("https://inventory.dearsystems.com/ExternalApi/v2", String)
30
-
31
- sig { params(_endpoint: T.nilable(String)).returns(String) }
19
+ URI_BASE = "https://inventory.dearsystems.com/ExternalApi/v2"
20
+ private_constant :URI_BASE
32
21
  def resource_uri(_endpoint)
33
- resource = T.must(self.class.name).split("::").last
34
- camel_case = Strings::Urlize.(T.must(resource))
22
+ resource = self.class.name.split("::").last
23
+ camel_case = Strings::Urlize.(resource)
35
24
 
36
25
  "#{URI_BASE}/#{camel_case}"
37
26
  end
@@ -1,19 +1,12 @@
1
- # typed: strict
2
1
  # frozen_string_literal: true
3
2
 
4
3
  module DearInventory
5
4
  class AdvancedPurchase < Resource
6
5
  class << self
7
- extend T::Sig
8
-
9
6
  # Advanced Purchase
10
7
  #
11
8
  # @param params [Hash] URL query string parameters that conform to
12
9
  # DearInventory::Parameters::AdvancedPurchase::Show
13
- sig do
14
- params(params: T::Hash[Symbol, T.untyped]).
15
- returns(DearInventory::Response)
16
- end
17
10
  def show(params = {})
18
11
  new.request(
19
12
  :get,
@@ -1,26 +1,33 @@
1
- # typed: strict
2
1
  # frozen_string_literal: true
3
2
 
4
3
  module DearInventory
5
4
  class Customer < Resource
6
5
  class << self
7
- extend T::Sig
8
-
9
6
  # Customer
10
7
  #
11
8
  # @param params [Hash] URL query string parameters that conform to
12
9
  # DearInventory::Parameters::Customer::Index
13
- sig do
14
- params(params: T::Hash[Symbol, T.untyped]).
15
- returns(DearInventory::Response)
16
- end
17
10
  def index(params = {})
18
- new.request(
19
- :get, params: params, model: DearInventory::Models::Customers
20
- )
11
+ new.request(:get, params:, model:)
21
12
  end
22
13
 
23
14
  alias call index
15
+
16
+ def show(params = {})
17
+ new.request(:get, endpoint: "show", model:, params:)
18
+ end
19
+
20
+ def create(params = {})
21
+ new.request(:post, endpoint: "create", model:, params:)
22
+ end
23
+
24
+ def update(params = {})
25
+ new.request(:put, endpoint: "update", model:, params:)
26
+ end
27
+
28
+ private
29
+
30
+ def model = DearInventory::Models::Customers
24
31
  end
25
32
  end
26
33
  end
@@ -1,19 +1,12 @@
1
- # typed: strict
2
1
  # frozen_string_literal: true
3
2
 
4
3
  module DearInventory
5
4
  class Product < Resource
6
5
  class << self
7
- extend T::Sig
8
-
9
6
  # Product
10
7
  #
11
8
  # @param params [Hash] URL query string parameters that conform to
12
9
  # DearInventory::Parameters::Product::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, params: params, model: DearInventory::Models::Products
@@ -1,19 +1,12 @@
1
- # typed: strict
2
1
  # frozen_string_literal: true
3
2
 
4
3
  module DearInventory
5
4
  class ProductAvailability < Resource
6
5
  class << self
7
- extend T::Sig
8
-
9
6
  # ProductAvailability
10
7
  #
11
8
  # @param params [Hash] URL query string parameters that conform to
12
9
  # DearInventory::Parameters::ProductAvailability::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,
@@ -27,9 +20,8 @@ module DearInventory
27
20
 
28
21
  private
29
22
 
30
- sig { params(_endpoint: T.nilable(String)).returns(String) }
31
23
  def resource_uri(_endpoint)
32
- self.class.const_get(:URI_BASE) + "/ref/productavailability"
24
+ "#{self.class.const_get(:URI_BASE)}/ref/productavailability"
33
25
  end
34
26
  end
35
27
  end
@@ -1,19 +1,12 @@
1
- # typed: strict
2
1
  # frozen_string_literal: true
3
2
 
4
3
  module DearInventory
5
4
  class Purchase < Resource
6
5
  class << self
7
- extend T::Sig
8
-
9
6
  # Purchases
10
7
  #
11
8
  # @param params [Hash] URL query string parameters that conform to
12
9
  # DearInventory::Parameters::Purchase::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::Purchase::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,
@@ -45,7 +34,6 @@ module DearInventory
45
34
 
46
35
  private
47
36
 
48
- sig { params(endpoint: T.nilable(String)).returns(String) }
49
37
  def resource_uri(endpoint)
50
38
  suffix =
51
39
  case endpoint