music_today_api_wrapper 22.12.15.03 → 28.01.16.01
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/lib/music_today_api_wrapper.rb +1 -1
- data/lib/resources/checkout/billing/customer.rb +48 -0
- data/lib/resources/checkout/billing/payment.rb +54 -0
- data/lib/resources/checkout/destination.rb +25 -0
- data/lib/resources/checkout/order.rb +49 -0
- data/lib/resources/purchase/item.rb +4 -2
- data/lib/rest_clients/music_today_rest_client.rb +4 -2
- data/lib/services/product_services.rb +1 -1
- data/lib/support/configuration.rb +10 -1
- metadata +32 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: a13056078b8cc16fbad4bda85904b64408bf482e
|
4
|
+
data.tar.gz: 28133c7238ed7b90e95d8d820c00a199c92a00d1
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 6ed88428f63fe91742ff8eb6622edb68167ce9461fb47c472516dd0e58555a88b012900c9f9ee49c5e16e77eb888ee335162a5c4906e4c86e719903fe214ca39
|
7
|
+
data.tar.gz: 4b2944d6e7c45feeb21c8dbfa5923bc024b149856275a776d14e4054bca2d1289fc7be0a1f319d26fc3dbd48b1b1370af6bec7de5fc8c0bf5cb0669e8055804a
|
@@ -13,7 +13,7 @@ module MusicTodayApiWrapper
|
|
13
13
|
yield(configuration)
|
14
14
|
end
|
15
15
|
|
16
|
-
def self.products(per_page =
|
16
|
+
def self.products(per_page = 1000, page_number = nil)
|
17
17
|
product_services = Services::ProductServices.new
|
18
18
|
product_services.all_products(per_page, page_number)
|
19
19
|
end
|
@@ -0,0 +1,48 @@
|
|
1
|
+
require 'resources/hash'
|
2
|
+
|
3
|
+
module MusicTodayApiWrapper
|
4
|
+
module Resources
|
5
|
+
module Checkout
|
6
|
+
module Billing
|
7
|
+
class Customer
|
8
|
+
attr_accessor :name,
|
9
|
+
:lastname,
|
10
|
+
:street,
|
11
|
+
:city,
|
12
|
+
:state,
|
13
|
+
:zip_code,
|
14
|
+
:phone,
|
15
|
+
:email,
|
16
|
+
:country
|
17
|
+
|
18
|
+
# rubocop:disable ParameterLists
|
19
|
+
def initialize(name = '', lastname = '', street = '', city = '',
|
20
|
+
state = '', zip_code = '', phone = '', email = '', country = 'US')
|
21
|
+
@name = name
|
22
|
+
@lastname = lastname
|
23
|
+
@street = street
|
24
|
+
@city = city
|
25
|
+
@state = state
|
26
|
+
@zip_code = zip_code
|
27
|
+
@phone = phone
|
28
|
+
@email = email
|
29
|
+
@country = country
|
30
|
+
end
|
31
|
+
|
32
|
+
def as_hash
|
33
|
+
{ firstName: @name,
|
34
|
+
lastName: @lastname,
|
35
|
+
street: @street,
|
36
|
+
street2: '',
|
37
|
+
city: @city,
|
38
|
+
state: @state,
|
39
|
+
postalCode: @zip_code,
|
40
|
+
country: @country,
|
41
|
+
phone: @phone,
|
42
|
+
email: @email }.compact
|
43
|
+
end
|
44
|
+
end
|
45
|
+
end
|
46
|
+
end
|
47
|
+
end
|
48
|
+
end
|
@@ -0,0 +1,54 @@
|
|
1
|
+
require 'resources/hash'
|
2
|
+
require 'credit_card_validator'
|
3
|
+
|
4
|
+
module MusicTodayApiWrapper
|
5
|
+
module Resources
|
6
|
+
module Checkout
|
7
|
+
module Billing
|
8
|
+
class Payment
|
9
|
+
attr_accessor :card_number,
|
10
|
+
:card_type,
|
11
|
+
:expiration_year,
|
12
|
+
:expiration_month,
|
13
|
+
:name,
|
14
|
+
:amount
|
15
|
+
|
16
|
+
def initialize(card_number, name, amount, expiration_year,
|
17
|
+
expiration_month)
|
18
|
+
@card_number = card_number
|
19
|
+
@expiration_year = expiration_year.to_i
|
20
|
+
@expiration_month = expiration_month.to_i
|
21
|
+
@name = name
|
22
|
+
@amount = amount.to_f
|
23
|
+
credit_card_type
|
24
|
+
end
|
25
|
+
|
26
|
+
def as_hash
|
27
|
+
{ type: @card_type,
|
28
|
+
accountNumber: @card_number,
|
29
|
+
expYear: @expiration_year,
|
30
|
+
expMonth: @expiration_month,
|
31
|
+
nameOnCard: @name,
|
32
|
+
amount: @amount }.compact
|
33
|
+
end
|
34
|
+
|
35
|
+
private
|
36
|
+
|
37
|
+
def credit_card_type
|
38
|
+
@card_type =
|
39
|
+
case CreditCardValidator::Validator.card_type(@card_number)
|
40
|
+
when 'visa'
|
41
|
+
'VISA'
|
42
|
+
when 'master_card'
|
43
|
+
'MC'
|
44
|
+
when 'amex'
|
45
|
+
'AMEX'
|
46
|
+
when 'discover'
|
47
|
+
'DISCOVER'
|
48
|
+
end
|
49
|
+
end
|
50
|
+
end
|
51
|
+
end
|
52
|
+
end
|
53
|
+
end
|
54
|
+
end
|
@@ -0,0 +1,25 @@
|
|
1
|
+
require 'resources/hash'
|
2
|
+
require 'resources/address'
|
3
|
+
|
4
|
+
module MusicTodayApiWrapper
|
5
|
+
module Resources
|
6
|
+
module Checkout
|
7
|
+
class Destination
|
8
|
+
attr_accessor :address, :shipping_option, :shipping_cost
|
9
|
+
|
10
|
+
def initialize(address, shipping_option = '', shipping_cost = 0.0)
|
11
|
+
@address = address
|
12
|
+
@shipping_option = shipping_option
|
13
|
+
@shipping_cost = shipping_cost.to_f
|
14
|
+
end
|
15
|
+
|
16
|
+
def as_hash
|
17
|
+
{ requestedShippingOption: @shipping_option,
|
18
|
+
shippingCost: @shipping_cost,
|
19
|
+
shipToBillTo: false,
|
20
|
+
address: @address.as_hash }
|
21
|
+
end
|
22
|
+
end
|
23
|
+
end
|
24
|
+
end
|
25
|
+
end
|
@@ -0,0 +1,49 @@
|
|
1
|
+
require 'support/configuration'
|
2
|
+
require 'resources/hash'
|
3
|
+
require 'date'
|
4
|
+
require 'resources/checkout/billing/customer'
|
5
|
+
require 'resources/checkout/billing/payment'
|
6
|
+
|
7
|
+
module MusicTodayApiWrapper
|
8
|
+
module Resources
|
9
|
+
module Checkout
|
10
|
+
class Order
|
11
|
+
def initialize(customer, payment, destinations = [], items = [],
|
12
|
+
promotions = [])
|
13
|
+
config = MusicTodayApiWrapper::Configuration.new
|
14
|
+
|
15
|
+
@catalog = config.catalog.to_i
|
16
|
+
@channel = config.channel
|
17
|
+
@prefix = config.order_prefix
|
18
|
+
@customer = customer
|
19
|
+
@payment = payment
|
20
|
+
@destinations = destinations
|
21
|
+
@items = items
|
22
|
+
@promotions = promotions
|
23
|
+
end
|
24
|
+
|
25
|
+
# rubocop:disable MethodLength
|
26
|
+
def as_hash
|
27
|
+
dynamic_id = @prefix + Time.now.to_i.to_s
|
28
|
+
|
29
|
+
{ storeId: @catalog,
|
30
|
+
channel: @channel,
|
31
|
+
orderDate: DateTime.now.to_s,
|
32
|
+
clientOrderId: dynamic_id,
|
33
|
+
clientCustomerId: dynamic_id,
|
34
|
+
sendConfEmail: true,
|
35
|
+
sendDigitalConfEmail: true,
|
36
|
+
applyFraudCheck: true,
|
37
|
+
validateOnly: false,
|
38
|
+
taxPrepaid: false,
|
39
|
+
billing: { customer: @customer.as_hash,
|
40
|
+
payment: @payment.as_hash },
|
41
|
+
currency: 'USD',
|
42
|
+
destinations: @destinations.map(&:as_hash),
|
43
|
+
lineItems: @items.map(&:as_hash),
|
44
|
+
promotions: @promotions.map(&:as_hash) }.compact
|
45
|
+
end
|
46
|
+
end
|
47
|
+
end
|
48
|
+
end
|
49
|
+
end
|
@@ -8,11 +8,12 @@ module MusicTodayApiWrapper
|
|
8
8
|
attr_accessor :variant, :quantity
|
9
9
|
|
10
10
|
def initialize(variant = Variant.new, quantity = 1, tax = nil,
|
11
|
-
total = nil)
|
11
|
+
total = nil, destination_id = nil)
|
12
12
|
@variant = variant
|
13
13
|
@quantity = quantity
|
14
14
|
@tax = tax
|
15
15
|
@total = total
|
16
|
+
@destination_id = destination_id
|
16
17
|
end
|
17
18
|
|
18
19
|
def as_hash
|
@@ -21,7 +22,8 @@ module MusicTodayApiWrapper
|
|
21
22
|
quantity: @quantity,
|
22
23
|
price: @variant.price,
|
23
24
|
tax: @tax,
|
24
|
-
total: @total
|
25
|
+
total: @total,
|
26
|
+
destIndex: @destination_id }.compact
|
25
27
|
end
|
26
28
|
|
27
29
|
def self.from_hash(item_hash)
|
@@ -13,16 +13,18 @@ module MusicTodayApiWrapper
|
|
13
13
|
@user = config.user
|
14
14
|
@api_key = config.api_key
|
15
15
|
@catalog_number = config.catalog.to_i
|
16
|
+
@department = config.department
|
16
17
|
@common_response = MusicTodayApiWrapper::RestClients::CommonResponse.new
|
17
18
|
end
|
18
19
|
|
19
|
-
def all_products(per_page =
|
20
|
+
def all_products(per_page = 1000, page_number = nil)
|
20
21
|
@common_response.work do
|
21
22
|
options = {}
|
22
23
|
options[:size] = per_page if per_page
|
23
24
|
options[:page] = page_number if page_number
|
25
|
+
department = @department ? "/#{@department}" : ''
|
24
26
|
|
25
|
-
url = "#{@url}/catalog/content/#{@catalog_number}/"
|
27
|
+
url = "#{@url}/catalog/content/#{@catalog_number}#{department}/"
|
26
28
|
@common_response.data[:products] = get(url, options)['products']
|
27
29
|
end
|
28
30
|
end
|
@@ -10,7 +10,7 @@ module MusicTodayApiWrapper
|
|
10
10
|
@rest_client = MusicTodayApiWrapper::RestClient.new
|
11
11
|
end
|
12
12
|
|
13
|
-
def all_products(per_page =
|
13
|
+
def all_products(per_page = 1000, page_number = nil)
|
14
14
|
results = @rest_client.all_products(per_page, page_number)
|
15
15
|
return results unless results.success?
|
16
16
|
|
@@ -1,12 +1,21 @@
|
|
1
1
|
module MusicTodayApiWrapper
|
2
2
|
class Configuration
|
3
|
-
attr_accessor :user,
|
3
|
+
attr_accessor :user,
|
4
|
+
:api_key,
|
5
|
+
:url,
|
6
|
+
:catalog,
|
7
|
+
:department,
|
8
|
+
:channel,
|
9
|
+
:order_prefix
|
4
10
|
|
5
11
|
def initialize
|
6
12
|
@user = ENV['MUSIC_TODAY_USER']
|
7
13
|
@api_key = ENV['MUSIC_TODAY_API_KEY']
|
8
14
|
@url = ENV['MUSIC_TODAY_BASE_URL']
|
9
15
|
@catalog = ENV['MUSIC_TODAY_CATALOG_NAME']
|
16
|
+
@department = ENV['MUSIC_TODAY_DEPARTMENT_NAME'] || nil
|
17
|
+
@channel = ENV['MUSIC_TODAY_CHANNEL'] || ''
|
18
|
+
@order_prefix = ENV['MUSIC_TODAY_ORDER_PREFIX'] || 'EXA'
|
10
19
|
end
|
11
20
|
end
|
12
21
|
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: music_today_api_wrapper
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version:
|
4
|
+
version: 28.01.16.01
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Pablo Gonzaga
|
@@ -9,7 +9,7 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date:
|
12
|
+
date: 2016-01-28 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: rspec
|
@@ -139,6 +139,9 @@ dependencies:
|
|
139
139
|
name: bundler
|
140
140
|
requirement: !ruby/object:Gem::Requirement
|
141
141
|
requirements:
|
142
|
+
- - "~>"
|
143
|
+
- !ruby/object:Gem::Version
|
144
|
+
version: '1.10'
|
142
145
|
- - ">="
|
143
146
|
- !ruby/object:Gem::Version
|
144
147
|
version: 1.10.6
|
@@ -146,6 +149,9 @@ dependencies:
|
|
146
149
|
prerelease: false
|
147
150
|
version_requirements: !ruby/object:Gem::Requirement
|
148
151
|
requirements:
|
152
|
+
- - "~>"
|
153
|
+
- !ruby/object:Gem::Version
|
154
|
+
version: '1.10'
|
149
155
|
- - ">="
|
150
156
|
- !ruby/object:Gem::Version
|
151
157
|
version: 1.10.6
|
@@ -153,6 +159,9 @@ dependencies:
|
|
153
159
|
name: rake
|
154
160
|
requirement: !ruby/object:Gem::Requirement
|
155
161
|
requirements:
|
162
|
+
- - "~>"
|
163
|
+
- !ruby/object:Gem::Version
|
164
|
+
version: '10.4'
|
156
165
|
- - ">="
|
157
166
|
- !ruby/object:Gem::Version
|
158
167
|
version: 10.4.2
|
@@ -160,6 +169,9 @@ dependencies:
|
|
160
169
|
prerelease: false
|
161
170
|
version_requirements: !ruby/object:Gem::Requirement
|
162
171
|
requirements:
|
172
|
+
- - "~>"
|
173
|
+
- !ruby/object:Gem::Version
|
174
|
+
version: '10.4'
|
163
175
|
- - ">="
|
164
176
|
- !ruby/object:Gem::Version
|
165
177
|
version: 10.4.2
|
@@ -183,6 +195,20 @@ dependencies:
|
|
183
195
|
- - ">="
|
184
196
|
- !ruby/object:Gem::Version
|
185
197
|
version: 1.8.3
|
198
|
+
- !ruby/object:Gem::Dependency
|
199
|
+
name: credit_card_validator
|
200
|
+
requirement: !ruby/object:Gem::Requirement
|
201
|
+
requirements:
|
202
|
+
- - "~>"
|
203
|
+
- !ruby/object:Gem::Version
|
204
|
+
version: '1.2'
|
205
|
+
type: :runtime
|
206
|
+
prerelease: false
|
207
|
+
version_requirements: !ruby/object:Gem::Requirement
|
208
|
+
requirements:
|
209
|
+
- - "~>"
|
210
|
+
- !ruby/object:Gem::Version
|
211
|
+
version: '1.2'
|
186
212
|
description: Gem to expose music today api endpoints.
|
187
213
|
email: pgonzaga.uy@gmail.com
|
188
214
|
executables: []
|
@@ -191,6 +217,10 @@ extra_rdoc_files: []
|
|
191
217
|
files:
|
192
218
|
- lib/music_today_api_wrapper.rb
|
193
219
|
- lib/resources/address.rb
|
220
|
+
- lib/resources/checkout/billing/customer.rb
|
221
|
+
- lib/resources/checkout/billing/payment.rb
|
222
|
+
- lib/resources/checkout/destination.rb
|
223
|
+
- lib/resources/checkout/order.rb
|
194
224
|
- lib/resources/checkout/session.rb
|
195
225
|
- lib/resources/hash.rb
|
196
226
|
- lib/resources/image.rb
|