magento 0.4.2 → 0.5.2

Sign up to get free protection for your applications and to get access to all the features.
@@ -1,5 +1,26 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module Magento
2
4
  class Order < Model
3
5
  self.primary_key = :entity_id
6
+ self.entity_key = :entity
7
+
8
+ def save
9
+ raise NotImplementedError
10
+ end
11
+
12
+ def update(attrs)
13
+ raise "'entity_id' not found" if @entity_id.nil?
14
+
15
+ attrs[:entity_id] = @entity_id
16
+ self.class.update(attrs)
17
+ end
18
+
19
+ class << self
20
+ def update(attributes)
21
+ hash = request.put('orders/create', { entity_key => attributes }).parse
22
+ build(hash)
23
+ end
24
+ end
4
25
  end
5
- end
26
+ 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 BillingAddress
3
+ end
4
+ 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
@@ -0,0 +1,4 @@
1
+ module Magento
2
+ class SortOrder
3
+ end
4
+ end
@@ -0,0 +1,4 @@
1
+ module Magento
2
+ class StatusHistory
3
+ end
4
+ end
@@ -1,3 +1,3 @@
1
- module Magento
2
- VERSION = '0.4.2'
1
+ module Magento
2
+ VERSION = '0.5.2'
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.2
4
+ version: 0.5.2
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
@@ -62,9 +63,11 @@ files:
62
63
  - lib/magento/request.rb
63
64
  - lib/magento/shared/address.rb
64
65
  - lib/magento/shared/available_regions.rb
66
+ - lib/magento/shared/billing_address.rb
65
67
  - lib/magento/shared/bundle_product_option.rb
66
68
  - lib/magento/shared/category_link.rb
67
69
  - lib/magento/shared/configurable_product_option.rb
70
+ - lib/magento/shared/currency.rb
68
71
  - lib/magento/shared/custom_attribute.rb
69
72
  - lib/magento/shared/extension_attribute.rb
70
73
  - lib/magento/shared/filter.rb
@@ -79,6 +82,8 @@ files:
79
82
  - lib/magento/shared/search_criterium.rb
80
83
  - lib/magento/shared/shipping.rb
81
84
  - lib/magento/shared/shipping_assignment.rb
85
+ - lib/magento/shared/sort_order.rb
86
+ - lib/magento/shared/status_history.rb
82
87
  - lib/magento/shared/stock_item.rb
83
88
  - lib/magento/shared/tier_price.rb
84
89
  - lib/magento/shared/total.rb