magento 0.17.1 → 0.18.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.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: '0297062d52271023e5e8a7249cccff2480305b5764d8ec72ecf95d68d52a9425'
4
- data.tar.gz: ee7ef6bf9f562e0b43ba5d86112275f99654ea1483d4a4495c9af1dd0b802e4d
3
+ metadata.gz: 41955a56a9aff31abc7c7c74adcc72eb84a11e00ebef0e169b40e89e218d3d0b
4
+ data.tar.gz: d4e846e5407872f2c2909585b148c85ede8f9552456dfd18886fa791c8b2f1e5
5
5
  SHA512:
6
- metadata.gz: 152738362dececeaa477cc34fb3430cc6c436913da11f06b17cb7e8a7265350947248290ccec6533d240243d3699dce62c1d7e7921d00d32cbc14b1cefaf8d4f
7
- data.tar.gz: 0251d571439e8e2371c14c5603d3b9fbb4a45df02beae02e4c4ee406940036dfa205e51e8bf3bf8183bb957934947c2e4018cb48d59e7b1bdfcec258f49da86e
6
+ metadata.gz: 5178cf1b839df2db8fd2c5c5e9c891ebdff52f2d1ce2f896c6a3a8d0f7b607960a19cfcadfece2c53289b1637c2cc613b3632b0c8bf564513e71033d2cfcfe93
7
+ data.tar.gz: 28522d689e5c6a718275174c531e585c26cef4a07347b9ebd70346761a696cc87260aa809acc98fc0f9b883b9ee0c5140b0ecde3e19101ca426dab36227f003c
@@ -35,7 +35,7 @@ module Magento
35
35
  class << self
36
36
  extend Forwardable
37
37
 
38
- def_delegators :query, :all, :page, :per, :page_size, :order, :select,
38
+ def_delegators :query, :all, :find_each, :page, :per, :page_size, :order, :select,
39
39
  :where, :first, :find_by, :count
40
40
 
41
41
  def find(id)
@@ -2,8 +2,8 @@ module Magento
2
2
  class Product < Model
3
3
  self.primary_key = :sku
4
4
 
5
- def method_missing(m)
6
- attr(m) || super
5
+ def method_missing(m, *params, &block)
6
+ attr(m) || super(m, *params, &block)
7
7
  end
8
8
 
9
9
  # returns custom_attribute value by custom_attribute code
@@ -16,8 +16,26 @@ module Magento
16
16
  super || @custom_attributes&.any? { |a| a.attribute_code == attribute_code.to_s }
17
17
  end
18
18
 
19
+ def add_media(attributes)
20
+ self.class.add_media(sku, attributes)
21
+ end
22
+
23
+ # returns true if the media was deleted
24
+ def remove_media(media_id)
25
+ self.class.remove_media(sku, media_id)
26
+ end
27
+
19
28
  class << self
20
29
  alias_method :find_by_sku, :find
30
+
31
+ def add_media(sku, attributes)
32
+ request.post("products/#{sku}/media", { entry: attributes }).parse
33
+ end
34
+
35
+ # returns true if the media was deleted
36
+ def remove_media(sku, media_id)
37
+ request.delete("products/#{sku}/media/#{media_id}").parse
38
+ end
21
39
  end
22
40
  end
23
41
  end
@@ -58,7 +58,7 @@ module Magento
58
58
  alias_method :per, :page_size
59
59
 
60
60
  def select(*fields)
61
- fields = fields.map { |field| parse_field(field) }
61
+ fields = fields.map { |field| parse_field(field, root: true) }
62
62
 
63
63
  if model == Magento::Category
64
64
  self.fields = "children_data[#{fields.join(',')}]"
@@ -92,6 +92,28 @@ module Magento
92
92
  end
93
93
  end
94
94
 
95
+ #
96
+ # Loop all products on each page, starting from the first to the last page
97
+ def find_each
98
+ if @model == Magento::Category
99
+ raise NoMethodError, 'undefined method `find_each` for Magento::Category'
100
+ end
101
+
102
+ @current_page = 1
103
+
104
+ loop do
105
+ redords = all
106
+
107
+ redords.each do |record|
108
+ yield record
109
+ end
110
+
111
+ break if redords.last_page?
112
+
113
+ @current_page = redords.next_page
114
+ end
115
+ end
116
+
95
117
  def first
96
118
  page_size(1).page(1).all.first
97
119
  end
@@ -149,8 +171,8 @@ module Magento
149
171
  value
150
172
  end
151
173
 
152
- def parse_field(value)
153
- return verify_id(value) unless value.is_a? Hash
174
+ def parse_field(value, root: false)
175
+ return (root ? verify_id(value) : value) unless value.is_a? Hash
154
176
 
155
177
  value.map do |k, v|
156
178
  fields = v.is_a?(Array) ? v.map { |field| parse_field(field) } : [parse_field(v)]
@@ -1,3 +1,3 @@
1
1
  module Magento
2
- VERSION = '0.17.1'
2
+ VERSION = '0.18.0'
3
3
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: magento
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.17.1
4
+ version: 0.18.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Wallas Faria