e_plat 0.7.2 → 0.7.4
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.
- checksums.yaml +4 -4
- data/README.md +5 -1
- data/lib/e_plat/client.rb +1 -0
- data/lib/e_plat/resource/base.rb +15 -6
- data/lib/e_plat/resource/concerns/graph_q_lable.rb +1 -1
- data/lib/e_plat/resource/concerns/overwrite_instance_methods.rb +1 -1
- data/lib/e_plat/resource/concerns/overwrite_request_methods.rb +10 -0
- data/lib/e_plat/resource/platform_specific/shopify/product/variant.rb +1 -1
- data/lib/e_plat/resource/platform_specific/shopify_webhook/metafield.rb +4 -0
- data/lib/e_plat/resource/platform_specific/shopify_webhook/order/Consignment.rb +2 -0
- data/lib/e_plat/resource/platform_specific/shopify_webhook/order/billing_address.rb +2 -0
- data/lib/e_plat/resource/platform_specific/shopify_webhook/order/fulfillment.rb +2 -0
- data/lib/e_plat/resource/platform_specific/shopify_webhook/order/line_item.rb +2 -0
- data/lib/e_plat/resource/platform_specific/shopify_webhook/order/shipping_address.rb +2 -0
- data/lib/e_plat/resource/platform_specific/shopify_webhook/order/shipping_line.rb +2 -0
- data/lib/e_plat/resource/platform_specific/shopify_webhook/order.rb +6 -0
- data/lib/e_plat/resource/platform_specific/shopify_webhook/product/image.rb +7 -0
- data/lib/e_plat/resource/platform_specific/shopify_webhook/product/option.rb +9 -0
- data/lib/e_plat/resource/platform_specific/shopify_webhook/product/variant/option_value.rb +7 -0
- data/lib/e_plat/resource/platform_specific/shopify_webhook/product/variant.rb +9 -0
- data/lib/e_plat/resource/platform_specific/shopify_webhook/product.rb +14 -0
- data/lib/e_plat/resource/platform_specific/shopify_webhook/recurring_application_charge/usage_charge.rb +2 -0
- data/lib/e_plat/resource/platform_specific/shopify_webhook/recurring_application_charge.rb +6 -0
- data/lib/e_plat/resource/platform_specific/shopify_webhook/script_tag.rb +4 -0
- data/lib/e_plat/resource/platform_specific/shopify_webhook/shop.rb +4 -0
- data/lib/e_plat/resource/platform_specific/shopify_webhook/webhook.rb +4 -0
- data/lib/e_plat/resource/product/image.rb +1 -0
- data/lib/e_plat/resource/product/variant.rb +10 -0
- data/lib/e_plat/version.rb +1 -1
- metadata +20 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: d034aa67ea9c09ef394c0f55c26bb2d41032e7a8c8e958fe4fdc0d2bd24222b5
|
4
|
+
data.tar.gz: 3ba4c808ae422b28a12470957f87f88283985dbaf193767e9a3d7ae5a1f9c58c
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 394fc11195351f359b3c001b11e0a7fcab32763e8c5fd24a2c0a1be811690a0d736f5393a09e1f9d566b8bbdb06553c9df699e75d08b6b15f4e0172af546d561
|
7
|
+
data.tar.gz: ee2c4ad95ec889f72f0653a8167787457529ef505fcfdf31c4287b9d478914659915633e50d80b979cc22e01d506e6a108e2567966db347c87646f36236e4739
|
data/README.md
CHANGED
@@ -267,6 +267,10 @@ EPlat is designed to let you mostly use it's universal interface, but then easil
|
|
267
267
|
| inventory_quantity | integer | getter only: node.inventoryQuantity | inventory_level | nil |
|
268
268
|
| tax_code | string | * | nil | nil |
|
269
269
|
| requires_shipping | boolean | InventoryItem[requiresShipping] | nil | nil |
|
270
|
+
|
271
|
+
helper methods: <br>
|
272
|
+
`image_src` => `String | nil`, platforms supported: Shopify, Bigcommerce
|
273
|
+
|
270
274
|
*Bigcommerce variant.title= setter is not supported
|
271
275
|
|
272
276
|
|
@@ -290,7 +294,6 @@ EPlat is designed to let you mostly use it's universal interface, but then easil
|
|
290
294
|
| width | integer | * | nil | nil |
|
291
295
|
| height | integer | * | nil | nil |
|
292
296
|
| src | string | * | url_standard | nil |
|
293
|
-
| variant_ids | array | * | nil | nil |
|
294
297
|
|
295
298
|
|
296
299
|
### EPlat::Product::Variant::OptionValue
|
@@ -835,6 +838,7 @@ EPlat::Product.find(my_id).destroy
|
|
835
838
|
product = EPlat::Product.new(title: 't-shirt')
|
836
839
|
product.save # true or false
|
837
840
|
product.errors # active record like errors if .save returned false
|
841
|
+
product.formatted_id #returns the resource ID in the platform's format. i.e. Shopify Product would be "gid://shopify/Product/xxx", Shopify Order would be 123, BC order: 123
|
838
842
|
|
839
843
|
product.full_response # <Net::HTTPOK>
|
840
844
|
product.headers # { "date"=>"Fri, 17 Nov 2023 14:25:53 GMT", ...}
|
data/lib/e_plat/client.rb
CHANGED
@@ -23,6 +23,7 @@ module EPlat
|
|
23
23
|
# needs to return nil if there isn't a more specific class than the klass passed in
|
24
24
|
def platform_klass(klass)
|
25
25
|
return if klass.to_s.include? "EPlat::#{platform.capitalize}"
|
26
|
+
|
26
27
|
platform_specific_class_name = klass.to_s.gsub("EPlat::", "EPlat::#{platform.capitalize}::")
|
27
28
|
|
28
29
|
platform_specific_class = platform_specific_class_name.safe_constantize
|
data/lib/e_plat/resource/base.rb
CHANGED
@@ -8,6 +8,7 @@ module EPlat
|
|
8
8
|
|
9
9
|
self.connection_class = EPlat::Connection
|
10
10
|
self.collection_parser = EPlat::Collection
|
11
|
+
self.timeout = 10
|
11
12
|
self.site = "/" # this is overwritten below in initialize_singleton! when EPlat::Session is initialized
|
12
13
|
add_response_method :full_response #full response of the request
|
13
14
|
|
@@ -17,7 +18,7 @@ module EPlat
|
|
17
18
|
attr_accessor :read_only
|
18
19
|
|
19
20
|
threadsafe_attribute :_headers, :_connection, :_user, :_password, :_bearer_token, :_site, :_proxy, # active resource
|
20
|
-
:mapping, :include_root_in_json, :include_format_in_path # e_plat specific
|
21
|
+
:mapping, :include_root_in_json, :include_format_in_path, :mapping_class # e_plat specific
|
21
22
|
|
22
23
|
def inherited(subclass)
|
23
24
|
super
|
@@ -32,7 +33,7 @@ module EPlat
|
|
32
33
|
self.timeout = 5
|
33
34
|
self.include_format_in_path = client.include_format_in_path?
|
34
35
|
self.mapping = mapping_instance
|
35
|
-
|
36
|
+
|
36
37
|
client.platform_headers.each {|name, value| self.headers[name] = value}
|
37
38
|
end
|
38
39
|
|
@@ -70,12 +71,18 @@ module EPlat
|
|
70
71
|
def platform_specific_class?
|
71
72
|
self.class.to_s.include? client.platform.to_s.capitalize
|
72
73
|
end
|
74
|
+
|
75
|
+
def cached_shopify_webhook?
|
76
|
+
self.to_s.include?("EPlat::ShopifyWebhook")
|
77
|
+
end
|
78
|
+
|
73
79
|
|
74
80
|
private
|
75
81
|
|
76
82
|
def mapping_instance
|
77
|
-
|
78
|
-
|
83
|
+
api_version = (client.shopify? && self.to_s.include?("EPlat::ShopifyWebhook")) ? "2024_01" : client.api_version
|
84
|
+
mapping_class_name = "EPlat::Mapping::#{ client.platform.capitalize }::V#{ api_version.camelize }::#{ element_name.classify }"
|
85
|
+
|
79
86
|
EPlat::Mapping.new_instance(specifc_mapping: mapping_class_name, resource: nil)
|
80
87
|
end
|
81
88
|
|
@@ -129,7 +136,7 @@ module EPlat
|
|
129
136
|
top_level_resource?
|
130
137
|
end
|
131
138
|
|
132
|
-
def formatted_id
|
139
|
+
def formatted_id
|
133
140
|
return id unless client.shopify? && client.api_version != "2024_01"
|
134
141
|
return if id.to_s.include?("gid://")
|
135
142
|
|
@@ -163,7 +170,9 @@ module EPlat
|
|
163
170
|
|
164
171
|
def mapping_instance
|
165
172
|
class_constant_string = self.class.to_s.gsub("EPlat::", "")
|
166
|
-
|
173
|
+
class_constant_string.gsub!("ShopifyWebhook", "Shopify")
|
174
|
+
api_version = (client.shopify? && self.class.to_s.include?("EPlat::ShopifyWebhook")) ? "2024_01" : client.api_version
|
175
|
+
mapping_class_name = "EPlat::Mapping::#{ client.platform.capitalize }::V#{ api_version.camelize }::#{ class_constant_string }"
|
167
176
|
|
168
177
|
EPlat::Mapping.new_instance(specifc_mapping: mapping_class_name, resource: self)
|
169
178
|
end
|
@@ -236,7 +236,7 @@ module EPlat
|
|
236
236
|
additional_graphql = self.class.before_graphql_callbacks[action.to_sym]&.call(self)
|
237
237
|
input =
|
238
238
|
if action == :delete
|
239
|
-
self.is_a?(EPlat::Product::Variant) ? graphql_input.new(id: formatted_id
|
239
|
+
self.is_a?(EPlat::Product::Variant) ? graphql_input.new(id: formatted_id) : graphql_input.new({id: formatted_id})
|
240
240
|
else
|
241
241
|
graphql_input.new mapping.via_native_attributes_where_possible(self.class.remove_root_from as_json)
|
242
242
|
end
|
@@ -90,7 +90,7 @@ module EPlat
|
|
90
90
|
def unrepresented_collection_ids(key, array_of_hashes)
|
91
91
|
return [] unless client.can_update_nested_resources?
|
92
92
|
|
93
|
-
all_instance_ids = send(key).map{|resource| resource.formatted_id
|
93
|
+
all_instance_ids = send(key).map{|resource| resource.formatted_id} || []
|
94
94
|
represented_instance_ids = array_of_hashes.map{|item| item["id"] }
|
95
95
|
|
96
96
|
all_instance_ids.compact - represented_instance_ids.compact
|
@@ -9,6 +9,7 @@ module EPlat
|
|
9
9
|
module ClassMethods
|
10
10
|
def find(*arguments)
|
11
11
|
client = EPlat::Current.e_plat_session
|
12
|
+
cached_shopify_webhook_warning if cached_shopify_webhook?
|
12
13
|
|
13
14
|
if client.platform_klass(self) and not platform_specific_class?
|
14
15
|
client.platform_klass(self).find(*arguments)
|
@@ -54,6 +55,7 @@ module EPlat
|
|
54
55
|
|
55
56
|
def create(attributes = {})
|
56
57
|
client = EPlat::Current.e_plat_session
|
58
|
+
cached_shopify_webhook_warning if cached_shopify_webhook?
|
57
59
|
|
58
60
|
if client.platform_klass(self)
|
59
61
|
client.platform_klass(self).create(attributes)
|
@@ -66,6 +68,7 @@ module EPlat
|
|
66
68
|
|
67
69
|
def update(attributes = {})
|
68
70
|
client = EPlat::Current.e_plat_session
|
71
|
+
cached_shopify_webhook_warning if cached_shopify_webhook?
|
69
72
|
|
70
73
|
if client.platform_klass(self)
|
71
74
|
client.platform_klass(self).update(attributes)
|
@@ -79,6 +82,7 @@ module EPlat
|
|
79
82
|
|
80
83
|
def delete(id, options = {})
|
81
84
|
client = EPlat::Current.e_plat_session
|
85
|
+
cached_shopify_webhook_warning if cached_shopify_webhook?
|
82
86
|
|
83
87
|
if client.platform_klass(self)
|
84
88
|
client.platform_klass(self).delete(id, options)
|
@@ -90,6 +94,7 @@ module EPlat
|
|
90
94
|
|
91
95
|
def exists?(id, options = {})
|
92
96
|
client = EPlat::Current.e_plat_session
|
97
|
+
cached_shopify_webhook_warning if cached_shopify_webhook?
|
93
98
|
|
94
99
|
if client.platform_klass(self)
|
95
100
|
client.platform_klass(self).exists?(id, options)
|
@@ -109,6 +114,11 @@ module EPlat
|
|
109
114
|
class_constant_string = self.name.gsub("EPlat::", "")
|
110
115
|
"EPlat::Mapping::#{client.platform.capitalize}::V#{client.api_version.camelize}::#{class_constant_string}"
|
111
116
|
end
|
117
|
+
|
118
|
+
def cached_shopify_webhook_warning
|
119
|
+
warn "***EPlat Warning this is a cached webhook. request a live resource instead to request with***"
|
120
|
+
end
|
121
|
+
|
112
122
|
end
|
113
123
|
|
114
124
|
|
@@ -0,0 +1,14 @@
|
|
1
|
+
|
2
|
+
module EPlat::ShopifyWebhook
|
3
|
+
class Product < EPlat::Product
|
4
|
+
has_many :variants, class_name: "EPlat::ShopifyWebhook::Product::Variant"
|
5
|
+
has_many :images, class_name: "EPlat::ShopifyWebhook::Product::Image"
|
6
|
+
has_many :options, class_name: "EPlat::ShopifyWebhook::Product::Option"
|
7
|
+
|
8
|
+
def self.graphql_fields
|
9
|
+
warn "this is a cached webhook. request a live resource instead"
|
10
|
+
EPlat::Shopify::Product.graphql_fields
|
11
|
+
end
|
12
|
+
|
13
|
+
end
|
14
|
+
end
|
@@ -28,12 +28,22 @@ module EPlat
|
|
28
28
|
string :tax_code
|
29
29
|
boolean :requires_shipping
|
30
30
|
string :admin_graphql_api_id
|
31
|
+
hash :image # default: {}, just for Shopify Webhooks
|
31
32
|
end
|
32
33
|
|
33
34
|
def save
|
34
35
|
prefix_options[:product] ||= try(:product)&.id
|
35
36
|
super
|
36
37
|
end
|
38
|
+
|
39
|
+
def image_src
|
40
|
+
if client.bigcommerce?
|
41
|
+
image_url
|
42
|
+
elsif client.shopify? && client.uses_graphql_for_products?
|
43
|
+
image.try(:src)
|
44
|
+
end
|
45
|
+
end
|
46
|
+
|
37
47
|
end
|
38
48
|
end
|
39
49
|
end
|
data/lib/e_plat/version.rb
CHANGED
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.7.
|
4
|
+
version: 0.7.4
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- oliwoodsuk
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2024-05-
|
11
|
+
date: 2024-05-31 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bundler
|
@@ -382,6 +382,24 @@ files:
|
|
382
382
|
- lib/e_plat/resource/platform_specific/shopify/script_tag.rb
|
383
383
|
- lib/e_plat/resource/platform_specific/shopify/shop.rb
|
384
384
|
- lib/e_plat/resource/platform_specific/shopify/webhook.rb
|
385
|
+
- lib/e_plat/resource/platform_specific/shopify_webhook/metafield.rb
|
386
|
+
- lib/e_plat/resource/platform_specific/shopify_webhook/order.rb
|
387
|
+
- lib/e_plat/resource/platform_specific/shopify_webhook/order/Consignment.rb
|
388
|
+
- lib/e_plat/resource/platform_specific/shopify_webhook/order/billing_address.rb
|
389
|
+
- lib/e_plat/resource/platform_specific/shopify_webhook/order/fulfillment.rb
|
390
|
+
- lib/e_plat/resource/platform_specific/shopify_webhook/order/line_item.rb
|
391
|
+
- lib/e_plat/resource/platform_specific/shopify_webhook/order/shipping_address.rb
|
392
|
+
- lib/e_plat/resource/platform_specific/shopify_webhook/order/shipping_line.rb
|
393
|
+
- lib/e_plat/resource/platform_specific/shopify_webhook/product.rb
|
394
|
+
- lib/e_plat/resource/platform_specific/shopify_webhook/product/image.rb
|
395
|
+
- lib/e_plat/resource/platform_specific/shopify_webhook/product/option.rb
|
396
|
+
- lib/e_plat/resource/platform_specific/shopify_webhook/product/variant.rb
|
397
|
+
- lib/e_plat/resource/platform_specific/shopify_webhook/product/variant/option_value.rb
|
398
|
+
- lib/e_plat/resource/platform_specific/shopify_webhook/recurring_application_charge.rb
|
399
|
+
- lib/e_plat/resource/platform_specific/shopify_webhook/recurring_application_charge/usage_charge.rb
|
400
|
+
- lib/e_plat/resource/platform_specific/shopify_webhook/script_tag.rb
|
401
|
+
- lib/e_plat/resource/platform_specific/shopify_webhook/shop.rb
|
402
|
+
- lib/e_plat/resource/platform_specific/shopify_webhook/webhook.rb
|
385
403
|
- lib/e_plat/resource/product.rb
|
386
404
|
- lib/e_plat/resource/product/image.rb
|
387
405
|
- lib/e_plat/resource/product/option.rb
|