magento 0.4.4 → 0.5.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: af61beeba0846cab8e23f29034500fe562898978552a23da76e0024fd7a93fa1
4
- data.tar.gz: cdcffc887ee8a9b420b9d8262744b248d8b31330a938a64704a95a392e7f7bc1
3
+ metadata.gz: 5a31c9d80a9b75142710a4eaca0c87e47ac32c9fc0589ce967cebd450350a4e2
4
+ data.tar.gz: 16e930d0a17ccab6e520e75e4a87da495caee97977c6ed61b59b5ed046c82485
5
5
  SHA512:
6
- metadata.gz: b1643ee9ac6bf85537296ea21b2968c9926d896b59c571fc18807736d98eaa9e4f8fe1578754a34012d56b11304c32d5c8a9f38d8a32ea4ae3d750011f3a1e01
7
- data.tar.gz: 44cceb73112da8dcebff5233ffec93a34dac3bc56126871b768a8ab8306044e42395bfd7b5c2fa8a77cfb911403253f60e84c84981ef17398387f4ff89d9a4a8
6
+ metadata.gz: ed64d3a633a8d5e4cfd6eac464ff4d3bfc85c5105c5a2f83a4dc8d739710d584fa9ca35a17f49ea49eeadd01e3aadc6d1c6c48e3f46fbe085544b3ada8e518b4
7
+ data.tar.gz: 9ad6ce4e8e29c15eea332371f3c73b9d0c342d97b540a764ae7e8f6f03244e087e44fd72e8f1bd5e50cb5fc5b22327f9b2ee55369261ea9efa1208fc13527209
data/README.md CHANGED
@@ -5,7 +5,7 @@
5
5
  Add in your Gemfile
6
6
 
7
7
  ```rb
8
- gem 'magento', '~> 0.4.4'
8
+ gem 'magento', '~> 0.5.0'
9
9
  ```
10
10
 
11
11
  or run
@@ -257,6 +257,25 @@ product.delete
257
257
  Magento::Product.delete('sku-teste')
258
258
  ```
259
259
 
260
+ ## GuestCart
261
+
262
+ Set payment information to finish the order
263
+ ```rb
264
+ cart = Magento::GuestCart.find('gXsepZcgJbY8RCJXgGioKOO9iBCR20r7')
265
+
266
+ # or use "build" to not request information from the magento API
267
+ cart = Magento::GuestCart.build(
268
+ cart_id: 'aj8oUtY1Qi44Fror6UWVN7ftX1idbBKN'
269
+ )
270
+
271
+ cart.payment_information(
272
+ email: 'customer@gmail.com',
273
+ payment: { method: 'cashondelivery' }
274
+ )
275
+
276
+ >> "234575" # return the order id
277
+ ```
278
+
260
279
  ___
261
280
 
262
281
  ##TODO:
@@ -1,43 +1,44 @@
1
- # frozen_string_literal: true
2
-
3
- require 'time'
4
- require 'dry/inflector'
5
-
6
- require_relative 'magento/errors'
7
- require_relative 'magento/request'
8
- require_relative 'magento/model'
9
- require_relative 'magento/model_mapper'
10
- require_relative 'magento/record_collection'
11
- require_relative 'magento/query'
12
- require_relative 'magento/category'
13
- require_relative 'magento/product'
14
- require_relative 'magento/country'
15
- require_relative 'magento/customer'
16
- require_relative 'magento/order'
17
-
18
- Dir[File.expand_path('magento/shared/*.rb', __dir__)].map { |f| require f }
19
-
20
- module Magento
21
- class << self
22
- attr_accessor :url, :open_timeout, :timeout, :token, :store
23
-
24
- def inflector
25
- @inflector ||= Dry::Inflector.new do |inflections|
26
- inflections.singular 'children_data', 'category'
27
- end
28
- end
29
- end
30
-
31
- self.url = ENV['MAGENTO_URL']
32
- self.open_timeout = 30
33
- self.timeout = 90
34
- self.token = ENV['MAGENTO_TOKEN']
35
- self.store = ENV['MAGENTO_STORE'] || :all
36
-
37
- def self.production?
38
- ENV['RACK_ENV'] == 'production' ||
39
- ENV['RAILS_ENV'] == 'production' ||
40
- ENV['PRODUCTION'] ||
41
- ENV['production']
42
- end
43
- end
1
+ # frozen_string_literal: true
2
+
3
+ require 'time'
4
+ require 'dry/inflector'
5
+
6
+ require_relative 'magento/errors'
7
+ require_relative 'magento/request'
8
+ require_relative 'magento/model_mapper'
9
+ require_relative 'magento/model'
10
+ require_relative 'magento/record_collection'
11
+ require_relative 'magento/query'
12
+ require_relative 'magento/category'
13
+ require_relative 'magento/product'
14
+ require_relative 'magento/country'
15
+ require_relative 'magento/customer'
16
+ require_relative 'magento/order'
17
+ require_relative 'magento/guest_cart'
18
+
19
+ Dir[File.expand_path('magento/shared/*.rb', __dir__)].map { |f| require f }
20
+
21
+ module Magento
22
+ class << self
23
+ attr_accessor :url, :open_timeout, :timeout, :token, :store
24
+
25
+ def inflector
26
+ @inflector ||= Dry::Inflector.new do |inflections|
27
+ inflections.singular 'children_data', 'category'
28
+ end
29
+ end
30
+ end
31
+
32
+ self.url = ENV['MAGENTO_URL']
33
+ self.open_timeout = 30
34
+ self.timeout = 90
35
+ self.token = ENV['MAGENTO_TOKEN']
36
+ self.store = ENV['MAGENTO_STORE'] || :all
37
+
38
+ def self.production?
39
+ ENV['RACK_ENV'] == 'production' ||
40
+ ENV['RAILS_ENV'] == 'production' ||
41
+ ENV['PRODUCTION'] ||
42
+ ENV['production']
43
+ end
44
+ end
@@ -1,13 +1,17 @@
1
- module Magento
2
- class Customer < Model
3
- class << self
4
- alias_method :find_by_id, :find
5
-
6
- def find_by_token(token)
7
- user_request = Request.new(token: token)
8
- customer_hash = user_request.get('customers/me').parse
9
- ModelMapper.from_hash(customer_hash).to_model(Customer)
10
- end
11
- end
12
- end
13
- end
1
+ module Magento
2
+ class Customer < Model
3
+ def fullname
4
+ "#{@firstname} #{@lastname}"
5
+ end
6
+
7
+ class << self
8
+ alias_method :find_by_id, :find
9
+
10
+ def find_by_token(token)
11
+ user_request = Request.new(token: token)
12
+ customer_hash = user_request.get('customers/me').parse
13
+ build(customer_hash)
14
+ end
15
+ end
16
+ end
17
+ end
@@ -0,0 +1,69 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Magento
4
+ class GuestCart < Model
5
+ self.endpoint = 'guest-carts'
6
+ self.primary_key = :cart_id
7
+
8
+ def add_item(item_attributes)
9
+ attributes = { cartItem: item_attributes.merge(quote_id: cart_id) }
10
+ item = self.class.add_item(cart_id, attributes)
11
+ @items = @items.reject {|i| i.item_id == item.item_id} << item if @items
12
+ item
13
+ end
14
+
15
+ #
16
+ # Set payment information to finish the order
17
+ #
18
+ # Example:
19
+ # cart = Magento::GuestCart.find('gXsepZcgJbY8RCJXgGioKOO9iBCR20r7')
20
+ #
21
+ # # or use "build" to not request information from the magento API
22
+ # cart = Magento::GuestCart.build({ 'cart_id' => 'aj8oUtY1Qi44Fror6UWVN7ftX1idbBKN' })
23
+ #
24
+ # cart.payment_information(
25
+ # email: 'customer@gmail.com',
26
+ # payment: { method: 'cashondelivery' }
27
+ # )
28
+ #
29
+ # @return String: return the order id
30
+ def payment_information(email:, payment:)
31
+ attributes = { cartId: cart_id, paymentMethod: payment, email: email }
32
+ self.class.payment_information(attributes)
33
+ end
34
+
35
+ class << self
36
+ def create(load_cart_info: false)
37
+ cart = build(cart_id: request.post(api_resource).parse)
38
+ find cart.id if load_cart_info
39
+ end
40
+
41
+ def find(id)
42
+ cart = build request.get("#{api_resource}/#{id}").parse.merge(cart_id: id)
43
+ end
44
+
45
+ #
46
+ # Set payment information to finish the order using class method
47
+ #
48
+ # Example:
49
+ # Magento::GuestCart.payment_information(
50
+ # cartId: 'aj8oUtY1Qi44Fror6UWVN7ftX1idbBKN',
51
+ # paymentMethod: { method: 'cashondelivery' },
52
+ # email: email
53
+ # )
54
+ #
55
+ # @return String: return the order id
56
+ def payment_information(attributes)
57
+ attributes.transform_keys(&:to_sym)
58
+ url = "#{api_resource}/#{attributes[:cartId]}/payment-information"
59
+ request.post(url, attributes).parse
60
+ end
61
+
62
+ def add_item(id, attributes)
63
+ url = "#{api_resource}/#{id}/items"
64
+ hash = request.post(url, attributes).parse
65
+ Magento::ModelMapper.map_hash(Magento::Item, hash)
66
+ end
67
+ end
68
+ end
69
+ end
@@ -1,79 +1,84 @@
1
- # frozen_string_literal: true
2
-
3
- require 'forwardable'
4
-
5
- module Magento
6
- class Model
7
- def save
8
- body = ModelMapper.from_object(self).to_hash
9
- self.class.update(send(self.class.primary_key), body)
10
- end
11
-
12
- def update(attrs)
13
- raise "#{self.class.name} not saved" if send(self.class.primary_key).nil?
14
-
15
- attrs.each { |key, value| send("#{key}=", value) }
16
- save
17
- end
18
-
19
- def delete
20
- self.class.delete(send(self.class.primary_key))
21
- end
22
-
23
- def id
24
- @id || send(self.class.primary_key)
25
- end
26
-
27
- class << self
28
- extend Forwardable
29
-
30
- def_delegators :query, :all, :page, :per, :page_size, :order, :select, :where
31
-
32
- def find(id)
33
- hash = request.get("#{api_resource}/#{id}").parse
34
- ModelMapper.from_hash(hash).to_model(self)
35
- end
36
-
37
- def create(attributes)
38
- body = { entity_name => attributes }
39
- hash = request.post(api_resource, body).parse
40
- ModelMapper.from_hash(hash).to_model(self)
41
- end
42
-
43
- def delete(id)
44
- request.delete("#{api_resource}/#{id}").status.success?
45
- end
46
-
47
- def update(id, attributes)
48
- body = { entity_name => attributes }
49
- hash = request.put("#{api_resource}/#{id}", body).parse
50
- ModelMapper.from_hash(hash).to_model(self)
51
- end
52
-
53
- def api_resource
54
- endpoint || Magento.inflector.pluralize(entity_name)
55
- end
56
-
57
- def entity_name
58
- Magento.inflector.underscore(name).sub('magento/', '')
59
- end
60
-
61
- def primary_key
62
- @primary_key || :id
63
- end
64
-
65
- protected
66
-
67
- attr_writer :primary_key
68
- attr_accessor :endpoint
69
-
70
- def query
71
- Query.new(self)
72
- end
73
-
74
- def request
75
- @request ||= Request.new
76
- end
77
- end
78
- end
79
- end
1
+ # frozen_string_literal: true
2
+
3
+ require 'forwardable'
4
+
5
+ module Magento
6
+ class Model
7
+ include Magento::ModelParser
8
+
9
+ def save
10
+ self.class.update(send(self.class.primary_key), to_h)
11
+ end
12
+
13
+ def update(attrs)
14
+ raise "#{self.class.name} not saved" if send(self.class.primary_key).nil?
15
+
16
+ attrs.each { |key, value| send("#{key}=", value) }
17
+ save
18
+ end
19
+
20
+ def delete
21
+ self.class.delete(send(self.class.primary_key))
22
+ end
23
+
24
+ def id
25
+ @id || send(self.class.primary_key)
26
+ end
27
+
28
+ class << self
29
+ extend Forwardable
30
+
31
+ def_delegators :query, :all, :page, :per, :page_size, :order, :select, :where
32
+
33
+ def find(id)
34
+ hash = request.get("#{api_resource}/#{id}").parse
35
+ build(hash)
36
+ end
37
+
38
+ def create(attributes)
39
+ body = { entity_name => attributes }
40
+ hash = request.post(api_resource, body).parse
41
+ build(hash)
42
+ end
43
+
44
+ def delete(id)
45
+ request.delete("#{api_resource}/#{id}").status.success?
46
+ end
47
+
48
+ def update(id, attributes)
49
+ body = { entity_key => attributes }
50
+ hash = request.put("#{api_resource}/#{id}", body).parse
51
+ build(hash)
52
+ end
53
+
54
+ def api_resource
55
+ endpoint || Magento.inflector.pluralize(entity_name)
56
+ end
57
+
58
+ def entity_name
59
+ Magento.inflector.underscore(name).sub('magento/', '')
60
+ end
61
+
62
+ def primary_key
63
+ @primary_key || :id
64
+ end
65
+
66
+ protected
67
+
68
+ attr_writer :primary_key
69
+ attr_accessor :endpoint, :entity_key
70
+
71
+ def entity_key
72
+ @entity_key || entity_name
73
+ end
74
+
75
+ def query
76
+ Query.new(self)
77
+ end
78
+
79
+ def request
80
+ @request ||= Request.new
81
+ end
82
+ end
83
+ end
84
+ end
@@ -1,67 +1,63 @@
1
- class ModelMapper
2
- def initialize(from)
3
- @from = from
4
- end
5
-
6
- def to_model(model)
7
- map_hash(model, @from) if @from
8
- end
9
-
10
- def to_hash
11
- self.class.to_hash(@from) if @from
12
- end
13
-
14
- def self.from_object(object)
15
- new(object)
16
- end
17
-
18
- def self.from_hash(values)
19
- new(values)
20
- end
21
-
22
- def self.to_hash(object)
23
- hash = {}
24
- object.instance_variables.each do |attr|
25
- key = attr.to_s.delete('@')
26
- value = object.send(key)
27
- value = to_hash(value) if value.class.name.include?('Magento::')
28
- if value.is_a? Array
29
- value = value.map do |item|
30
- item.class.name.include?('Magento::') ? to_hash(item) : item
1
+ module Magento
2
+ module ModelMapper
3
+ def self.to_hash(object)
4
+ hash = {}
5
+ object.instance_variables.each do |attr|
6
+ key = attr.to_s.delete('@')
7
+ value = object.send(key)
8
+ value = to_hash(value) if value.class.name.include?('Magento::')
9
+ if value.is_a? Array
10
+ value = value.map do |item|
11
+ item.class.name.include?('Magento::') ? to_hash(item) : item
12
+ end
31
13
  end
14
+ hash[key] = value
32
15
  end
33
- hash[key] = value
16
+ hash
34
17
  end
35
- hash
36
- end
37
18
 
38
- private
19
+ def self.map_hash(model, values)
20
+ object = model.new
21
+ values.each do |key, value|
22
+ object.singleton_class.instance_eval { attr_accessor key }
23
+ if value.is_a?(Hash)
24
+ class_name = Magento.inflector.camelize(Magento.inflector.singularize(key))
25
+ value = map_hash(Object.const_get("Magento::#{class_name}"), value)
26
+ elsif value.is_a?(Array)
27
+ value = map_array(key, value)
28
+ end
29
+ object.send("#{key}=", value)
30
+ end
31
+ object
32
+ end
39
33
 
40
- def map_hash(model, values)
41
- object = model.new
42
- values.each do |key, value|
43
- object.singleton_class.instance_eval { attr_accessor key }
44
- if value.is_a?(Hash)
45
- class_name = Magento.inflector.camelize(Magento.inflector.singularize(key))
46
- value = map_hash(Object.const_get("Magento::#{class_name}"), value)
47
- elsif value.is_a?(Array)
48
- value = map_array(key, value)
34
+ def self.map_array(key, values)
35
+ result = []
36
+ values.each do |value|
37
+ if value.is_a?(Hash)
38
+ class_name = Magento.inflector.camelize(Magento.inflector.singularize(key))
39
+ result << map_hash(Object.const_get("Magento::#{class_name}"), value)
40
+ else
41
+ result << value
42
+ end
49
43
  end
50
- object.send("#{key}=", value)
44
+ result
51
45
  end
52
- object
53
46
  end
54
47
 
55
- def map_array(key, values)
56
- result = []
57
- values.each do |value|
58
- if value.is_a?(Hash)
59
- class_name = Magento.inflector.camelize(Magento.inflector.singularize(key))
60
- result << map_hash(Object.const_get("Magento::#{class_name}"), value)
61
- else
62
- result << value
48
+ module ModelParser
49
+ module ClassMethods
50
+ def build(attributes)
51
+ ModelMapper.map_hash(self, attributes)
63
52
  end
64
53
  end
65
- result
54
+
55
+ def self.included(base)
56
+ base.extend(ClassMethods)
57
+ end
58
+
59
+ def to_h
60
+ ModelMapper.to_hash(self)
61
+ end
66
62
  end
67
63
  end
@@ -1,5 +1,6 @@
1
1
  module Magento
2
2
  class Order < Model
3
3
  self.primary_key = :entity_id
4
+ self.entity_key = :entity
4
5
  end
5
6
  end
@@ -1,44 +1,36 @@
1
- # frozen_string_literal: true
2
-
3
- require 'forwardable'
4
-
5
- module Magento
6
- class RecordCollection
7
- attr_reader :items, :search_criteria, :total_count
8
- extend Forwardable
9
-
10
- def initialize(items:, total_count: nil, search_criteria: nil)
11
- @items = items || []
12
- @total_count = total_count || @items.size
13
- @search_criteria = search_criteria || Magento::SearchCriterium.new
14
- end
15
-
16
- def_delegators :@search_criteria, :current_page, :filter_groups, :page_size
17
-
18
- def_delegators :@items, :count, :length, :size, :first, :last, :[],
19
- :find, :each, :each_with_index, :sample, :map, :select,
20
- :filter, :reject, :collect, :take, :take_while, :sort,
21
- :sort_by, :reverse_each, :reverse, :all?, :any?, :none?,
22
- :one?, :empty?
23
-
24
- alias per page_size
25
-
26
- class << self
27
- def from_magento_response(response, model:, iterable_field: 'items')
28
- items = response[iterable_field]&.map do |item|
29
- ModelMapper.from_hash(item).to_model(model)
30
- end
31
-
32
- search_criteria = ModelMapper
33
- .from_hash(response['search_criteria'])
34
- .to_model(Magento::SearchCriterium)
35
-
36
- Magento::RecordCollection.new(
37
- items: items,
38
- total_count: response['total_count'],
39
- search_criteria: search_criteria
40
- )
41
- end
42
- end
43
- end
44
- end
1
+ # frozen_string_literal: true
2
+
3
+ require 'forwardable'
4
+
5
+ module Magento
6
+ class RecordCollection
7
+ attr_reader :items, :search_criteria, :total_count
8
+ extend Forwardable
9
+
10
+ def initialize(items:, total_count: nil, search_criteria: nil)
11
+ @items = items || []
12
+ @total_count = total_count || @items.size
13
+ @search_criteria = search_criteria || Magento::SearchCriterium.new
14
+ end
15
+
16
+ def_delegators :@search_criteria, :current_page, :filter_groups, :page_size
17
+
18
+ def_delegators :@items, :count, :length, :size, :first, :last, :[],
19
+ :find, :each, :each_with_index, :sample, :map, :select,
20
+ :filter, :reject, :collect, :take, :take_while, :sort,
21
+ :sort_by, :reverse_each, :reverse, :all?, :any?, :none?,
22
+ :one?, :empty?
23
+
24
+ alias per page_size
25
+
26
+ class << self
27
+ def from_magento_response(response, model:, iterable_field: 'items')
28
+ Magento::RecordCollection.new(
29
+ items: response[iterable_field]&.map { |item| model.build(item) },
30
+ total_count: response['total_count'],
31
+ search_criteria: Magento::SearchCriterium.build(response['search_criteria'])
32
+ )
33
+ end
34
+ end
35
+ end
36
+ end
@@ -1,108 +1,79 @@
1
- # frozen_string_literal: true
2
-
3
- require 'uri'
4
- require 'http'
5
-
6
- module Magento
7
- class Request
8
- attr_reader :token, :store
9
-
10
- def initialize(token: Magento.token, store: Magento.store)
11
- @token = token
12
- @store = store
13
- end
14
-
15
- def get(resource)
16
- save_request(:get, url(resource))
17
- handle_error http_auth.get(url(resource))
18
- end
19
-
20
- def put(resource, body)
21
- save_request(:put, url(resource), body)
22
- handle_error http_auth.put(url(resource), json: body)
23
- end
24
-
25
- def post(resource, body = nil, url_completa = false)
26
- url = url_completa ? resource : url(resource)
27
- save_request(:post, url, body)
28
- handle_error http_auth.post(url, json: body)
29
- end
30
-
31
- def delete(resource)
32
- save_request(:delete, url(resource))
33
- handle_error http_auth.delete(url(resource))
34
- end
35
-
36
- private
37
-
38
- def http_auth
39
- HTTP.auth("Bearer #{token}")
40
- end
41
-
42
- def base_url
43
- url = Magento.url.to_s.sub(%r{/$}, '')
44
- "#{url}/rest/#{store}/V1"
45
- end
46
-
47
- def url(resource)
48
- "#{base_url}/#{resource}"
49
- end
50
-
51
- def search_params(field:, value:, conditionType: :eq)
52
- create_params(
53
- filter_groups: {
54
- '0': {
55
- filters: {
56
- '0': {
57
- field: field,
58
- conditionType: conditionType,
59
- value: value
60
- }
61
- }
62
- }
63
- }
64
- )
65
- end
66
-
67
- def field_params(fields:)
68
- create_params(fields: fields)
69
- end
70
-
71
- def create_params(filter_groups: nil, fields: nil, current_page: 1)
72
- CGI.unescape(
73
- {
74
- searchCriteria: {
75
- currentPage: current_page,
76
- filterGroups: filter_groups
77
- }.compact,
78
- fields: fields
79
- }.compact.to_query
80
- )
81
- end
82
-
83
- def handle_error(resp)
84
- return resp if resp.status.success?
85
-
86
- begin
87
- msg = resp.parse['message']
88
- errors = resp.parse['errors']
89
- rescue StandardError
90
- msg = 'Failed access to the magento server'
91
- errors = []
92
- end
93
-
94
- raise Magento::NotFound.new(msg, resp.status.code, errors, @request) if resp.status.not_found?
95
-
96
- raise Magento::MagentoError.new(msg, resp.status.code, errors, @request)
97
- end
98
-
99
- def save_request(method, url, body = nil)
100
- begin
101
- body = body[:product].reject { |e| e == :media_gallery_entries }
102
- rescue StandardError
103
- end
104
-
105
- @request = { method: method, url: url, body: body }
106
- end
107
- end
108
- end
1
+ # frozen_string_literal: true
2
+
3
+ require 'uri'
4
+ require 'http'
5
+
6
+ module Magento
7
+ class Request
8
+ attr_reader :token, :store
9
+
10
+ def initialize(token: Magento.token, store: Magento.store)
11
+ @token = token
12
+ @store = store
13
+ end
14
+
15
+ def get(resource)
16
+ save_request(:get, url(resource))
17
+ handle_error http_auth.get(url(resource))
18
+ end
19
+
20
+ def put(resource, body)
21
+ save_request(:put, url(resource), body)
22
+ handle_error http_auth.put(url(resource), json: body)
23
+ end
24
+
25
+ def post(resource, body = nil, url_completa = false)
26
+ url = url_completa ? resource : url(resource)
27
+ save_request(:post, url, body)
28
+ handle_error http_auth.post(url, json: body)
29
+ end
30
+
31
+ def delete(resource)
32
+ save_request(:delete, url(resource))
33
+ handle_error http_auth.delete(url(resource))
34
+ end
35
+
36
+ private
37
+
38
+ def http_auth
39
+ HTTP.auth("Bearer #{token}")
40
+ end
41
+
42
+ def base_url
43
+ url = Magento.url.to_s.sub(%r{/$}, '')
44
+ "#{url}/rest/#{store}/V1"
45
+ end
46
+
47
+ def url(resource)
48
+ "#{base_url}/#{resource}"
49
+ end
50
+
51
+ def handle_error(resp)
52
+ return resp if resp.status.success?
53
+
54
+ begin
55
+ msg = resp.parse['message']
56
+ errors = resp.parse['errors']
57
+ if resp.parse['parameters'].is_a? Hash
58
+ resp.parse['parameters'].each { |k, v| msg.sub! "%#{k}", v }
59
+ end
60
+ rescue StandardError
61
+ msg = 'Failed access to the magento server'
62
+ errors = []
63
+ end
64
+
65
+ raise Magento::NotFound.new(msg, resp.status.code, errors, @request) if resp.status.not_found?
66
+
67
+ raise Magento::MagentoError.new(msg, resp.status.code, errors, @request)
68
+ end
69
+
70
+ def save_request(method, url, body = nil)
71
+ begin
72
+ body = body[:product].reject { |e| e == :media_gallery_entries }
73
+ rescue StandardError
74
+ end
75
+
76
+ @request = { method: method, url: url, body: body }
77
+ end
78
+ end
79
+ end
@@ -0,0 +1,4 @@
1
+ module Magento
2
+ class Currency
3
+ end
4
+ end
@@ -1,5 +1,6 @@
1
- module Magento
2
- class SearchCriterium
3
- attr_accessor :current_page, :filter_groups, :page_size
4
- end
5
- end
1
+ module Magento
2
+ class SearchCriterium
3
+ include Magento::ModelParser
4
+ attr_accessor :current_page, :filter_groups, :page_size
5
+ end
6
+ end
@@ -1,3 +1,3 @@
1
1
  module Magento
2
- VERSION = '0.4.4'
2
+ VERSION = '0.5.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.4.4
4
+ version: 0.5.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Wallas Faria
@@ -53,6 +53,7 @@ files:
53
53
  - lib/magento/country.rb
54
54
  - lib/magento/customer.rb
55
55
  - lib/magento/errors.rb
56
+ - lib/magento/guest_cart.rb
56
57
  - lib/magento/model.rb
57
58
  - lib/magento/model_mapper.rb
58
59
  - lib/magento/order.rb
@@ -66,6 +67,7 @@ files:
66
67
  - lib/magento/shared/bundle_product_option.rb
67
68
  - lib/magento/shared/category_link.rb
68
69
  - lib/magento/shared/configurable_product_option.rb
70
+ - lib/magento/shared/currency.rb
69
71
  - lib/magento/shared/custom_attribute.rb
70
72
  - lib/magento/shared/extension_attribute.rb
71
73
  - lib/magento/shared/filter.rb