e_plat 0.3.0 → 0.4.1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (67) hide show
  1. checksums.yaml +4 -4
  2. data/README.md +631 -131
  3. data/lib/active_resource/connection_error.rb +29 -0
  4. data/lib/active_resource/formats.rb +27 -0
  5. data/lib/current.rb +1 -1
  6. data/lib/e_plat/client/default_request_args.rb +27 -3
  7. data/lib/e_plat/client.rb +114 -87
  8. data/lib/e_plat/connection.rb +4 -0
  9. data/lib/e_plat/mapping/base.rb +119 -12
  10. data/lib/e_plat/mapping/bigcommerce/v_3/metafield.rb +62 -0
  11. data/lib/e_plat/mapping/bigcommerce/v_3/order/billing_address.rb +14 -0
  12. data/lib/e_plat/mapping/bigcommerce/v_3/order/line_item.rb +85 -0
  13. data/lib/e_plat/mapping/bigcommerce/v_3/order/shipping_address.rb +73 -0
  14. data/lib/e_plat/mapping/bigcommerce/v_3/order.rb +160 -0
  15. data/lib/e_plat/mapping/bigcommerce/v_3/product/image.rb +12 -12
  16. data/lib/e_plat/mapping/bigcommerce/v_3/product/variant.rb +1 -1
  17. data/lib/e_plat/mapping/bigcommerce/v_3/script_tag.rb +78 -0
  18. data/lib/e_plat/mapping/bigcommerce/v_3/shop.rb +11 -6
  19. data/lib/e_plat/mapping/bigcommerce/v_3/webhook.rb +54 -0
  20. data/lib/e_plat/mapping/request_body_root.rb +38 -0
  21. data/lib/e_plat/mapping/shopify/v_2024_01/metafield.rb +26 -0
  22. data/lib/e_plat/mapping/shopify/v_2024_01/order/billing_address.rb +14 -0
  23. data/lib/e_plat/mapping/shopify/v_2024_01/order/shipping_address.rb +30 -0
  24. data/lib/e_plat/mapping/shopify/{v_2022_07/product.rb → v_2024_01/order.rb} +3 -3
  25. data/lib/e_plat/mapping/shopify/{v_2022_07 → v_2024_01}/product/image.rb +1 -1
  26. data/lib/e_plat/mapping/shopify/{v_2022_07 → v_2024_01}/product/variant.rb +2 -1
  27. data/lib/e_plat/mapping/shopify/v_2024_01/product.rb +26 -0
  28. data/lib/e_plat/mapping/shopify/v_2024_01/script_tag.rb +26 -0
  29. data/lib/e_plat/mapping/shopify/{v_2022_07 → v_2024_01}/shop.rb +1 -1
  30. data/lib/e_plat/mapping/shopify/v_2024_01/webhook.rb +29 -0
  31. data/lib/e_plat/mapping/virtual_collection/base.rb +14 -0
  32. data/lib/e_plat/mapping/virtual_collection/bigcommerce/order_line_items.rb +297 -0
  33. data/lib/e_plat/mapping.rb +3 -3
  34. data/lib/e_plat/resource/attribute_interface.rb +28 -28
  35. data/lib/e_plat/resource/base.rb +107 -66
  36. data/lib/e_plat/resource/collection.rb +92 -0
  37. data/lib/e_plat/resource/concerns/aliases.rb +102 -18
  38. data/lib/e_plat/resource/concerns/dirty.rb +54 -0
  39. data/lib/e_plat/resource/concerns/metafieldable.rb +43 -0
  40. data/lib/e_plat/resource/concerns/overwrite_instance_methods.rb +108 -6
  41. data/lib/e_plat/resource/concerns/overwrite_request_methods.rb +73 -37
  42. data/lib/e_plat/resource/countable.rb +43 -0
  43. data/lib/e_plat/resource/metafield.rb +70 -0
  44. data/lib/e_plat/resource/order/Consignment.rb +8 -0
  45. data/lib/e_plat/resource/order/billing_address.rb +6 -0
  46. data/lib/e_plat/resource/order/fulfillment.rb +1 -0
  47. data/lib/e_plat/resource/order/line_item.rb +1 -0
  48. data/lib/e_plat/resource/order/shipping_address.rb +44 -0
  49. data/lib/e_plat/resource/order/shipping_line.rb +15 -14
  50. data/lib/e_plat/resource/order.rb +32 -0
  51. data/lib/e_plat/resource/paginated/link_headers.rb +42 -0
  52. data/lib/e_plat/resource/paginated/link_params.rb +26 -0
  53. data/lib/e_plat/resource/product/image.rb +6 -0
  54. data/lib/e_plat/resource/product/option.rb +1 -0
  55. data/lib/e_plat/resource/product/variant.rb +8 -12
  56. data/lib/e_plat/resource/product.rb +8 -2
  57. data/lib/e_plat/resource/script_tag.rb +56 -0
  58. data/lib/e_plat/resource/shop.rb +17 -13
  59. data/lib/e_plat/resource/shopify_only/recurring_application_charge/usage_charge.rb +32 -0
  60. data/lib/e_plat/resource/shopify_only/recurring_application_charge.rb +47 -0
  61. data/lib/e_plat/resource/webhook.rb +50 -0
  62. data/lib/e_plat/session.rb +10 -7
  63. data/lib/e_plat/type_coercer.rb +15 -17
  64. data/lib/e_plat/version.rb +1 -1
  65. data/lib/e_plat.rb +14 -4
  66. metadata +67 -7
  67. data/lib/e_plat/resource/order/customer.rb +0 -37
@@ -20,25 +20,27 @@ module EPlat
20
20
  elsif value.nil?
21
21
  return unless type == "array" or type == "hash"
22
22
  end
23
-
23
+
24
+ safe_coerce(value, type)
25
+ end
26
+
27
+ def safe_coerce(value, type)
24
28
  case type
25
- when "array"
26
- safe_coerce(value, type)
27
- when "hash"
28
- safe_coerce(value, type)
29
- when "string"
30
- safe_coerce(value, type)
31
- when "datetime"
32
- safe_coerce(value, type)
33
29
  when "boolean"
34
30
  ActiveModel::Type::Boolean.new.cast(value)
35
- else
31
+ when "integer"
36
32
  "EPlat::Types::Coercible::#{ type.capitalize }".constantize[value]
33
+ else
34
+ value.send to_type_method(type)
37
35
  end
36
+ rescue
37
+ value
38
38
  end
39
+
39
40
 
40
- def safe_coerce(value, type)
41
- to_type_method =
41
+ private
42
+
43
+ def to_type_method(type)
42
44
  case type
43
45
  when "array"
44
46
  "to_a"
@@ -49,11 +51,7 @@ module EPlat
49
51
  when "datetime"
50
52
  "to_datetime"
51
53
  end
52
-
53
- value.send(to_type_method)
54
- rescue
55
- value
56
- end
54
+ end
57
55
 
58
56
  end
59
57
  end
@@ -1,3 +1,3 @@
1
1
  module EPlat
2
- VERSION = "0.3.0"
2
+ VERSION = "0.4.1"
3
3
  end
data/lib/e_plat.rb CHANGED
@@ -4,13 +4,15 @@ require "zeitwerk"
4
4
 
5
5
  require "active_support"
6
6
  require "activeresource"
7
-
7
+ require "activeresource-response"
8
8
  require 'dry-types'
9
+ require 'active_resource/connection_error'
9
10
  # require "e_plat/railtie" if defined?(Rails::Railtie)
10
11
 
11
12
  Zeitwerk::Loader.for_gem(warn_on_extra_files: false)
12
13
  loader = Zeitwerk::Loader.for_gem
13
14
  loader.collapse("#{__dir__}/e_plat/resource") # So can call EPlat::Product
15
+ loader.collapse("#{__dir__}/e_plat/resource/shopify_only")
14
16
  loader.collapse("#{__dir__}/e_plat/errors")
15
17
  loader.setup # ready!
16
18
 
@@ -18,11 +20,19 @@ loader.setup # ready!
18
20
 
19
21
  module EPlat
20
22
  extend Dry::Configurable
23
+ SUPPORTED_SHOPIFY_API_VERSIONS = ['2024_01']
24
+ SUPPORTED_BIGCOMMERCE_API_VERSIONS = ['3']
25
+
26
+ setting(:shopify_api_version, default: "2024_01", constructor: ->(value) do
27
+ SUPPORTED_SHOPIFY_API_VERSIONS.include?(value.underscore) ? value.underscore : raise(ArgumentError, "Shopify API version #{value} is not supported")
28
+ end)
29
+
30
+ setting(:bigcommerce_api_version, default: "v3", constructor: ->(value) do
31
+ v = value.downcase.gsub("v", "")
32
+ SUPPORTED_BIGCOMMERCE_API_VERSIONS.include?(v) ? v : raise(ArgumentError, "Bigcommerce API version #{value} is not supported")
33
+ end)
21
34
 
22
- setting(:shopify_api_version, default: "2022_07", constructor: ->(value) { value.underscore })
23
- setting(:bigcommerce_api_version, default: "v3", constructor: ->(value) { value.downcase.gsub("v", "") })
24
35
  setting(:woocommerce_api_version, default: "v3", constructor: ->(value) { value.downcase.gsub("v", "") })
25
36
 
26
-
27
37
  class Error < StandardError; end
28
38
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: e_plat
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.3.0
4
+ version: 0.4.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - oliwoodsuk
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2023-09-09 00:00:00.000000000 Z
11
+ date: 2023-12-02 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler
@@ -68,6 +68,20 @@ dependencies:
68
68
  version: '0'
69
69
  - !ruby/object:Gem::Dependency
70
70
  name: activeresource
71
+ requirement: !ruby/object:Gem::Requirement
72
+ requirements:
73
+ - - ">="
74
+ - !ruby/object:Gem::Version
75
+ version: 6.0.0
76
+ type: :runtime
77
+ prerelease: false
78
+ version_requirements: !ruby/object:Gem::Requirement
79
+ requirements:
80
+ - - ">="
81
+ - !ruby/object:Gem::Version
82
+ version: 6.0.0
83
+ - !ruby/object:Gem::Dependency
84
+ name: activeresource-response
71
85
  requirement: !ruby/object:Gem::Requirement
72
86
  requirements:
73
87
  - - ">="
@@ -164,6 +178,20 @@ dependencies:
164
178
  - - ">="
165
179
  - !ruby/object:Gem::Version
166
180
  version: '0'
181
+ - !ruby/object:Gem::Dependency
182
+ name: ruby-lsp
183
+ requirement: !ruby/object:Gem::Requirement
184
+ requirements:
185
+ - - ">="
186
+ - !ruby/object:Gem::Version
187
+ version: '0'
188
+ type: :development
189
+ prerelease: false
190
+ version_requirements: !ruby/object:Gem::Requirement
191
+ requirements:
192
+ - - ">="
193
+ - !ruby/object:Gem::Version
194
+ version: '0'
167
195
  description:
168
196
  email:
169
197
  - 55204545+oliwoodsuk@users.noreply.github.com
@@ -176,41 +204,73 @@ files:
176
204
  - Rakefile
177
205
  - app/assets/config/e_plat_manifest.js
178
206
  - config/routes.rb
207
+ - lib/active_resource/connection_error.rb
208
+ - lib/active_resource/formats.rb
179
209
  - lib/active_resource/schema.rb
180
210
  - lib/current.rb
181
211
  - lib/e_plat.rb
182
212
  - lib/e_plat/client.rb
183
213
  - lib/e_plat/client/default_request_args.rb
184
214
  - lib/e_plat/client/platform_convenience_methods.rb
215
+ - lib/e_plat/connection.rb
185
216
  - lib/e_plat/engine.rb
186
217
  - lib/e_plat/errors/incorrect_type_error.rb
187
218
  - lib/e_plat/errors/missing_migration_key_error.rb
188
219
  - lib/e_plat/errors/missing_session_error.rb
189
220
  - lib/e_plat/mapping.rb
190
221
  - lib/e_plat/mapping/base.rb
222
+ - lib/e_plat/mapping/bigcommerce/v_3/metafield.rb
223
+ - lib/e_plat/mapping/bigcommerce/v_3/order.rb
224
+ - lib/e_plat/mapping/bigcommerce/v_3/order/billing_address.rb
225
+ - lib/e_plat/mapping/bigcommerce/v_3/order/line_item.rb
226
+ - lib/e_plat/mapping/bigcommerce/v_3/order/shipping_address.rb
191
227
  - lib/e_plat/mapping/bigcommerce/v_3/product.rb
192
228
  - lib/e_plat/mapping/bigcommerce/v_3/product/image.rb
193
229
  - lib/e_plat/mapping/bigcommerce/v_3/product/variant.rb
230
+ - lib/e_plat/mapping/bigcommerce/v_3/script_tag.rb
194
231
  - lib/e_plat/mapping/bigcommerce/v_3/shop.rb
195
- - lib/e_plat/mapping/shopify/v_2022_07/product.rb
196
- - lib/e_plat/mapping/shopify/v_2022_07/product/image.rb
197
- - lib/e_plat/mapping/shopify/v_2022_07/product/variant.rb
198
- - lib/e_plat/mapping/shopify/v_2022_07/shop.rb
232
+ - lib/e_plat/mapping/bigcommerce/v_3/webhook.rb
233
+ - lib/e_plat/mapping/request_body_root.rb
234
+ - lib/e_plat/mapping/shopify/v_2024_01/metafield.rb
235
+ - lib/e_plat/mapping/shopify/v_2024_01/order.rb
236
+ - lib/e_plat/mapping/shopify/v_2024_01/order/billing_address.rb
237
+ - lib/e_plat/mapping/shopify/v_2024_01/order/shipping_address.rb
238
+ - lib/e_plat/mapping/shopify/v_2024_01/product.rb
239
+ - lib/e_plat/mapping/shopify/v_2024_01/product/image.rb
240
+ - lib/e_plat/mapping/shopify/v_2024_01/product/variant.rb
241
+ - lib/e_plat/mapping/shopify/v_2024_01/script_tag.rb
242
+ - lib/e_plat/mapping/shopify/v_2024_01/shop.rb
243
+ - lib/e_plat/mapping/shopify/v_2024_01/webhook.rb
244
+ - lib/e_plat/mapping/virtual_collection/base.rb
245
+ - lib/e_plat/mapping/virtual_collection/bigcommerce/order_line_items.rb
199
246
  - lib/e_plat/resource/attribute_interface.rb
200
247
  - lib/e_plat/resource/base.rb
248
+ - lib/e_plat/resource/collection.rb
201
249
  - lib/e_plat/resource/concerns/aliases.rb
250
+ - lib/e_plat/resource/concerns/dirty.rb
251
+ - lib/e_plat/resource/concerns/metafieldable.rb
202
252
  - lib/e_plat/resource/concerns/overwrite_instance_methods.rb
203
253
  - lib/e_plat/resource/concerns/overwrite_request_methods.rb
254
+ - lib/e_plat/resource/countable.rb
255
+ - lib/e_plat/resource/metafield.rb
204
256
  - lib/e_plat/resource/order.rb
205
- - lib/e_plat/resource/order/customer.rb
257
+ - lib/e_plat/resource/order/Consignment.rb
258
+ - lib/e_plat/resource/order/billing_address.rb
206
259
  - lib/e_plat/resource/order/fulfillment.rb
207
260
  - lib/e_plat/resource/order/line_item.rb
261
+ - lib/e_plat/resource/order/shipping_address.rb
208
262
  - lib/e_plat/resource/order/shipping_line.rb
263
+ - lib/e_plat/resource/paginated/link_headers.rb
264
+ - lib/e_plat/resource/paginated/link_params.rb
209
265
  - lib/e_plat/resource/product.rb
210
266
  - lib/e_plat/resource/product/image.rb
211
267
  - lib/e_plat/resource/product/option.rb
212
268
  - lib/e_plat/resource/product/variant.rb
269
+ - lib/e_plat/resource/script_tag.rb
213
270
  - lib/e_plat/resource/shop.rb
271
+ - lib/e_plat/resource/shopify_only/recurring_application_charge.rb
272
+ - lib/e_plat/resource/shopify_only/recurring_application_charge/usage_charge.rb
273
+ - lib/e_plat/resource/webhook.rb
214
274
  - lib/e_plat/session.rb
215
275
  - lib/e_plat/type_coercer.rb
216
276
  - lib/e_plat/types.rb
@@ -1,37 +0,0 @@
1
-
2
- module EPlat
3
- class Order::Customer < Base
4
-
5
- schema do
6
- array :addresses, item_type: :hash
7
- string :currency
8
- datetime :created_at
9
- hash :default_address
10
- string :email
11
- hash :email_marketing_consent
12
- string :first_name
13
- integer :id
14
- string :last_name
15
- integer :last_order_id
16
- string :last_order_name
17
- hash :metafield
18
- string :marketing_opt_in_level
19
- string :multipass_identifier
20
- string :note
21
- integer :orders_count
22
- string :password
23
- string :password_confirmation
24
- string :phone
25
- hash :sms_marketing_consent
26
- string :state
27
- string :tags
28
- boolean :tax_exempt
29
- array :tax_exemptions
30
- decimal :total_spent
31
- datetime :updated_at
32
- boolean :verified_email
33
- end
34
-
35
- end
36
- end
37
-