e_plat 0.7.4 → 0.9.1

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: d034aa67ea9c09ef394c0f55c26bb2d41032e7a8c8e958fe4fdc0d2bd24222b5
4
- data.tar.gz: 3ba4c808ae422b28a12470957f87f88283985dbaf193767e9a3d7ae5a1f9c58c
3
+ metadata.gz: dd6ef96f210a4ce19e39876714cf947410ad47c6a93794c5f06aee1d8ec1f0f4
4
+ data.tar.gz: 6b83f5036d786165bfc0a36e3a651bea55679f1cf3c2c0672adc9b3b90ca26a1
5
5
  SHA512:
6
- metadata.gz: 394fc11195351f359b3c001b11e0a7fcab32763e8c5fd24a2c0a1be811690a0d736f5393a09e1f9d566b8bbdb06553c9df699e75d08b6b15f4e0172af546d561
7
- data.tar.gz: ee2c4ad95ec889f72f0653a8167787457529ef505fcfdf31c4287b9d478914659915633e50d80b979cc22e01d506e6a108e2567966db347c87646f36236e4739
6
+ metadata.gz: 7dc8395400075cc15f5e2437257b7147ff6331dc92c78ea93377b70b85d7711d5ce0c6dd9f2557608b2425834a5d2f68881b8b62a132d1053bbfd6c102bac0ca
7
+ data.tar.gz: a5cbdad7ccfaad6d49d633225665ee920124ecf12f2a20a8533fb8244a93db0988a66a47f9e2bc081c279ee249e3e9b83caa449744cd9a2b20650027cf958534
data/README.md CHANGED
@@ -560,6 +560,7 @@ Unfortunately it's in a Time Integer format. Haven't yet got dynamic conversion
560
560
 
561
561
  <br>
562
562
  <hr>
563
+
563
564
  <br>
564
565
 
565
566
  ## API Coverage
@@ -806,6 +807,13 @@ Unfortunately it's in a Time Integer format. Haven't yet got dynamic conversion
806
807
  <br>
807
808
 
808
809
 
810
+ > [!NOTE]
811
+ > For all resources, we also have a EPlat::ShopifyWebhook::{resource} class. These use the old REST API mappings that the webhooks still use.
812
+ > At PreProduct we interact with cached webhook hashes using these classes, e.g. `EPlat::ShopifyWebhook::Product.new({...})`.
813
+ > Meaning we can safely call getter methods and access the usual EPlat schema.
814
+
815
+
816
+
809
817
 
810
818
  <hr>
811
819
  <br>
@@ -895,6 +903,8 @@ product.as_json # hash of any updated attributes
895
903
  product.as_full_json # hash of all attributes, regardless of if they've been updated or not
896
904
  product.to_json # JSON string of any updated_attributes
897
905
  product.to_full_json # JSON string of all attributes. regardless of if they've been updated or not
906
+ product.as_eplat_json # hash of all resource's EPlat attributes, values as EPlat getters produce
907
+ product.to_eplat_json # JSON of all resource's EPlat attributes, values as EPlat getters produce
898
908
 
899
909
  ```
900
910
 
@@ -97,7 +97,7 @@ module EPlat
97
97
  when :find_one
98
98
  {first: 1}
99
99
  when :find_every
100
- {first: scope || 200}
100
+ {first: scope || 20}
101
101
  end
102
102
 
103
103
  (options[:params] || {}).with_defaults(scope_arg)
@@ -48,6 +48,35 @@ module EPlat
48
48
  end
49
49
  end
50
50
 
51
+ def to_eplat_json(options = {})
52
+ root_at_top_of_json = self.mapping.include_root_in_request_body?(self)
53
+ options[:root] = self.element_name if root_at_top_of_json
54
+
55
+ result = '{'
56
+ result << as_eplat_json.map do |key, value|
57
+ "#{ActiveSupport::JSON.encode(key.to_s)}:#{ActiveSupport::JSON.encode(value, options)}"
58
+ end * ','
59
+ result << '}'
60
+ end
61
+
62
+
63
+ def as_eplat_json
64
+ schema_keys = self.class.schema.keys
65
+ schema_keys.each_with_object({}) do |key, hash|
66
+ value = send(key)
67
+
68
+ hash[key] =
69
+ if value.is_a?(Array)
70
+ value.map { |item| item.respond_to?(:as_eplat_json) ? item.as_eplat_json : item }
71
+ elsif value.respond_to?(:as_eplat_json)
72
+ value.as_eplat_json
73
+ else
74
+ value
75
+ end
76
+ end
77
+ end
78
+
79
+
51
80
  # Create and return a class definition for a resource inside the current resource
52
81
  def create_resource_for(resource_name)
53
82
  resource = Class.new(EPlat::Base) # <- this line changed
@@ -23,7 +23,7 @@ module EPlat
23
23
  end
24
24
 
25
25
  def variant_ids
26
- product.variants.map(&:id)
26
+ product&.variants&.map(&:id) || []
27
27
  end
28
28
 
29
29
  def variant_ids=(ids)
@@ -28,7 +28,8 @@ 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
+ array :option_values
32
+ # hash :image # default: {}, just for Shopify Webhooks
32
33
  end
33
34
 
34
35
  def save
@@ -36,11 +37,13 @@ module EPlat
36
37
  super
37
38
  end
38
39
 
39
- def image_src
40
+ def image_src(images=[]) # EPlat::Product::Image => string
40
41
  if client.bigcommerce?
41
42
  image_url
42
- elsif client.shopify? && client.uses_graphql_for_products?
43
- image.try(:src)
43
+ elsif is_a?(EPlat::ShopifyWebhook::Product::Variant)
44
+ images.to_a.find{ |i| i.id == image_id }.try(:src)
45
+ elsif is_a?(EPlat::Shopify::Product::Variant)
46
+ image&.src
44
47
  end
45
48
  end
46
49
 
@@ -1,3 +1,3 @@
1
1
  module EPlat
2
- VERSION = "0.7.4"
2
+ VERSION = "0.9.1"
3
3
  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.7.4
4
+ version: 0.9.1
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-31 00:00:00.000000000 Z
11
+ date: 2024-06-07 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler