e_plat 0.2.4 → 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 (70) hide show
  1. checksums.yaml +4 -4
  2. data/README.md +633 -135
  3. data/lib/active_resource/connection_error.rb +29 -0
  4. data/lib/active_resource/formats.rb +27 -0
  5. data/lib/current.rb +7 -0
  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/errors/missing_session_error.rb +1 -1
  10. data/lib/e_plat/mapping/base.rb +119 -12
  11. data/lib/e_plat/mapping/bigcommerce/v_3/metafield.rb +62 -0
  12. data/lib/e_plat/mapping/bigcommerce/v_3/order/billing_address.rb +14 -0
  13. data/lib/e_plat/mapping/bigcommerce/v_3/order/line_item.rb +85 -0
  14. data/lib/e_plat/mapping/bigcommerce/v_3/order/shipping_address.rb +73 -0
  15. data/lib/e_plat/mapping/bigcommerce/v_3/order.rb +160 -0
  16. data/lib/e_plat/mapping/bigcommerce/v_3/product/image.rb +12 -12
  17. data/lib/e_plat/mapping/bigcommerce/v_3/product/variant.rb +1 -1
  18. data/lib/e_plat/mapping/bigcommerce/v_3/script_tag.rb +78 -0
  19. data/lib/e_plat/mapping/bigcommerce/v_3/shop.rb +11 -6
  20. data/lib/e_plat/mapping/bigcommerce/v_3/webhook.rb +54 -0
  21. data/lib/e_plat/mapping/request_body_root.rb +38 -0
  22. data/lib/e_plat/mapping/shopify/v_2024_01/metafield.rb +26 -0
  23. data/lib/e_plat/mapping/shopify/v_2024_01/order/billing_address.rb +14 -0
  24. data/lib/e_plat/mapping/shopify/v_2024_01/order/shipping_address.rb +30 -0
  25. data/lib/e_plat/mapping/shopify/{v_2022_07/product.rb → v_2024_01/order.rb} +3 -3
  26. data/lib/e_plat/mapping/shopify/{v_2022_07 → v_2024_01}/product/image.rb +1 -1
  27. data/lib/e_plat/mapping/shopify/{v_2022_07 → v_2024_01}/product/variant.rb +2 -1
  28. data/lib/e_plat/mapping/shopify/v_2024_01/product.rb +26 -0
  29. data/lib/e_plat/mapping/shopify/v_2024_01/script_tag.rb +26 -0
  30. data/lib/e_plat/mapping/shopify/{v_2022_07 → v_2024_01}/shop.rb +1 -1
  31. data/lib/e_plat/mapping/shopify/v_2024_01/webhook.rb +29 -0
  32. data/lib/e_plat/mapping/virtual_collection/base.rb +14 -0
  33. data/lib/e_plat/mapping/virtual_collection/bigcommerce/order_line_items.rb +297 -0
  34. data/lib/e_plat/mapping.rb +3 -3
  35. data/lib/e_plat/resource/attribute_interface.rb +28 -28
  36. data/lib/e_plat/resource/base.rb +107 -68
  37. data/lib/e_plat/resource/collection.rb +92 -0
  38. data/lib/e_plat/resource/concerns/aliases.rb +102 -18
  39. data/lib/e_plat/resource/concerns/dirty.rb +54 -0
  40. data/lib/e_plat/resource/concerns/metafieldable.rb +43 -0
  41. data/lib/e_plat/resource/concerns/overwrite_instance_methods.rb +108 -6
  42. data/lib/e_plat/resource/concerns/overwrite_request_methods.rb +73 -37
  43. data/lib/e_plat/resource/countable.rb +43 -0
  44. data/lib/e_plat/resource/metafield.rb +70 -0
  45. data/lib/e_plat/resource/order/Consignment.rb +8 -0
  46. data/lib/e_plat/resource/order/billing_address.rb +6 -0
  47. data/lib/e_plat/resource/order/fulfillment.rb +1 -0
  48. data/lib/e_plat/resource/order/line_item.rb +1 -0
  49. data/lib/e_plat/resource/order/shipping_address.rb +44 -0
  50. data/lib/e_plat/resource/order/shipping_line.rb +15 -14
  51. data/lib/e_plat/resource/order.rb +32 -0
  52. data/lib/e_plat/resource/paginated/link_headers.rb +42 -0
  53. data/lib/e_plat/resource/paginated/link_params.rb +26 -0
  54. data/lib/e_plat/resource/product/image.rb +6 -0
  55. data/lib/e_plat/resource/product/option.rb +1 -0
  56. data/lib/e_plat/resource/product/variant.rb +8 -12
  57. data/lib/e_plat/resource/product.rb +8 -2
  58. data/lib/e_plat/resource/script_tag.rb +56 -0
  59. data/lib/e_plat/resource/shop.rb +17 -13
  60. data/lib/e_plat/resource/shopify_only/recurring_application_charge/usage_charge.rb +32 -0
  61. data/lib/e_plat/resource/shopify_only/recurring_application_charge.rb +47 -0
  62. data/lib/e_plat/resource/webhook.rb +50 -0
  63. data/lib/e_plat/session.rb +14 -14
  64. data/lib/e_plat/type_coercer.rb +15 -17
  65. data/lib/e_plat/types.rb +1 -1
  66. data/lib/e_plat/version.rb +1 -1
  67. data/lib/e_plat.rb +4 -4
  68. metadata +51 -19
  69. data/lib/e_plat/resource/order/customer.rb +0 -37
  70. data/lib/e_plat/session_state.rb +0 -25
@@ -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
data/lib/e_plat/types.rb CHANGED
@@ -1,7 +1,7 @@
1
1
 
2
2
  module EPlat
3
3
  module Types
4
- include Dry.Types()
4
+ include Dry.Types() #used in some typecasting
5
5
  end
6
6
  end
7
7
 
@@ -1,3 +1,3 @@
1
1
  module EPlat
2
- VERSION = "0.2.4"
2
+ VERSION = "0.4.0"
3
3
  end
data/lib/e_plat.rb CHANGED
@@ -4,14 +4,15 @@ require "zeitwerk"
4
4
 
5
5
  require "active_support"
6
6
  require "activeresource"
7
-
8
- require 'dry/effects'
7
+ require "activeresource-response"
9
8
  require 'dry-types'
9
+ require 'active_resource/connection_error'
10
10
  # require "e_plat/railtie" if defined?(Rails::Railtie)
11
11
 
12
12
  Zeitwerk::Loader.for_gem(warn_on_extra_files: false)
13
13
  loader = Zeitwerk::Loader.for_gem
14
14
  loader.collapse("#{__dir__}/e_plat/resource") # So can call EPlat::Product
15
+ loader.collapse("#{__dir__}/e_plat/resource/shopify_only")
15
16
  loader.collapse("#{__dir__}/e_plat/errors")
16
17
  loader.setup # ready!
17
18
 
@@ -20,10 +21,9 @@ loader.setup # ready!
20
21
  module EPlat
21
22
  extend Dry::Configurable
22
23
 
23
- setting(:shopify_api_version, default: "2022_07", constructor: ->(value) { value.underscore })
24
+ setting(:shopify_api_version, default: "2024_01", constructor: ->(value) { value.underscore })
24
25
  setting(:bigcommerce_api_version, default: "v3", constructor: ->(value) { value.downcase.gsub("v", "") })
25
26
  setting(:woocommerce_api_version, default: "v3", constructor: ->(value) { value.downcase.gsub("v", "") })
26
27
 
27
-
28
28
  class Error < StandardError; end
29
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.2.4
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-05-31 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
@@ -123,21 +123,21 @@ dependencies:
123
123
  - !ruby/object:Gem::Version
124
124
  version: '0'
125
125
  - !ruby/object:Gem::Dependency
126
- name: dry-effects
126
+ name: webmock
127
127
  requirement: !ruby/object:Gem::Requirement
128
128
  requirements:
129
- - - '='
129
+ - - ">="
130
130
  - !ruby/object:Gem::Version
131
- version: '0.4'
132
- type: :runtime
131
+ version: '0'
132
+ type: :development
133
133
  prerelease: false
134
134
  version_requirements: !ruby/object:Gem::Requirement
135
135
  requirements:
136
- - - '='
136
+ - - ">="
137
137
  - !ruby/object:Gem::Version
138
- version: '0.4'
138
+ version: '0'
139
139
  - !ruby/object:Gem::Dependency
140
- name: webmock
140
+ name: vcr
141
141
  requirement: !ruby/object:Gem::Requirement
142
142
  requirements:
143
143
  - - ">="
@@ -151,7 +151,7 @@ dependencies:
151
151
  - !ruby/object:Gem::Version
152
152
  version: '0'
153
153
  - !ruby/object:Gem::Dependency
154
- name: vcr
154
+ name: dotenv-rails
155
155
  requirement: !ruby/object:Gem::Requirement
156
156
  requirements:
157
157
  - - ">="
@@ -165,7 +165,7 @@ dependencies:
165
165
  - !ruby/object:Gem::Version
166
166
  version: '0'
167
167
  - !ruby/object:Gem::Dependency
168
- name: dotenv-rails
168
+ name: ruby-lsp
169
169
  requirement: !ruby/object:Gem::Requirement
170
170
  requirements:
171
171
  - - ">="
@@ -190,42 +190,74 @@ files:
190
190
  - Rakefile
191
191
  - app/assets/config/e_plat_manifest.js
192
192
  - config/routes.rb
193
+ - lib/active_resource/connection_error.rb
194
+ - lib/active_resource/formats.rb
193
195
  - lib/active_resource/schema.rb
196
+ - lib/current.rb
194
197
  - lib/e_plat.rb
195
198
  - lib/e_plat/client.rb
196
199
  - lib/e_plat/client/default_request_args.rb
197
200
  - lib/e_plat/client/platform_convenience_methods.rb
201
+ - lib/e_plat/connection.rb
198
202
  - lib/e_plat/engine.rb
199
203
  - lib/e_plat/errors/incorrect_type_error.rb
200
204
  - lib/e_plat/errors/missing_migration_key_error.rb
201
205
  - lib/e_plat/errors/missing_session_error.rb
202
206
  - lib/e_plat/mapping.rb
203
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
204
213
  - lib/e_plat/mapping/bigcommerce/v_3/product.rb
205
214
  - lib/e_plat/mapping/bigcommerce/v_3/product/image.rb
206
215
  - lib/e_plat/mapping/bigcommerce/v_3/product/variant.rb
216
+ - lib/e_plat/mapping/bigcommerce/v_3/script_tag.rb
207
217
  - lib/e_plat/mapping/bigcommerce/v_3/shop.rb
208
- - lib/e_plat/mapping/shopify/v_2022_07/product.rb
209
- - lib/e_plat/mapping/shopify/v_2022_07/product/image.rb
210
- - lib/e_plat/mapping/shopify/v_2022_07/product/variant.rb
211
- - 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
212
232
  - lib/e_plat/resource/attribute_interface.rb
213
233
  - lib/e_plat/resource/base.rb
234
+ - lib/e_plat/resource/collection.rb
214
235
  - lib/e_plat/resource/concerns/aliases.rb
236
+ - lib/e_plat/resource/concerns/dirty.rb
237
+ - lib/e_plat/resource/concerns/metafieldable.rb
215
238
  - lib/e_plat/resource/concerns/overwrite_instance_methods.rb
216
239
  - lib/e_plat/resource/concerns/overwrite_request_methods.rb
240
+ - lib/e_plat/resource/countable.rb
241
+ - lib/e_plat/resource/metafield.rb
217
242
  - lib/e_plat/resource/order.rb
218
- - lib/e_plat/resource/order/customer.rb
243
+ - lib/e_plat/resource/order/Consignment.rb
244
+ - lib/e_plat/resource/order/billing_address.rb
219
245
  - lib/e_plat/resource/order/fulfillment.rb
220
246
  - lib/e_plat/resource/order/line_item.rb
247
+ - lib/e_plat/resource/order/shipping_address.rb
221
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
222
251
  - lib/e_plat/resource/product.rb
223
252
  - lib/e_plat/resource/product/image.rb
224
253
  - lib/e_plat/resource/product/option.rb
225
254
  - lib/e_plat/resource/product/variant.rb
255
+ - lib/e_plat/resource/script_tag.rb
226
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
227
260
  - lib/e_plat/session.rb
228
- - lib/e_plat/session_state.rb
229
261
  - lib/e_plat/type_coercer.rb
230
262
  - lib/e_plat/types.rb
231
263
  - lib/e_plat/version.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
-
@@ -1,25 +0,0 @@
1
-
2
- module EPlat
3
- module SessionState
4
- extend ActiveSupport::Concern
5
- include Dry::Effects::Handler.State(:e_plat_session)
6
-
7
- included do
8
- around_action(:set_e_plat_session) if respond_to?(:around_action)
9
- end
10
-
11
-
12
- private
13
-
14
- def set_e_plat_session
15
- with_e_plat_session(e_plat_session) { yield }
16
- end
17
-
18
- def e_plat_session
19
- # create empty client.
20
- # Will be populated later by EPlat::Session.new(..) if needed
21
- EPlat::Client.new()
22
- end
23
-
24
- end
25
- end