magento 0.3.2

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.
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA256:
3
+ metadata.gz: 02761b4b3a2e3b5da2082816534436f4f007f5f657b32400483bfd36d02f610b
4
+ data.tar.gz: 98e66dfd540d759b3e024de58bc43575b1c3437864584c4797d27391e5ec279e
5
+ SHA512:
6
+ metadata.gz: 9523a813be0fc77cc4fea9a751b639994a1a8e03869326ae967b9b98bcee93edcdc03f81abae60110514a5833fc5d123d91c634af5bd149d7ff586e732b77db9
7
+ data.tar.gz: 40bba87521d8624056cee96a8832a6dfcaf99353c9c69038684e8bf7d29cd7d9883fd97330eb45e646a438415bb533934cbccca6847770e41255b38d4c237ebb
@@ -0,0 +1,28 @@
1
+ *.gem
2
+ *.rbc
3
+ .DS_Store
4
+ */.DS_Store
5
+ .bundle
6
+ .config
7
+ coverage
8
+ InstalledFiles
9
+ lib/bundler/man
10
+ pkg
11
+ rdoc
12
+ spec/reports
13
+ test/tmp
14
+ test/version_tmp
15
+ tmp
16
+ *.swp
17
+ vimsession
18
+ Gemfile.lock
19
+
20
+ # YARD artifacts
21
+ .yardoc
22
+ _yardoc
23
+ doc/
24
+ test/vcr_cassettes
25
+
26
+ .vscode
27
+ .byebug_history
28
+ /*test.rb
data/Gemfile ADDED
@@ -0,0 +1,6 @@
1
+ # frozen_string_literal: true
2
+
3
+ source "https://rubygems.org"
4
+
5
+ # Specify your gem's dependencies in pagarme.gemspec
6
+ gemspec
@@ -0,0 +1,184 @@
1
+ # Magento Ruby library
2
+
3
+ ## Install
4
+
5
+ Add in your Gemfile
6
+
7
+ ```rb
8
+ gem 'magento', '~> 0.3.2'
9
+ ```
10
+
11
+ or run
12
+
13
+ ```sh
14
+ gem install magento
15
+ ```
16
+
17
+ ### Setup
18
+
19
+ ```rb
20
+ Magento.url = 'https://yourstore.com'
21
+ Magento.token = 'MAGENTO_API_KEY'
22
+ Magento.store = :default # optional, Default is :all
23
+ ```
24
+
25
+ ## Models
26
+ ```rb
27
+ Magento::Product
28
+ Magento::Order
29
+ Magento::Country
30
+ Magento::Category
31
+ ```
32
+
33
+ ## Get details
34
+
35
+ ```rb
36
+ Magento::Product.find('sku-test')
37
+ Magento::Order.find(25)
38
+ Magento::Country.find('BR')
39
+ ```
40
+ \* _same pattern to all models_
41
+
42
+ **Outside pattern**
43
+
44
+ Get customer by token
45
+
46
+ ```rb
47
+ Magento::Customer.find_by_token('user_token')
48
+ ```
49
+
50
+ ## Get List
51
+
52
+ ```rb
53
+ Magento::Product.all
54
+ ```
55
+
56
+ #### Select fields:
57
+ ```rb
58
+ Magento::Product.select(:id, :sku, :name).all
59
+ Magento::Product.select(:id, :sku, :name, extension_attributes: :category_links).all
60
+ Magento::Product.select(:id, :sku, :name, extension_attributes: [:category_links, :website_ids]).all
61
+ Magento::Product.select(:id, :sku, :name, extension_attributes: [:website_ids, { category_links: :category_id }]).all
62
+ ```
63
+
64
+ #### Filters:
65
+
66
+ ```rb
67
+ Magento::Product.where(name_like: 'IPhone%').all
68
+ Magento::Product.where(price_gt: 100).all
69
+
70
+ # price > 10 AND price < 20
71
+ Magento::Product.where(price_gt: 10)
72
+ .where(price_lt: 20).all
73
+
74
+ # price < 1 OR price > 100
75
+ Magento::Product.where(price_lt: 1, price_gt: 100).all
76
+
77
+ Magento::Order.where(status_in: [:canceled, :complete]).all
78
+ ```
79
+
80
+ | Condition | Notes |
81
+ | --------- | ----- |
82
+ |eq | Equals. |
83
+ |finset | A value within a set of values |
84
+ |from | The beginning of a range. Must be used with to |
85
+ |gt | Greater than |
86
+ |gteq | Greater than or equal |
87
+ |in | In. The value is an array |
88
+ |like | Like. The value can contain the SQL wildcard characters when like is specified. |
89
+ |lt | Less than |
90
+ |lteq | Less than or equal |
91
+ |moreq | More or equal |
92
+ |neq | Not equal |
93
+ |nfinset | A value that is not within a set of values |
94
+ |nin | Not in. The value is an array |
95
+ |notnull | Not null |
96
+ |null | Null |
97
+ |to | The end of a range. Must be used with from |
98
+
99
+
100
+ #### SortOrder:
101
+
102
+ ```rb
103
+ Magento::Product.order(:sku).all
104
+ Magento::Product.order(sku: :desc).all
105
+ Magento::Product.order(status: :desc, name: :asc).all
106
+ ```
107
+
108
+ #### Pagination:
109
+
110
+ ```rb
111
+ # Set page and quantity per page
112
+ Magento::Product.page(1).per(25) # Default per is 50
113
+ ```
114
+
115
+ #### Example of several options together:
116
+ ```rb
117
+ Magento::Product.select(:sku, :name, :price)
118
+ .where(name_like: 'Tshort%')
119
+ .order(price: :desc)
120
+ .per(10)
121
+ .all
122
+ ```
123
+
124
+ \* _same pattern to all models_
125
+ ___
126
+ ## \######### TODO \##########
127
+
128
+ ## Create
129
+
130
+ ```rb
131
+ Magento::Order.create(
132
+ customer_firstname: '',
133
+ customer_lastname: '',
134
+ customer_email: '',
135
+ # others attrbutes ...,
136
+ items: [
137
+ {
138
+ sku: '',
139
+ price: '',
140
+ qty_ordered: 1,
141
+ # others attrbutes ...,
142
+ }
143
+ ],
144
+ billing_address: {
145
+ # attrbutes...
146
+ },
147
+ payment: {
148
+ # attrbutes...
149
+ },
150
+ extension_attributes: {
151
+ # attrbutes...
152
+ }
153
+ )
154
+ ```
155
+
156
+ ### Update
157
+
158
+ ```rb
159
+ product = Magento::Product.find('sku-teste')
160
+
161
+ product.name = 'Updated name'
162
+ product.save
163
+
164
+ # or
165
+
166
+ product.update(name: 'Updated name')
167
+ ```
168
+
169
+ ### Delete
170
+
171
+ ```rb
172
+ product = Magento::Product.find('sku-teste')
173
+
174
+ product.delete
175
+
176
+ # or
177
+
178
+ Magento::Product.delete('sku-teste')
179
+ ```
180
+
181
+ ### Search products
182
+ ```rb
183
+ Magento::Product.search('tshort')
184
+ ```
@@ -0,0 +1,35 @@
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/query'
11
+ require_relative 'magento/product'
12
+ require_relative 'magento/country'
13
+ require_relative 'magento/customer'
14
+ require_relative 'magento/order'
15
+
16
+ Dir[File.expand_path('magento/shared/*.rb', __dir__)].map { |f| require f }
17
+
18
+ module Magento
19
+ class << self
20
+ attr_accessor :url, :open_timeout, :timeout, :token, :store
21
+ end
22
+
23
+ self.url = ENV['MAGENTO_URL']
24
+ self.open_timeout = 30
25
+ self.timeout = 90
26
+ self.token = ENV['MAGENTO_TOKEN']
27
+ self.store = ENV['MAGENTO_STORE'] || :all
28
+
29
+ def self.production?
30
+ ENV['RACK_ENV'] == 'production' ||
31
+ ENV['RAILS_ENV'] == 'production' ||
32
+ ENV['PRODUCTION'] ||
33
+ ENV['production']
34
+ end
35
+ end
@@ -0,0 +1,4 @@
1
+ module Magento
2
+ class Category < Model
3
+ end
4
+ end
@@ -0,0 +1,5 @@
1
+ module Magento
2
+ class Country < Model
3
+ self.endpoint = 'directory/countries'
4
+ end
5
+ end
@@ -0,0 +1,13 @@
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
@@ -0,0 +1,18 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Magento
4
+ class MagentoError < StandardError
5
+ attr_reader :status
6
+ attr_reader :errors
7
+ attr_reader :request
8
+
9
+ def initialize(msg = '', status = 400, errors = nil, request = nil)
10
+ @status = status
11
+ @errors = errors
12
+ @request = request
13
+ super(msg)
14
+ end
15
+ end
16
+
17
+ class NotFound < MagentoError; end
18
+ end
@@ -0,0 +1,79 @@
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
+ class << self
24
+ extend Forwardable
25
+
26
+ def_delegators :query, :all, :page, :per, :order, :select, :where
27
+
28
+ def find(id)
29
+ hash = request.get("#{api_resource}/#{id}").parse
30
+ ModelMapper.from_hash(hash).to_model(self)
31
+ end
32
+
33
+ def create(attributes)
34
+ body = { entity_name => attributes }
35
+ hash = request.post(api_resource, body).parse
36
+ ModelMapper.from_hash(hash).to_model(self)
37
+ end
38
+
39
+ def delete(id)
40
+ request.delete("#{api_resource}/#{id}")
41
+ end
42
+
43
+ def update(id, attributes)
44
+ body = { entity_name => attributes }
45
+ hash = request.put("#{api_resource}/#{id}", body).parse
46
+ ModelMapper.from_hash(hash).to_model(self)
47
+ end
48
+
49
+ def api_resource
50
+ endpoint || inflector.pluralize(entity_name)
51
+ end
52
+
53
+ def entity_name
54
+ inflector.underscore(name).sub('magento/', '')
55
+ end
56
+
57
+ def primary_key
58
+ @primary_key || :id
59
+ end
60
+
61
+ protected
62
+
63
+ attr_writer :primary_key
64
+ attr_accessor :endpoint
65
+
66
+ def query
67
+ Query.new(self)
68
+ end
69
+
70
+ def request
71
+ @request ||= Request.new
72
+ end
73
+
74
+ def inflector
75
+ @inflector ||= Dry::Inflector.new
76
+ end
77
+ end
78
+ end
79
+ end
@@ -0,0 +1,71 @@
1
+ class ModelMapper
2
+ def initialize(from)
3
+ @from = from
4
+ end
5
+
6
+ def to_model(model)
7
+ map_hash(model, @from)
8
+ end
9
+
10
+ def to_hash
11
+ self.class.to_hash(@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
31
+ end
32
+ end
33
+ hash[key] = value
34
+ end
35
+ hash
36
+ end
37
+
38
+ private
39
+
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 = inflector.camelize(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)
49
+ end
50
+ object.send("#{key}=", value)
51
+ end
52
+ object
53
+ end
54
+
55
+ def map_array(key, values)
56
+ result = []
57
+ values.each do |value|
58
+ if value.is_a?(Hash)
59
+ class_name = inflector.camelize(inflector.singularize(key))
60
+ result << map_hash(Object.const_get("Magento::#{class_name}"), value)
61
+ else
62
+ result << value
63
+ end
64
+ end
65
+ result
66
+ end
67
+
68
+ def inflector
69
+ @inflector ||= Dry::Inflector.new
70
+ end
71
+ end
@@ -0,0 +1,5 @@
1
+ module Magento
2
+ class Order < Model
3
+ self.primary_key = :entity_id
4
+ end
5
+ end
@@ -0,0 +1,7 @@
1
+ module Magento
2
+ class Product < Model
3
+ class << self
4
+ alias_method :find_by_sku, :find
5
+ end
6
+ end
7
+ end
@@ -0,0 +1,150 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'cgi'
4
+
5
+ module Magento
6
+ class Query
7
+ ACCEPTED_CONDITIONS = [
8
+ 'eq', # Equals.
9
+ 'finset', # A value within a set of values
10
+ 'from', # The beginning of a range. Must be used with to
11
+ 'gt', # Greater than
12
+ 'gteq', # Greater than or equal
13
+ 'in', # In. The value can contain a comma-separated list of values.
14
+ 'like', # Like. The value can contain the SQL wildcard characters when like is specified.
15
+ 'lt', # Less than
16
+ 'lteq', # Less than or equal
17
+ 'moreq', # More or equal
18
+ 'neq', # Not equal
19
+ 'nfinset', # A value that is not within a set of values
20
+ 'nin', # Not in. The value can contain a comma-separated list of values.
21
+ 'notnull', # Not null
22
+ 'null', # Null
23
+ 'to' # The end of a range. Must be used with from
24
+ ].freeze
25
+
26
+ def initialize(model, request: Request.new)
27
+ @model = model
28
+ @request = request
29
+ @filter_groups = nil
30
+ @current_page = 1
31
+ @page_size = 50
32
+ @sort_orders = nil
33
+ @fields = nil
34
+ end
35
+
36
+ def where(attributes)
37
+ self.filter_groups = [] unless filter_groups
38
+ filters = []
39
+ attributes.each do |key, value|
40
+ field, condition = parse_filter(key)
41
+ value = parse_value_filter(condition, value)
42
+ filters << { field: field, conditionType: condition, value: value }
43
+ end
44
+ filter_groups << { filters: filters }
45
+ self
46
+ end
47
+
48
+ def page(current_page)
49
+ self.current_page = current_page
50
+ self
51
+ end
52
+
53
+ def per(page_size)
54
+ self.page_size = page_size
55
+ self
56
+ end
57
+
58
+ def select(*fields)
59
+ fields = fields.map { |field| parse_field(field) }
60
+ self.fields = "items[#{fields.join(',')}]"
61
+ self
62
+ end
63
+
64
+ def order(attributes)
65
+ if attributes.is_a?(String)
66
+ self.sort_orders = [{ field: verify_id(attributes), direction: :asc }]
67
+ elsif attributes.is_a?(Hash)
68
+ self.sort_orders = []
69
+ attributes.each do |field, direction|
70
+ raise "Invalid sort order direction '#{direction}'" unless %w[asc desc].include?(direction.to_s)
71
+
72
+ sort_orders << { field: verify_id(field), direction: direction }
73
+ end
74
+ end
75
+ self
76
+ end
77
+
78
+ def all
79
+ items = request.get("#{endpoint}?#{query_params}").parse['items']
80
+ items ? items.map { |i| ModelMapper.from_hash(i).to_model(model) } : []
81
+ end
82
+
83
+ private
84
+
85
+ attr_accessor :current_page, :filter_groups, :page_size, :request, :sort_orders, :model, :fields
86
+
87
+ def endpoint
88
+ model.api_resource
89
+ end
90
+
91
+ def verify_id(field)
92
+ return model.primary_key if (field.to_s == 'id') && (field.to_s != model.primary_key.to_s)
93
+
94
+ field
95
+ end
96
+
97
+ def query_params
98
+ query = {
99
+ searchCriteria: {
100
+ filterGroups: filter_groups,
101
+ currentPage: current_page,
102
+ sortOrders: sort_orders,
103
+ pageSize: page_size
104
+ }.compact,
105
+ fields: fields
106
+ }.compact
107
+
108
+ encode query
109
+ end
110
+
111
+ def parse_filter(key)
112
+ patter = /(.*)_([a-z]+)$/
113
+ raise 'Invalid format' unless key.match(patter)
114
+ raise 'Condition not accepted' unless ACCEPTED_CONDITIONS.include?(key.match(patter)[2])
115
+
116
+ key.match(patter).to_a[1..2]
117
+ end
118
+
119
+ def parse_value_filter(condition, value)
120
+ if ['in', 'nin'].include?(condition) && value.is_a?(Array)
121
+ value = value.join(',')
122
+ end
123
+
124
+ value
125
+ end
126
+
127
+ def parse_field(value)
128
+ return verify_id(value) unless value.is_a? Hash
129
+
130
+ value.map do |k, v|
131
+ fields = v.is_a?(Array) ? v.map { |field| parse_field(field) } : [parse_field(v)]
132
+ "#{k}[#{fields.join(',')}]"
133
+ end.join(',')
134
+ end
135
+
136
+ def encode(value, key = nil)
137
+ case value
138
+ when Hash then value.map { |k, v| encode(v, append_key(key, k)) }.join('&')
139
+ when Array then value.each_with_index.map { |v, i| encode(v, "#{key}[#{i}]") }.join('&')
140
+ when nil then ''
141
+ else
142
+ "#{key}=#{CGI.escape(value.to_s)}"
143
+ end
144
+ end
145
+
146
+ def append_key(root_key, key)
147
+ root_key.nil? ? key : "#{root_key}[#{key}]"
148
+ end
149
+ end
150
+ end
@@ -0,0 +1,103 @@
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, token: nil)
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
+ private
32
+
33
+ def http_auth
34
+ HTTP.auth("Bearer #{token}")
35
+ end
36
+
37
+ def base_url
38
+ url = Magento.url.to_s.sub(%r{/$}, '')
39
+ "#{url}/rest/#{store}/V1"
40
+ end
41
+
42
+ def url(resource)
43
+ "#{base_url}/#{resource}"
44
+ end
45
+
46
+ def search_params(field:, value:, conditionType: :eq)
47
+ create_params(
48
+ filter_groups: {
49
+ '0': {
50
+ filters: {
51
+ '0': {
52
+ field: field,
53
+ conditionType: conditionType,
54
+ value: value
55
+ }
56
+ }
57
+ }
58
+ }
59
+ )
60
+ end
61
+
62
+ def field_params(fields:)
63
+ create_params(fields: fields)
64
+ end
65
+
66
+ def create_params(filter_groups: nil, fields: nil, current_page: 1)
67
+ CGI.unescape(
68
+ {
69
+ searchCriteria: {
70
+ currentPage: current_page,
71
+ filterGroups: filter_groups
72
+ }.compact,
73
+ fields: fields
74
+ }.compact.to_query
75
+ )
76
+ end
77
+
78
+ def handle_error(resp)
79
+ return resp if resp.status.success?
80
+
81
+ begin
82
+ msg = resp.parse['message']
83
+ errors = resp.parse['errors']
84
+ rescue StandardError
85
+ msg = 'Failed access to the magento server'
86
+ errors = []
87
+ end
88
+
89
+ raise Magento::NotFound.new(msg, resp.status.code, errors, @request) if resp.status.not_found?
90
+
91
+ raise Magento::MagentoError.new(msg, resp.status.code, errors, @request)
92
+ end
93
+
94
+ def save_request(method, url, body = nil)
95
+ begin
96
+ body = body[:product].reject { |e| e == :media_gallery_entries }
97
+ rescue StandardError
98
+ end
99
+
100
+ @request = { method: method, url: url, body: body }
101
+ end
102
+ end
103
+ end
@@ -0,0 +1,4 @@
1
+ module Magento
2
+ class Address
3
+ end
4
+ end
@@ -0,0 +1,4 @@
1
+ module Magento
2
+ class AvailableRegion
3
+ end
4
+ end
@@ -0,0 +1,6 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Magento
4
+ class CategoryLink
5
+ end
6
+ end
@@ -0,0 +1,4 @@
1
+ module Magento
2
+ class CustomAttribute
3
+ end
4
+ end
@@ -0,0 +1,4 @@
1
+ module Magento
2
+ class ExtensionAttribute
3
+ end
4
+ end
@@ -0,0 +1,3 @@
1
+ module Magento
2
+ class Item; end
3
+ end
@@ -0,0 +1,4 @@
1
+ module Magento
2
+ class MediaGalleryEntry
3
+ end
4
+ end
@@ -0,0 +1,4 @@
1
+ module Magento
2
+ class Option
3
+ end
4
+ end
@@ -0,0 +1,3 @@
1
+ module Magento
2
+ class Payment; end
3
+ end
@@ -0,0 +1,3 @@
1
+ module Magento
2
+ class PaymentAdditionalInfo; end
3
+ end
@@ -0,0 +1,4 @@
1
+ module Magento
2
+ class ProductLink
3
+ end
4
+ end
@@ -0,0 +1,4 @@
1
+ module Magento
2
+ class Region
3
+ end
4
+ end
@@ -0,0 +1,3 @@
1
+ module Magento
2
+ class Shipping; end
3
+ end
@@ -0,0 +1,3 @@
1
+ module Magento
2
+ class ShippingAssignment; end
3
+ end
@@ -0,0 +1,4 @@
1
+ module Magento
2
+ class StockItem
3
+ end
4
+ end
@@ -0,0 +1,4 @@
1
+ module Magento
2
+ class TierPrice
3
+ end
4
+ end
@@ -0,0 +1,3 @@
1
+ module Magento
2
+ class Total; end
3
+ end
@@ -0,0 +1,3 @@
1
+ module Magento
2
+ class Value; end
3
+ end
@@ -0,0 +1,17 @@
1
+ # frozen_string_literal: true
2
+
3
+ Gem::Specification.new do |s|
4
+ s.name = 'magento'
5
+ s.version = '0.3.2'
6
+ s.date = '2020-07-31'
7
+ s.summary = 'Magento Ruby library'
8
+ s.description = 'Magento Ruby library'
9
+ s.files = `git ls-files`.split($/)
10
+ s.authors = ["Wallas Faria"]
11
+ s.email = 'wallasfaria@hotmail.com'
12
+ s.homepage = 'https://github.com/WallasFaria/magento-ruby'
13
+ s.require_paths = ['lib']
14
+
15
+ s.add_dependency 'http', '~> 4.4'
16
+ s.add_dependency 'dry-inflector', '~> 0.2.0'
17
+ end
metadata ADDED
@@ -0,0 +1,102 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: magento
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.3.2
5
+ platform: ruby
6
+ authors:
7
+ - Wallas Faria
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain: []
11
+ date: 2020-07-31 00:00:00.000000000 Z
12
+ dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: http
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - "~>"
18
+ - !ruby/object:Gem::Version
19
+ version: '4.4'
20
+ type: :runtime
21
+ prerelease: false
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - "~>"
25
+ - !ruby/object:Gem::Version
26
+ version: '4.4'
27
+ - !ruby/object:Gem::Dependency
28
+ name: dry-inflector
29
+ requirement: !ruby/object:Gem::Requirement
30
+ requirements:
31
+ - - "~>"
32
+ - !ruby/object:Gem::Version
33
+ version: 0.2.0
34
+ type: :runtime
35
+ prerelease: false
36
+ version_requirements: !ruby/object:Gem::Requirement
37
+ requirements:
38
+ - - "~>"
39
+ - !ruby/object:Gem::Version
40
+ version: 0.2.0
41
+ description: Magento Ruby library
42
+ email: wallasfaria@hotmail.com
43
+ executables: []
44
+ extensions: []
45
+ extra_rdoc_files: []
46
+ files:
47
+ - ".gitignore"
48
+ - Gemfile
49
+ - README.md
50
+ - lib/magento.rb
51
+ - lib/magento/category.rb
52
+ - lib/magento/country.rb
53
+ - lib/magento/customer.rb
54
+ - lib/magento/errors.rb
55
+ - lib/magento/model.rb
56
+ - lib/magento/model_mapper.rb
57
+ - lib/magento/order.rb
58
+ - lib/magento/product.rb
59
+ - lib/magento/query.rb
60
+ - lib/magento/request.rb
61
+ - lib/magento/shared/address.rb
62
+ - lib/magento/shared/available_regions.rb
63
+ - lib/magento/shared/category_link.rb
64
+ - lib/magento/shared/custom_attribute.rb
65
+ - lib/magento/shared/extension_attribute.rb
66
+ - lib/magento/shared/item.rb
67
+ - lib/magento/shared/media_gallery_entry.rb
68
+ - lib/magento/shared/option.rb
69
+ - lib/magento/shared/payment.rb
70
+ - lib/magento/shared/payment_additional_info.rb
71
+ - lib/magento/shared/product_link.rb
72
+ - lib/magento/shared/region.rb
73
+ - lib/magento/shared/shipping.rb
74
+ - lib/magento/shared/shipping_assignment.rb
75
+ - lib/magento/shared/stock_item.rb
76
+ - lib/magento/shared/tier_price.rb
77
+ - lib/magento/shared/total.rb
78
+ - lib/magento/shared/value.rb
79
+ - magento.gemspec
80
+ homepage: https://github.com/WallasFaria/magento-ruby
81
+ licenses: []
82
+ metadata: {}
83
+ post_install_message:
84
+ rdoc_options: []
85
+ require_paths:
86
+ - lib
87
+ required_ruby_version: !ruby/object:Gem::Requirement
88
+ requirements:
89
+ - - ">="
90
+ - !ruby/object:Gem::Version
91
+ version: '0'
92
+ required_rubygems_version: !ruby/object:Gem::Requirement
93
+ requirements:
94
+ - - ">="
95
+ - !ruby/object:Gem::Version
96
+ version: '0'
97
+ requirements: []
98
+ rubygems_version: 3.0.6
99
+ signing_key:
100
+ specification_version: 4
101
+ summary: Magento Ruby library
102
+ test_files: []