e_plat 0.3.0 → 0.4.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 (67) hide show
  1. checksums.yaml +4 -4
  2. data/README.md +630 -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 +4 -3
  66. metadata +55 -9
  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.0"
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
 
@@ -19,10 +21,9 @@ loader.setup # ready!
19
21
  module EPlat
20
22
  extend Dry::Configurable
21
23
 
22
- setting(:shopify_api_version, default: "2022_07", constructor: ->(value) { value.underscore })
24
+ setting(:shopify_api_version, default: "2024_01", constructor: ->(value) { value.underscore })
23
25
  setting(:bigcommerce_api_version, default: "v3", constructor: ->(value) { value.downcase.gsub("v", "") })
24
26
  setting(:woocommerce_api_version, default: "v3", constructor: ->(value) { value.downcase.gsub("v", "") })
25
27
 
26
-
27
28
  class Error < StandardError; end
28
29
  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.0
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-01 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler
@@ -72,14 +72,14 @@ dependencies:
72
72
  requirements:
73
73
  - - ">="
74
74
  - !ruby/object:Gem::Version
75
- version: '0'
75
+ version: 6.0.0
76
76
  type: :runtime
77
77
  prerelease: false
78
78
  version_requirements: !ruby/object:Gem::Requirement
79
79
  requirements:
80
80
  - - ">="
81
81
  - !ruby/object:Gem::Version
82
- version: '0'
82
+ version: 6.0.0
83
83
  - !ruby/object:Gem::Dependency
84
84
  name: dry-configurable
85
85
  requirement: !ruby/object:Gem::Requirement
@@ -164,6 +164,20 @@ dependencies:
164
164
  - - ">="
165
165
  - !ruby/object:Gem::Version
166
166
  version: '0'
167
+ - !ruby/object:Gem::Dependency
168
+ name: ruby-lsp
169
+ requirement: !ruby/object:Gem::Requirement
170
+ requirements:
171
+ - - ">="
172
+ - !ruby/object:Gem::Version
173
+ version: '0'
174
+ type: :development
175
+ prerelease: false
176
+ version_requirements: !ruby/object:Gem::Requirement
177
+ requirements:
178
+ - - ">="
179
+ - !ruby/object:Gem::Version
180
+ version: '0'
167
181
  description:
168
182
  email:
169
183
  - 55204545+oliwoodsuk@users.noreply.github.com
@@ -176,41 +190,73 @@ files:
176
190
  - Rakefile
177
191
  - app/assets/config/e_plat_manifest.js
178
192
  - config/routes.rb
193
+ - lib/active_resource/connection_error.rb
194
+ - lib/active_resource/formats.rb
179
195
  - lib/active_resource/schema.rb
180
196
  - lib/current.rb
181
197
  - lib/e_plat.rb
182
198
  - lib/e_plat/client.rb
183
199
  - lib/e_plat/client/default_request_args.rb
184
200
  - lib/e_plat/client/platform_convenience_methods.rb
201
+ - lib/e_plat/connection.rb
185
202
  - lib/e_plat/engine.rb
186
203
  - lib/e_plat/errors/incorrect_type_error.rb
187
204
  - lib/e_plat/errors/missing_migration_key_error.rb
188
205
  - lib/e_plat/errors/missing_session_error.rb
189
206
  - lib/e_plat/mapping.rb
190
207
  - lib/e_plat/mapping/base.rb
208
+ - lib/e_plat/mapping/bigcommerce/v_3/metafield.rb
209
+ - lib/e_plat/mapping/bigcommerce/v_3/order.rb
210
+ - lib/e_plat/mapping/bigcommerce/v_3/order/billing_address.rb
211
+ - lib/e_plat/mapping/bigcommerce/v_3/order/line_item.rb
212
+ - lib/e_plat/mapping/bigcommerce/v_3/order/shipping_address.rb
191
213
  - lib/e_plat/mapping/bigcommerce/v_3/product.rb
192
214
  - lib/e_plat/mapping/bigcommerce/v_3/product/image.rb
193
215
  - lib/e_plat/mapping/bigcommerce/v_3/product/variant.rb
216
+ - lib/e_plat/mapping/bigcommerce/v_3/script_tag.rb
194
217
  - 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
218
+ - lib/e_plat/mapping/bigcommerce/v_3/webhook.rb
219
+ - lib/e_plat/mapping/request_body_root.rb
220
+ - lib/e_plat/mapping/shopify/v_2024_01/metafield.rb
221
+ - lib/e_plat/mapping/shopify/v_2024_01/order.rb
222
+ - lib/e_plat/mapping/shopify/v_2024_01/order/billing_address.rb
223
+ - lib/e_plat/mapping/shopify/v_2024_01/order/shipping_address.rb
224
+ - lib/e_plat/mapping/shopify/v_2024_01/product.rb
225
+ - lib/e_plat/mapping/shopify/v_2024_01/product/image.rb
226
+ - lib/e_plat/mapping/shopify/v_2024_01/product/variant.rb
227
+ - lib/e_plat/mapping/shopify/v_2024_01/script_tag.rb
228
+ - lib/e_plat/mapping/shopify/v_2024_01/shop.rb
229
+ - lib/e_plat/mapping/shopify/v_2024_01/webhook.rb
230
+ - lib/e_plat/mapping/virtual_collection/base.rb
231
+ - lib/e_plat/mapping/virtual_collection/bigcommerce/order_line_items.rb
199
232
  - lib/e_plat/resource/attribute_interface.rb
200
233
  - lib/e_plat/resource/base.rb
234
+ - lib/e_plat/resource/collection.rb
201
235
  - lib/e_plat/resource/concerns/aliases.rb
236
+ - lib/e_plat/resource/concerns/dirty.rb
237
+ - lib/e_plat/resource/concerns/metafieldable.rb
202
238
  - lib/e_plat/resource/concerns/overwrite_instance_methods.rb
203
239
  - lib/e_plat/resource/concerns/overwrite_request_methods.rb
240
+ - lib/e_plat/resource/countable.rb
241
+ - lib/e_plat/resource/metafield.rb
204
242
  - lib/e_plat/resource/order.rb
205
- - lib/e_plat/resource/order/customer.rb
243
+ - lib/e_plat/resource/order/Consignment.rb
244
+ - lib/e_plat/resource/order/billing_address.rb
206
245
  - lib/e_plat/resource/order/fulfillment.rb
207
246
  - lib/e_plat/resource/order/line_item.rb
247
+ - lib/e_plat/resource/order/shipping_address.rb
208
248
  - lib/e_plat/resource/order/shipping_line.rb
249
+ - lib/e_plat/resource/paginated/link_headers.rb
250
+ - lib/e_plat/resource/paginated/link_params.rb
209
251
  - lib/e_plat/resource/product.rb
210
252
  - lib/e_plat/resource/product/image.rb
211
253
  - lib/e_plat/resource/product/option.rb
212
254
  - lib/e_plat/resource/product/variant.rb
255
+ - lib/e_plat/resource/script_tag.rb
213
256
  - lib/e_plat/resource/shop.rb
257
+ - lib/e_plat/resource/shopify_only/recurring_application_charge.rb
258
+ - lib/e_plat/resource/shopify_only/recurring_application_charge/usage_charge.rb
259
+ - lib/e_plat/resource/webhook.rb
214
260
  - lib/e_plat/session.rb
215
261
  - lib/e_plat/type_coercer.rb
216
262
  - 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
-