music_today_api_wrapper 13.01.16.01

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml ADDED
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA1:
3
+ metadata.gz: ffcf247a0ea2ac483afe5345305132da052939c8
4
+ data.tar.gz: 302c995cb5737113e4274b016f0fe1d16e5cbc16
5
+ SHA512:
6
+ metadata.gz: 0d592ee72f941ee0459aa7e4d6166316d9c072bbe99a7d96d972a7910cb6dc1554bfdd69e00040146543ed1a21f8b52de295b5cf884c3669f9ef656f2b18cfd2
7
+ data.tar.gz: 31ac61968e4293302324cb516839bc022abe2da23bb2e0da224a9c82822dbab3b72d9ff1978614884c3008a332bc015a44b1861a93cc1ca2fe3844df5a5e6e8c
@@ -0,0 +1,35 @@
1
+ require 'support/configuration'
2
+ require 'services/product_services'
3
+ require 'services/shipping_services'
4
+ require 'services/checkout_services'
5
+
6
+ module MusicTodayApiWrapper
7
+ class << self
8
+ attr_accessor :configuration
9
+ end
10
+
11
+ def self.configure
12
+ self.configuration ||= Configuration.new
13
+ yield(configuration)
14
+ end
15
+
16
+ def self.products(per_page = nil, page_number = nil)
17
+ product_services = Services::ProductServices.new
18
+ product_services.all_products(per_page, page_number)
19
+ end
20
+
21
+ def self.find_product(id)
22
+ product_services = Services::ProductServices.new
23
+ product_services.find_product(id)
24
+ end
25
+
26
+ def self.shipping_options(address, items)
27
+ shipping_services = Services::ShippingServices.new
28
+ shipping_services.options(address, items)
29
+ end
30
+
31
+ def self.checkout(address, items)
32
+ checkout_services = Services::CheckoutServices.new
33
+ checkout_services.checkout(address, items)
34
+ end
35
+ end
@@ -0,0 +1,48 @@
1
+ require 'resources/purchase/shipping_option'
2
+ require 'resources/hash'
3
+
4
+ module MusicTodayApiWrapper
5
+ module Resources
6
+ class Address
7
+ attr_accessor :street,
8
+ :street_second_line,
9
+ :city,
10
+ :postal_code,
11
+ :country,
12
+ :shipping_options,
13
+ :selected_shipping
14
+
15
+ # rubocop:disable ParameterLists
16
+ def initialize(street, state, city, postal_code, country = 'US',
17
+ street_second_line = '', shipping_options = [],
18
+ selected_shipping = nil)
19
+ @street = street
20
+ @state = state
21
+ @street_second_line = street_second_line
22
+ @city = city
23
+ @postal_code = postal_code
24
+ @country = country
25
+ @shipping_options = shipping_options
26
+ @selected_shipping = selected_shipping
27
+ end
28
+
29
+ def self.from_hash(address_hash)
30
+ Address.new(address_hash['street'],
31
+ address_hash['city'],
32
+ address_hash['postalCode'],
33
+ address_hash['country'],
34
+ address_hash['street2'])
35
+ end
36
+
37
+ def as_hash
38
+ { street: @street,
39
+ street2: @street_second_line,
40
+ state: @state,
41
+ city: @city,
42
+ postalCode: @postal_code,
43
+ country: @country,
44
+ shippingOptionType: @selected_shipping }.compact
45
+ end
46
+ end
47
+ end
48
+ end
@@ -0,0 +1,27 @@
1
+ require 'resources/address'
2
+ require 'resources/purchase/item'
3
+
4
+ module MusicTodayApiWrapper
5
+ module Resources
6
+ module Checkout
7
+ class Session
8
+ attr_accessor :id, :address, :items
9
+
10
+ def initialize(id, address, items = [])
11
+ @id = id
12
+ @address = address
13
+ @items = items
14
+ end
15
+
16
+ def self.from_hash(session_hash)
17
+ address = Address.from_hash(session_hash)
18
+ session = Session.new(session_hash['sessionId'], address)
19
+ session_hash['items'].each do |item|
20
+ session.items << Resources::Purchase::Item.from_hash(item)
21
+ end
22
+ session
23
+ end
24
+ end
25
+ end
26
+ end
27
+ end
@@ -0,0 +1,8 @@
1
+ module MusicTodayApiWrapper
2
+ # rubocop:disable ClassAndModuleChildren
3
+ class ::Hash
4
+ def compact
5
+ select { |_, value| !value.nil? }
6
+ end
7
+ end
8
+ end
@@ -0,0 +1,13 @@
1
+ module MusicTodayApiWrapper
2
+ module Resources
3
+ class Image
4
+ attr_accessor :short, :medium, :large
5
+
6
+ def initialize(short = nil, medium = nil, large = nil)
7
+ @short = short
8
+ @medium = medium
9
+ @large = large
10
+ end
11
+ end
12
+ end
13
+ end
@@ -0,0 +1,47 @@
1
+ require 'resources/image'
2
+ require 'resources/variant'
3
+
4
+ module MusicTodayApiWrapper
5
+ module Resources
6
+ class Product
7
+ attr_accessor :uid,
8
+ :name,
9
+ :description,
10
+ :category,
11
+ :image,
12
+ :price,
13
+ :variants
14
+
15
+ # rubocop:disable ParameterLists
16
+ def initialize(uid, name, description, category, price,
17
+ image = MusicTodayApiWrapper::Resources::Image.new, variants = [])
18
+ @uid = uid
19
+ @name = name
20
+ @description = description
21
+ @category = category
22
+ @price = price
23
+ @image = image
24
+ @variants = variants
25
+ end
26
+
27
+ # rubocop:disable AbcSize
28
+ def self.from_hash(hash)
29
+ image = Image.new(hash['imageUrlSmall'],
30
+ hash['imageUrlMedium'],
31
+ hash['imageUrlLarge'])
32
+
33
+ product = Product.new(hash['id'],
34
+ hash['name'],
35
+ hash['lang']['en']['textDesc'],
36
+ hash['categoryName'],
37
+ hash['listPrice'],
38
+ image)
39
+
40
+ hash['variants'].each do |variant|
41
+ product.variants << Variant.from_hash(variant)
42
+ end
43
+ product
44
+ end
45
+ end
46
+ end
47
+ end
@@ -0,0 +1,35 @@
1
+ require 'resources/variant'
2
+ require 'resources/hash'
3
+
4
+ module MusicTodayApiWrapper
5
+ module Resources
6
+ module Purchase
7
+ class Item
8
+ attr_accessor :variant, :quantity
9
+
10
+ def initialize(variant = Variant.new, quantity = 1, tax = nil,
11
+ total = nil)
12
+ @variant = variant
13
+ @quantity = quantity
14
+ @tax = tax
15
+ @total = total
16
+ end
17
+
18
+ def as_hash
19
+ { sku: @variant.sku,
20
+ qty: @quantity,
21
+ quantity: @quantity,
22
+ price: @variant.price,
23
+ tax: @tax,
24
+ total: @total }.compact
25
+ end
26
+
27
+ def self.from_hash(item_hash)
28
+ variant = Variant.from_hash(item_hash)
29
+ Item.new(variant, item_hash['quantity'], item_hash['tax'],
30
+ item_hash['total'])
31
+ end
32
+ end
33
+ end
34
+ end
35
+ end
@@ -0,0 +1,31 @@
1
+ require 'resources/hash'
2
+
3
+ module MusicTodayApiWrapper
4
+ module Resources
5
+ module Purchase
6
+ class ShippingOption
7
+ attr_accessor :type, :delivery_date, :rate, :description
8
+
9
+ def initialize(type, delivery_date = nil, rate = nil,
10
+ description = nil)
11
+ @type = type
12
+ @delivery_date = delivery_date ? Date.parse(delivery_date) : nil
13
+ @rate = rate
14
+ @description = description
15
+ end
16
+
17
+ def self.from_hash(option)
18
+ ShippingOption.new(option['shippingOptionType'],
19
+ option['deliveryDate'],
20
+ option['totalRate'],
21
+ option['shippingOptionName'])
22
+ end
23
+
24
+ def as_hash
25
+ { shippingOptionType: @type, deliveryDate: @delivery_date,
26
+ totalRate: @rate, shippingOptionName: @description }.compact
27
+ end
28
+ end
29
+ end
30
+ end
31
+ end
@@ -0,0 +1,13 @@
1
+ module MusicTodayApiWrapper
2
+ # rubocop:disable ClassAndModuleChildren
3
+ class ::String
4
+ def to_underscore!
5
+ gsub!(/(.)([A-Z])/, '\1_\2')
6
+ downcase!
7
+ end
8
+
9
+ def to_underscore
10
+ dup.tap(&:to_underscore!)
11
+ end
12
+ end
13
+ end
@@ -0,0 +1,39 @@
1
+ require 'resources/string'
2
+ module MusicTodayApiWrapper
3
+ module Resources
4
+ class Variant
5
+ attr_accessor :sku,
6
+ :price,
7
+ :quantity_available,
8
+ :variant_names
9
+
10
+ def initialize(sku, price, quantity_available, variant_names = [])
11
+ @sku = sku
12
+ @price = price
13
+ @quantity_available = quantity_available
14
+ @variant_names = variant_names
15
+ end
16
+
17
+ def self.from_hash(variant_hash)
18
+ Variant.new(variant_hash['sku'],
19
+ variant_hash['listPrice'],
20
+ variant_hash['qtyAvailable'],
21
+ variant_names(variant_hash['variantNames']))
22
+ end
23
+
24
+ def self.variant_names(names)
25
+ return [] unless names
26
+ symbolized_names = []
27
+
28
+ names.each do |variant|
29
+ variant_name = {}
30
+ variant_name[variant.keys[0]
31
+ .to_underscore
32
+ .to_sym] = variant.values[0]
33
+ symbolized_names << variant_name
34
+ end
35
+ symbolized_names
36
+ end
37
+ end
38
+ end
39
+ end
@@ -0,0 +1,24 @@
1
+ module MusicTodayApiWrapper
2
+ module RestClients
3
+ class CommonResponse
4
+ attr_accessor :data, :errors
5
+
6
+ def initialize(data = {}, errors = [])
7
+ @data = data
8
+ @errors = errors
9
+ end
10
+
11
+ def work
12
+ yield
13
+ self
14
+ rescue StandardError => error
15
+ @errors.push(error.message)
16
+ self
17
+ end
18
+
19
+ def success?
20
+ @errors.empty?
21
+ end
22
+ end
23
+ end
24
+ end
@@ -0,0 +1,82 @@
1
+ require 'json'
2
+ require 'net/http'
3
+ require 'rest_clients/common_response'
4
+ require 'support/configuration'
5
+
6
+ module MusicTodayApiWrapper
7
+ class RestClient
8
+ attr_accessor :catalog_number
9
+
10
+ def initialize
11
+ config = MusicTodayApiWrapper::Configuration.new
12
+ @url = config.url
13
+ @user = config.user
14
+ @api_key = config.api_key
15
+ @catalog_number = config.catalog.to_i
16
+ @department = config.department
17
+ @common_response = MusicTodayApiWrapper::RestClients::CommonResponse.new
18
+ end
19
+
20
+ def all_products(per_page = nil, page_number = nil)
21
+ @common_response.work do
22
+ options = {}
23
+ options[:size] = per_page if per_page
24
+ options[:page] = page_number if page_number
25
+ department = @department ? "/#{@department}" : ''
26
+
27
+ url = "#{@url}/catalog/content/#{@catalog_number}#{department}/"
28
+ @common_response.data[:products] = get(url, options)['products']
29
+ end
30
+ end
31
+
32
+ def find_product(product_id)
33
+ @common_response.work do
34
+ department = @department ? "/#{@department}" : ''
35
+ url = "#{@url}/catalog/product/#{@catalog_number}#{department}/#{product_id}"
36
+ @common_response.data[:product] = get(url)['product']
37
+ end
38
+ end
39
+
40
+ def shipping_options(params)
41
+ @common_response.work do
42
+ url = "#{@url}/order/shippingOptionsGet"
43
+ @common_response.data[:shipping_options] =
44
+ post(url, {}, params)['shippingOptions']
45
+ end
46
+ end
47
+
48
+ def checkout(params)
49
+ @common_response.work do
50
+ url = "#{@url}/cart/pricing"
51
+ @common_response.data[:session] =
52
+ post(url, {}, params)['addresses'].first
53
+ end
54
+ end
55
+
56
+ private
57
+
58
+ def get(url, options = {})
59
+ uri = URI(url)
60
+ hit(uri, options) do
61
+ Net::HTTP.get_response(uri)
62
+ end
63
+ end
64
+
65
+ def post(url, options = {}, body = {})
66
+ uri = URI(url)
67
+ hit(uri, options) do
68
+ request = Net::HTTP::Post.new(uri)
69
+ request.body = body.to_json
70
+ request.content_type = 'application/json'
71
+ Net::HTTP.start(uri.hostname) { |http| http.request(request) }
72
+ end
73
+ end
74
+
75
+ def hit(uri, options = {})
76
+ options.merge!(apiuser: @user, apikey: @api_key)
77
+ uri.query = URI.encode_www_form(options)
78
+ response = yield
79
+ JSON.parse(response.body)
80
+ end
81
+ end
82
+ end
@@ -0,0 +1,39 @@
1
+ require 'rest_clients/music_today_rest_client'
2
+ require 'rest_clients/common_response'
3
+ require 'resources/purchase/item'
4
+ require 'resources/checkout/session'
5
+
6
+ module MusicTodayApiWrapper
7
+ module Services
8
+ class CheckoutServices
9
+ def initialize
10
+ @common_response = RestClients::CommonResponse.new
11
+ @rest_client = RestClient.new
12
+ end
13
+
14
+ # rubocop:disable MethodLength
15
+ def checkout(address, items)
16
+ items_hash = []
17
+ items.each { |item| items_hash << item.as_hash }
18
+ address_hash =
19
+ address
20
+ .as_hash
21
+ .merge(id: 1, items: items_hash)
22
+
23
+ @common_response.work do
24
+ params = { storeId: @rest_client.catalog_number,
25
+ currency: 'USD',
26
+ priceLevel: '',
27
+ addresses: [address_hash],
28
+ promotions: [] }
29
+
30
+ response = @rest_client.checkout(params)
31
+
32
+ return response unless response.success?
33
+ @common_response.data[:session] =
34
+ Resources::Checkout::Session.from_hash(response.data[:session])
35
+ end
36
+ end
37
+ end
38
+ end
39
+ end
@@ -0,0 +1,43 @@
1
+ require 'rest_clients/music_today_rest_client'
2
+ require 'resources/product'
3
+
4
+ module MusicTodayApiWrapper
5
+ module Services
6
+ class ProductServices
7
+ def initialize
8
+ @common_response =
9
+ MusicTodayApiWrapper::RestClients::CommonResponse.new
10
+ @rest_client = MusicTodayApiWrapper::RestClient.new
11
+ end
12
+
13
+ def all_products(per_page = nil, page_number = nil)
14
+ results = @rest_client.all_products(per_page, page_number)
15
+ return results unless results.success?
16
+
17
+ @common_response.data[:products] = []
18
+ @common_response.work do
19
+ results.data[:products].each { |product| product_mapper(product) }
20
+ end
21
+ end
22
+
23
+ def find_product(id)
24
+ results = @rest_client.find_product(id)
25
+ return results unless results.success?
26
+
27
+ @common_response.work do
28
+ @common_response.data[:product] =
29
+ MusicTodayApiWrapper::Resources::Product
30
+ .from_hash(results.data[:product])
31
+ end
32
+ end
33
+
34
+ private
35
+
36
+ def product_mapper(product)
37
+ product_obj =
38
+ MusicTodayApiWrapper::Resources::Product.from_hash(product)
39
+ @common_response.data[:products] << product_obj
40
+ end
41
+ end
42
+ end
43
+ end
@@ -0,0 +1,38 @@
1
+ require 'rest_clients/music_today_rest_client'
2
+ require 'resources/purchase/shipping_option'
3
+
4
+ module MusicTodayApiWrapper
5
+ module Services
6
+ class ShippingServices
7
+ def initialize
8
+ @common_response = RestClients::CommonResponse.new
9
+ @common_response.data[:shipping_options] = []
10
+ @rest_client = RestClient.new
11
+ end
12
+
13
+ def options(address, items)
14
+ hash_items = []
15
+ items.each { |item| hash_items << item.as_hash }
16
+
17
+ params = { storeId: @rest_client.catalog_number,
18
+ address: address.as_hash,
19
+ lineItems: hash_items }
20
+ @common_response.work do
21
+ response = @rest_client.shipping_options(params)
22
+ return response unless response.success?
23
+
24
+ response
25
+ .data[:shipping_options]
26
+ .each { |option| shipping_option_mapper(option) }
27
+ end
28
+ end
29
+
30
+ private
31
+
32
+ def shipping_option_mapper(option)
33
+ @common_response.data[:shipping_options] <<
34
+ Resources::Purchase::ShippingOption.from_hash(option)
35
+ end
36
+ end
37
+ end
38
+ end
@@ -0,0 +1,13 @@
1
+ module MusicTodayApiWrapper
2
+ class Configuration
3
+ attr_accessor :user, :api_key, :url, :catalog, :department
4
+
5
+ def initialize
6
+ @user = ENV['MUSIC_TODAY_USER']
7
+ @api_key = ENV['MUSIC_TODAY_API_KEY']
8
+ @url = ENV['MUSIC_TODAY_BASE_URL']
9
+ @catalog = ENV['MUSIC_TODAY_CATALOG_NAME']
10
+ @department = ENV['MUSIC_TODAY_DEPARTMENT_NAME'] || nil
11
+ end
12
+ end
13
+ end
metadata ADDED
@@ -0,0 +1,232 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: music_today_api_wrapper
3
+ version: !ruby/object:Gem::Version
4
+ version: 13.01.16.01
5
+ platform: ruby
6
+ authors:
7
+ - Pablo Gonzaga
8
+ - Oscar Siniscalchi
9
+ autorequire:
10
+ bindir: bin
11
+ cert_chain: []
12
+ date: 2016-01-13 00:00:00.000000000 Z
13
+ dependencies:
14
+ - !ruby/object:Gem::Dependency
15
+ name: rspec
16
+ requirement: !ruby/object:Gem::Requirement
17
+ requirements:
18
+ - - "~>"
19
+ - !ruby/object:Gem::Version
20
+ version: '3.3'
21
+ type: :development
22
+ prerelease: false
23
+ version_requirements: !ruby/object:Gem::Requirement
24
+ requirements:
25
+ - - "~>"
26
+ - !ruby/object:Gem::Version
27
+ version: '3.3'
28
+ - !ruby/object:Gem::Dependency
29
+ name: byebug
30
+ requirement: !ruby/object:Gem::Requirement
31
+ requirements:
32
+ - - "~>"
33
+ - !ruby/object:Gem::Version
34
+ version: '8.0'
35
+ type: :development
36
+ prerelease: false
37
+ version_requirements: !ruby/object:Gem::Requirement
38
+ requirements:
39
+ - - "~>"
40
+ - !ruby/object:Gem::Version
41
+ version: '8.0'
42
+ - !ruby/object:Gem::Dependency
43
+ name: dotenv
44
+ requirement: !ruby/object:Gem::Requirement
45
+ requirements:
46
+ - - "~>"
47
+ - !ruby/object:Gem::Version
48
+ version: '2.0'
49
+ - - ">="
50
+ - !ruby/object:Gem::Version
51
+ version: 2.0.2
52
+ type: :development
53
+ prerelease: false
54
+ version_requirements: !ruby/object:Gem::Requirement
55
+ requirements:
56
+ - - "~>"
57
+ - !ruby/object:Gem::Version
58
+ version: '2.0'
59
+ - - ">="
60
+ - !ruby/object:Gem::Version
61
+ version: 2.0.2
62
+ - !ruby/object:Gem::Dependency
63
+ name: reek
64
+ requirement: !ruby/object:Gem::Requirement
65
+ requirements:
66
+ - - "~>"
67
+ - !ruby/object:Gem::Version
68
+ version: '3.7'
69
+ - - ">="
70
+ - !ruby/object:Gem::Version
71
+ version: 3.7.1
72
+ type: :development
73
+ prerelease: false
74
+ version_requirements: !ruby/object:Gem::Requirement
75
+ requirements:
76
+ - - "~>"
77
+ - !ruby/object:Gem::Version
78
+ version: '3.7'
79
+ - - ">="
80
+ - !ruby/object:Gem::Version
81
+ version: 3.7.1
82
+ - !ruby/object:Gem::Dependency
83
+ name: rubocop
84
+ requirement: !ruby/object:Gem::Requirement
85
+ requirements:
86
+ - - "~>"
87
+ - !ruby/object:Gem::Version
88
+ version: 0.35.1
89
+ type: :development
90
+ prerelease: false
91
+ version_requirements: !ruby/object:Gem::Requirement
92
+ requirements:
93
+ - - "~>"
94
+ - !ruby/object:Gem::Version
95
+ version: 0.35.1
96
+ - !ruby/object:Gem::Dependency
97
+ name: spork
98
+ requirement: !ruby/object:Gem::Requirement
99
+ requirements:
100
+ - - "~>"
101
+ - !ruby/object:Gem::Version
102
+ version: 0.9.2
103
+ type: :development
104
+ prerelease: false
105
+ version_requirements: !ruby/object:Gem::Requirement
106
+ requirements:
107
+ - - "~>"
108
+ - !ruby/object:Gem::Version
109
+ version: 0.9.2
110
+ - !ruby/object:Gem::Dependency
111
+ name: vcr
112
+ requirement: !ruby/object:Gem::Requirement
113
+ requirements:
114
+ - - "~>"
115
+ - !ruby/object:Gem::Version
116
+ version: '3.0'
117
+ type: :development
118
+ prerelease: false
119
+ version_requirements: !ruby/object:Gem::Requirement
120
+ requirements:
121
+ - - "~>"
122
+ - !ruby/object:Gem::Version
123
+ version: '3.0'
124
+ - !ruby/object:Gem::Dependency
125
+ name: webmock
126
+ requirement: !ruby/object:Gem::Requirement
127
+ requirements:
128
+ - - "~>"
129
+ - !ruby/object:Gem::Version
130
+ version: '1.22'
131
+ type: :development
132
+ prerelease: false
133
+ version_requirements: !ruby/object:Gem::Requirement
134
+ requirements:
135
+ - - "~>"
136
+ - !ruby/object:Gem::Version
137
+ version: '1.22'
138
+ - !ruby/object:Gem::Dependency
139
+ name: bundler
140
+ requirement: !ruby/object:Gem::Requirement
141
+ requirements:
142
+ - - ">="
143
+ - !ruby/object:Gem::Version
144
+ version: 1.10.6
145
+ type: :runtime
146
+ prerelease: false
147
+ version_requirements: !ruby/object:Gem::Requirement
148
+ requirements:
149
+ - - ">="
150
+ - !ruby/object:Gem::Version
151
+ version: 1.10.6
152
+ - !ruby/object:Gem::Dependency
153
+ name: rake
154
+ requirement: !ruby/object:Gem::Requirement
155
+ requirements:
156
+ - - ">="
157
+ - !ruby/object:Gem::Version
158
+ version: 10.4.2
159
+ type: :runtime
160
+ prerelease: false
161
+ version_requirements: !ruby/object:Gem::Requirement
162
+ requirements:
163
+ - - ">="
164
+ - !ruby/object:Gem::Version
165
+ version: 10.4.2
166
+ - !ruby/object:Gem::Dependency
167
+ name: json
168
+ requirement: !ruby/object:Gem::Requirement
169
+ requirements:
170
+ - - "~>"
171
+ - !ruby/object:Gem::Version
172
+ version: '1.8'
173
+ - - ">="
174
+ - !ruby/object:Gem::Version
175
+ version: 1.8.3
176
+ type: :runtime
177
+ prerelease: false
178
+ version_requirements: !ruby/object:Gem::Requirement
179
+ requirements:
180
+ - - "~>"
181
+ - !ruby/object:Gem::Version
182
+ version: '1.8'
183
+ - - ">="
184
+ - !ruby/object:Gem::Version
185
+ version: 1.8.3
186
+ description: Gem to expose music today api endpoints.
187
+ email: pgonzaga.uy@gmail.com
188
+ executables: []
189
+ extensions: []
190
+ extra_rdoc_files: []
191
+ files:
192
+ - lib/music_today_api_wrapper.rb
193
+ - lib/resources/address.rb
194
+ - lib/resources/checkout/session.rb
195
+ - lib/resources/hash.rb
196
+ - lib/resources/image.rb
197
+ - lib/resources/product.rb
198
+ - lib/resources/purchase/item.rb
199
+ - lib/resources/purchase/shipping_option.rb
200
+ - lib/resources/string.rb
201
+ - lib/resources/variant.rb
202
+ - lib/rest_clients/common_response.rb
203
+ - lib/rest_clients/music_today_rest_client.rb
204
+ - lib/services/checkout_services.rb
205
+ - lib/services/product_services.rb
206
+ - lib/services/shipping_services.rb
207
+ - lib/support/configuration.rb
208
+ homepage: https://github.com/neonroots/music_today_api_wrapper
209
+ licenses:
210
+ - MIT
211
+ metadata: {}
212
+ post_install_message:
213
+ rdoc_options: []
214
+ require_paths:
215
+ - lib
216
+ required_ruby_version: !ruby/object:Gem::Requirement
217
+ requirements:
218
+ - - ">="
219
+ - !ruby/object:Gem::Version
220
+ version: '0'
221
+ required_rubygems_version: !ruby/object:Gem::Requirement
222
+ requirements:
223
+ - - ">="
224
+ - !ruby/object:Gem::Version
225
+ version: '0'
226
+ requirements: []
227
+ rubyforge_project:
228
+ rubygems_version: 2.4.8
229
+ signing_key:
230
+ specification_version: 4
231
+ summary: Gem to expose music today api endpoints.
232
+ test_files: []