e_plat 0.3.0 → 0.4.1

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 (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
-