tangocard 0.1.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +15 -0
- data/MIT-LICENSE +20 -0
- data/README.rdoc +10 -0
- data/Rakefile +27 -0
- data/lib/tangocard.rb +37 -0
- data/lib/tangocard/account.rb +57 -0
- data/lib/tangocard/account_create_failed_exception.rb +3 -0
- data/lib/tangocard/account_not_found_exception.rb +3 -0
- data/lib/tangocard/brand.rb +40 -0
- data/lib/tangocard/order.rb +95 -0
- data/lib/tangocard/order_create_failed_exception.rb +3 -0
- data/lib/tangocard/order_not_found_exception.rb +3 -0
- data/lib/tangocard/raas.rb +50 -0
- data/lib/tangocard/response.rb +29 -0
- data/lib/tangocard/reward.rb +34 -0
- data/lib/tangocard/version.rb +3 -0
- metadata +116 -0
checksums.yaml
ADDED
@@ -0,0 +1,15 @@
|
|
1
|
+
---
|
2
|
+
!binary "U0hBMQ==":
|
3
|
+
metadata.gz: !binary |-
|
4
|
+
NDYyMGMwNGRhZmQ4ZjlhOGFjZjcwZDNlOTRhZjBkOWNiYjQ5M2IyMA==
|
5
|
+
data.tar.gz: !binary |-
|
6
|
+
YjZiYTE0ZTNkZGNiNzVlY2NkZTk4YTMxZWJjNzgwNzM5MTI5NjE0MA==
|
7
|
+
SHA512:
|
8
|
+
metadata.gz: !binary |-
|
9
|
+
OGVjODkzNWM1NWMwZTNkYzI2ZWY4ZjZiNzMzOWI4Zjc5YzFjMjNiOGJkNzFl
|
10
|
+
MmQyOWRmNDJlNjgyODcyZjNhNzFmM2M2ZTY0YjcwODJhNzM2ZmE3MTJhMjBi
|
11
|
+
NmVhMTE3MzUwODI3OWY2NzQyNDI5NTRhNmFiNTVjYTMxNmNkODA=
|
12
|
+
data.tar.gz: !binary |-
|
13
|
+
Y2Q1N2QzNTI1M2EyNWY5N2UyYzU4NWZlZGI0NmY4YTllMDM4YmY5ZGYxZjNk
|
14
|
+
NTNjMjIzMjNhMjE0ZTkyZTY4NTg4OTUwMWE5Yzk0NzRiNmIzZjA0ZTczYzE0
|
15
|
+
MDE0MWE2YmIyYjY5NTAzZDdjYmFiYzFhOGZhYThjMzhkYzYxNWI=
|
data/MIT-LICENSE
ADDED
@@ -0,0 +1,20 @@
|
|
1
|
+
Copyright 2013 Raphael Crawford-Marks and Smartly, Inc.
|
2
|
+
|
3
|
+
Permission is hereby granted, free of charge, to any person obtaining
|
4
|
+
a copy of this software and associated documentation files (the
|
5
|
+
"Software"), to deal in the Software without restriction, including
|
6
|
+
without limitation the rights to use, copy, modify, merge, publish,
|
7
|
+
distribute, sublicense, and/or sell copies of the Software, and to
|
8
|
+
permit persons to whom the Software is furnished to do so, subject to
|
9
|
+
the following conditions:
|
10
|
+
|
11
|
+
The above copyright notice and this permission notice shall be
|
12
|
+
included in all copies or substantial portions of the Software.
|
13
|
+
|
14
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
|
15
|
+
EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
|
16
|
+
MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
|
17
|
+
NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
|
18
|
+
LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
|
19
|
+
OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
|
20
|
+
WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
data/README.rdoc
ADDED
@@ -0,0 +1,10 @@
|
|
1
|
+
= Tangocard
|
2
|
+
|
3
|
+
Ruby Wrapper for Tango Card RaaS API.
|
4
|
+
|
5
|
+
Tango Card provides a RaaS API for developers (https://github.com/tangocarddev/RaaS). This gem provides commonsense Ruby
|
6
|
+
objects to wrap the JSON endpoints of the RaaS API.
|
7
|
+
|
8
|
+
This project is developed and maintained by Smartly, Inc. - makers of http://bonus.ly.
|
9
|
+
|
10
|
+
This project uses the MIT-LICENSE.
|
data/Rakefile
ADDED
@@ -0,0 +1,27 @@
|
|
1
|
+
#!/usr/bin/env rake
|
2
|
+
begin
|
3
|
+
require 'bundler/setup'
|
4
|
+
rescue LoadError
|
5
|
+
puts 'You must `gem install bundler` and `bundle install` to run rake tasks'
|
6
|
+
end
|
7
|
+
begin
|
8
|
+
require 'rdoc/task'
|
9
|
+
rescue LoadError
|
10
|
+
require 'rdoc/rdoc'
|
11
|
+
require 'rake/rdoctask'
|
12
|
+
RDoc::Task = Rake::RDocTask
|
13
|
+
end
|
14
|
+
|
15
|
+
RDoc::Task.new(:rdoc) do |rdoc|
|
16
|
+
rdoc.rdoc_dir = 'rdoc'
|
17
|
+
rdoc.title = 'Tangocard'
|
18
|
+
rdoc.options << '--line-numbers'
|
19
|
+
rdoc.rdoc_files.include('README.rdoc')
|
20
|
+
rdoc.rdoc_files.include('lib/**/*.rb')
|
21
|
+
end
|
22
|
+
|
23
|
+
|
24
|
+
|
25
|
+
|
26
|
+
Bundler::GemHelper.install_tasks
|
27
|
+
|
data/lib/tangocard.rb
ADDED
@@ -0,0 +1,37 @@
|
|
1
|
+
require 'httparty'
|
2
|
+
require 'money'
|
3
|
+
require 'ostruct'
|
4
|
+
|
5
|
+
module Tangocard
|
6
|
+
class Configuration
|
7
|
+
attr_accessor :name, :key, :base_uri, :default_brands, :local_images, :sku_blacklist
|
8
|
+
|
9
|
+
def initialize
|
10
|
+
self.name = nil
|
11
|
+
self.key = nil
|
12
|
+
self.base_uri = "https://sandbox.tangocard.com"
|
13
|
+
self.default_brands = ['Tango Card']
|
14
|
+
self.local_images = {}
|
15
|
+
self.sku_blacklist = []
|
16
|
+
end
|
17
|
+
end
|
18
|
+
|
19
|
+
def self.configuration
|
20
|
+
@configuration ||= Configuration.new
|
21
|
+
end
|
22
|
+
|
23
|
+
def self.configure
|
24
|
+
yield(configuration) if block_given?
|
25
|
+
end
|
26
|
+
end
|
27
|
+
|
28
|
+
require 'tangocard/response'
|
29
|
+
require 'tangocard/raas'
|
30
|
+
require 'tangocard/account'
|
31
|
+
require 'tangocard/account_create_failed_exception'
|
32
|
+
require 'tangocard/account_not_found_exception'
|
33
|
+
require 'tangocard/brand'
|
34
|
+
require 'tangocard/order'
|
35
|
+
require 'tangocard/order_create_failed_exception'
|
36
|
+
require 'tangocard/order_not_found_exception'
|
37
|
+
require 'tangocard/reward'
|
@@ -0,0 +1,57 @@
|
|
1
|
+
# Wrapper for Tangocard RaaS Account
|
2
|
+
# https://github.com/tangocarddev/RaaS#account-resources
|
3
|
+
class Tangocard::Account
|
4
|
+
attr_reader :customer, :identifier, :email, :available_balance
|
5
|
+
|
6
|
+
private_class_method :new
|
7
|
+
|
8
|
+
# parsed_response={"success"=>true, "account"=>{"identifier"=>"test1", "email"=>"test@test.com", "customer"=>"bonusly", "available_balance"=>0}}
|
9
|
+
def self.find(customer, identifier)
|
10
|
+
response = Tangocard::Raas.show_account({'customer' => customer, 'identifier' => identifier})
|
11
|
+
if response.success?
|
12
|
+
new(response.parsed_response['account'])
|
13
|
+
else
|
14
|
+
raise Tangocard::AccountNotFoundException, "Tangocard - Error finding account: #{response.error_message}"
|
15
|
+
end
|
16
|
+
end
|
17
|
+
|
18
|
+
def self.create(customer, identifier, email)
|
19
|
+
response = Tangocard::Raas.create_account({'customer' => customer, 'identifier' => identifier, 'email' => email})
|
20
|
+
if response.success?
|
21
|
+
new(response.parsed_response['account'])
|
22
|
+
else
|
23
|
+
raise Tangocard::AccountCreateFailedException, "Tangocard - Error finding account: #{response.error_message}"
|
24
|
+
end
|
25
|
+
end
|
26
|
+
|
27
|
+
def self.find_or_create(customer, identifier, email)
|
28
|
+
begin
|
29
|
+
find(customer, identifier)
|
30
|
+
rescue Tangocard::AccountNotFoundException => e
|
31
|
+
create(customer, identifier, email)
|
32
|
+
end
|
33
|
+
end
|
34
|
+
|
35
|
+
# {"identifier"=>"test1", "email"=>"test@test.com", "customer"=>"bonusly", "available_balance"=>0}
|
36
|
+
def initialize(params)
|
37
|
+
@customer = params['customer']
|
38
|
+
@email = params['email']
|
39
|
+
@identifier = params['identifier']
|
40
|
+
@available_balance = params['available_balance'].to_i
|
41
|
+
end
|
42
|
+
|
43
|
+
def balance
|
44
|
+
@available_balance
|
45
|
+
end
|
46
|
+
|
47
|
+
def fund!(amount, client_ip, credit_card)
|
48
|
+
params = {
|
49
|
+
'amount' => amount,
|
50
|
+
'client_ip' => client_ip,
|
51
|
+
'credit_card' => credit_card,
|
52
|
+
'customer' => customer,
|
53
|
+
'account_identifier' => identifier
|
54
|
+
}
|
55
|
+
Tangocard::Raas.fund_account(params)
|
56
|
+
end
|
57
|
+
end
|
@@ -0,0 +1,40 @@
|
|
1
|
+
# Documentation: https://github.com/tangocarddev/RaaS
|
2
|
+
class Tangocard::Brand
|
3
|
+
attr_reader :description, :rewards
|
4
|
+
|
5
|
+
def self.all
|
6
|
+
result = Tangocard::Raas.rewards_index.parsed_response
|
7
|
+
result['brands'].map{|p| Tangocard::Brand.new(p)}
|
8
|
+
end
|
9
|
+
|
10
|
+
def self.default_brands
|
11
|
+
self.all.select{|b| Tangocard.configuration.default_brands.include?(b.description)}
|
12
|
+
end
|
13
|
+
|
14
|
+
def self.find(brand_name)
|
15
|
+
self.all.select{|b| b.description == brand_name}.first
|
16
|
+
end
|
17
|
+
|
18
|
+
def initialize(params)
|
19
|
+
@description = params['description']
|
20
|
+
@image_url = params['image_url']
|
21
|
+
@rewards = params['rewards'].map{|p| Tangocard::Reward.new(p)}
|
22
|
+
end
|
23
|
+
|
24
|
+
# Some brands don't have logo images provided by the API, so we do this.
|
25
|
+
def image_url
|
26
|
+
Tangocard.configuration.local_images[description] || @image_url
|
27
|
+
end
|
28
|
+
|
29
|
+
def purchasable_rewards(balance_in_cents)
|
30
|
+
rewards.select{|r| r.purchasable?(balance_in_cents) && !Tangocard.configuration.sku_blacklist.include?(r.sku)}
|
31
|
+
end
|
32
|
+
|
33
|
+
def has_purchasable_rewards?(balance_in_cents)
|
34
|
+
purchasable_rewards(balance_in_cents).any?
|
35
|
+
end
|
36
|
+
|
37
|
+
def variable_price?
|
38
|
+
rewards.select{|r| r.variable_price? }.any?
|
39
|
+
end
|
40
|
+
end
|
@@ -0,0 +1,95 @@
|
|
1
|
+
# Wrapper for Tangocard RaaS Order
|
2
|
+
# https://github.com/tangocarddev/RaaS#order-resources
|
3
|
+
class Tangocard::Order
|
4
|
+
attr_reader :order_id,
|
5
|
+
:account_identifier,
|
6
|
+
:customer,
|
7
|
+
:sku,
|
8
|
+
:amount,
|
9
|
+
:reward_message,
|
10
|
+
:reward_from,
|
11
|
+
:delivered_at,
|
12
|
+
:recipient
|
13
|
+
|
14
|
+
private_class_method :new
|
15
|
+
|
16
|
+
#{
|
17
|
+
# "success"=>true,
|
18
|
+
# "order"=> {
|
19
|
+
# "order_id"=>"113-08258652-15",
|
20
|
+
# "account_identifier"=>"ElliottTest",
|
21
|
+
# "customer"=>"ElliottTest",
|
22
|
+
# "sku"=>"APPL-E-1500-STD",
|
23
|
+
# "amount"=>1500,
|
24
|
+
# "reward_message"=>"testing",
|
25
|
+
# "reward_subject"=>"RaaS Sandbox Test",
|
26
|
+
# "reward_from"=>"Elliott",
|
27
|
+
# "delivered_at"=>"2013-08-15T17:42:18+00:00",
|
28
|
+
# "recipient"=> {
|
29
|
+
# "name"=>"Elliott",
|
30
|
+
# "email"=>"elliott@tangocard.com"
|
31
|
+
# },
|
32
|
+
# "reward"=> {
|
33
|
+
# "token"=>"520d12fa655b54.34581245",
|
34
|
+
# "number"=>"1111111111111256"
|
35
|
+
# }
|
36
|
+
# }
|
37
|
+
#}
|
38
|
+
|
39
|
+
def self.all(params = {})
|
40
|
+
response = Tangocard::Raas.orders_index(params)
|
41
|
+
if response.success?
|
42
|
+
response.parsed_response['orders'].map{|o| new(o)}
|
43
|
+
else
|
44
|
+
[]
|
45
|
+
end
|
46
|
+
end
|
47
|
+
|
48
|
+
def self.find(order_id)
|
49
|
+
response = Tangocard::Raas.show_order({'order_id' => order_id})
|
50
|
+
if response.success?
|
51
|
+
new(response.parsed_response['order'])
|
52
|
+
else
|
53
|
+
raise Tangocard::OrderNotFoundException, "Order (#{order_id}) not found. Error message: #{response.error_message}"
|
54
|
+
end
|
55
|
+
end
|
56
|
+
|
57
|
+
def self.create(params)
|
58
|
+
response = Tangocard::Raas.create_order(params)
|
59
|
+
if response.success?
|
60
|
+
new(response.parsed_response['order'])
|
61
|
+
else
|
62
|
+
raise Tangocard::OrderCreateFailedException, "#{response.error_message}"
|
63
|
+
end
|
64
|
+
end
|
65
|
+
|
66
|
+
def initialize(params)
|
67
|
+
@order_id = params['order_id']
|
68
|
+
@account_identifier = params['account_identifier']
|
69
|
+
@customer = params['customer']
|
70
|
+
@sku = params['sku']
|
71
|
+
@amount = params['amount']
|
72
|
+
@reward_message = params['reward_message']
|
73
|
+
@reward_subject = params['reward_subject']
|
74
|
+
@reward_from = params['reward_from']
|
75
|
+
@delivered_at = params['delivered_at']
|
76
|
+
@recipient = params['recipient']
|
77
|
+
@reward = params['reward']
|
78
|
+
end
|
79
|
+
|
80
|
+
def reward
|
81
|
+
if @reward.nil?
|
82
|
+
begin
|
83
|
+
@reward = Tangocard::Order.find(self.order_id).reward
|
84
|
+
rescue Tangocard::OrderNotFoundException => e
|
85
|
+
nil
|
86
|
+
end
|
87
|
+
else
|
88
|
+
@reward
|
89
|
+
end
|
90
|
+
end
|
91
|
+
|
92
|
+
def identifier
|
93
|
+
@account_identifier
|
94
|
+
end
|
95
|
+
end
|
@@ -0,0 +1,50 @@
|
|
1
|
+
# Documentation: https://github.com/tangocarddev/RaaS
|
2
|
+
class Tangocard::Raas
|
3
|
+
include HTTParty
|
4
|
+
base_uri Tangocard.configuration.base_uri
|
5
|
+
|
6
|
+
# https://github.com/tangocarddev/RaaS/blob/master/account_create.schema.json
|
7
|
+
def self.create_account(params)
|
8
|
+
Tangocard::Response.new(post('/raas/v1/accounts', {:body => params.to_json}.merge(basic_auth_param)))
|
9
|
+
end
|
10
|
+
|
11
|
+
def self.show_account(params)
|
12
|
+
Tangocard::Response.new(get("/raas/v1/accounts/#{params['customer']}/#{params['identifier']}", basic_auth_param))
|
13
|
+
end
|
14
|
+
|
15
|
+
# https://github.com/tangocarddev/RaaS/blob/master/fund_create.schema.json
|
16
|
+
def self.fund_account(params)
|
17
|
+
Tangocard::Response.new(post('/raas/v1/funds', {:body => params.to_json}.merge(basic_auth_param)))
|
18
|
+
end
|
19
|
+
|
20
|
+
def self.rewards_index
|
21
|
+
Tangocard::Response.new(get('/raas/v1/rewards', basic_auth_param))
|
22
|
+
end
|
23
|
+
|
24
|
+
# https://github.com/tangocarddev/RaaS/blob/master/order_create.schema.json
|
25
|
+
def self.create_order(params)
|
26
|
+
Tangocard::Response.new(post('/raas/v1/orders', {:body => params.to_json}.merge(basic_auth_param)))
|
27
|
+
end
|
28
|
+
|
29
|
+
def self.show_order(params)
|
30
|
+
Tangocard::Response.new(get("/raas/v1/orders/#{params['order_id']}", basic_auth_param))
|
31
|
+
end
|
32
|
+
|
33
|
+
def self.orders_index(params = {})
|
34
|
+
query_string = ""
|
35
|
+
if params.any?
|
36
|
+
query_string = "?"
|
37
|
+
params.keys.each_with_index do |k,i|
|
38
|
+
query_string += "&" unless i == 0
|
39
|
+
query_string += "#{k}=#{params[k]}"
|
40
|
+
end
|
41
|
+
end
|
42
|
+
Tangocard::Response.new(get("/raas/v1/orders#{query_string}", basic_auth_param))
|
43
|
+
end
|
44
|
+
|
45
|
+
private
|
46
|
+
|
47
|
+
def self.basic_auth_param
|
48
|
+
{:basic_auth => {:username => Tangocard.configuration.name, :password => Tangocard.configuration.key}}
|
49
|
+
end
|
50
|
+
end
|
@@ -0,0 +1,29 @@
|
|
1
|
+
# Tangocard RaaS Response Wrapper
|
2
|
+
# https://github.com/tangocarddev/RaaS#responses
|
3
|
+
class Tangocard::Response
|
4
|
+
attr_reader :raw_response
|
5
|
+
|
6
|
+
def initialize(raw_response)
|
7
|
+
@raw_response = raw_response
|
8
|
+
end
|
9
|
+
|
10
|
+
def parsed_response
|
11
|
+
raw_response.parsed_response
|
12
|
+
end
|
13
|
+
|
14
|
+
def code
|
15
|
+
raw_response.code
|
16
|
+
end
|
17
|
+
|
18
|
+
def success?
|
19
|
+
parsed_response['success']
|
20
|
+
end
|
21
|
+
|
22
|
+
def error_message
|
23
|
+
parsed_response['error_message']
|
24
|
+
end
|
25
|
+
|
26
|
+
def invalid_inputs
|
27
|
+
parsed_response['invalid_inputs']
|
28
|
+
end
|
29
|
+
end
|
@@ -0,0 +1,34 @@
|
|
1
|
+
# Documentation: https://github.com/tangocarddev/RaaS
|
2
|
+
class Tangocard::Reward
|
3
|
+
attr_reader :description, :sku, :currency_type, :unit_price, :available, :min_price, :max_price
|
4
|
+
|
5
|
+
def initialize(params)
|
6
|
+
@description = params['description']
|
7
|
+
@sku = params['sku']
|
8
|
+
@currency_type = params['currency_type']
|
9
|
+
@unit_price = params['unit_price'].to_i
|
10
|
+
@available = params['available']
|
11
|
+
@min_price = params['min_price'].to_i
|
12
|
+
@max_price = params['max_price'].to_i
|
13
|
+
end
|
14
|
+
|
15
|
+
def variable_price?
|
16
|
+
self.unit_price == -1
|
17
|
+
end
|
18
|
+
|
19
|
+
def purchasable?(balance_in_cents)
|
20
|
+
return false unless available
|
21
|
+
|
22
|
+
if variable_price?
|
23
|
+
min_price <= balance_in_cents
|
24
|
+
else
|
25
|
+
unit_price <= balance_in_cents
|
26
|
+
end
|
27
|
+
end
|
28
|
+
|
29
|
+
def price_in_usd(field_name)
|
30
|
+
return nil unless [:min_price, :max_price, :unit_price].include?(field_name)
|
31
|
+
|
32
|
+
Money.new(self.send(field_name), "USD")
|
33
|
+
end
|
34
|
+
end
|
metadata
ADDED
@@ -0,0 +1,116 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: tangocard
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 0.1.0
|
5
|
+
platform: ruby
|
6
|
+
authors:
|
7
|
+
- Raphael Crawford-Marks
|
8
|
+
autorequire:
|
9
|
+
bindir: bin
|
10
|
+
cert_chain: []
|
11
|
+
date: 2013-09-17 00:00:00.000000000 Z
|
12
|
+
dependencies:
|
13
|
+
- !ruby/object:Gem::Dependency
|
14
|
+
name: httparty
|
15
|
+
requirement: !ruby/object:Gem::Requirement
|
16
|
+
requirements:
|
17
|
+
- - ~>
|
18
|
+
- !ruby/object:Gem::Version
|
19
|
+
version: 0.11.0
|
20
|
+
type: :runtime
|
21
|
+
prerelease: false
|
22
|
+
version_requirements: !ruby/object:Gem::Requirement
|
23
|
+
requirements:
|
24
|
+
- - ~>
|
25
|
+
- !ruby/object:Gem::Version
|
26
|
+
version: 0.11.0
|
27
|
+
- !ruby/object:Gem::Dependency
|
28
|
+
name: money
|
29
|
+
requirement: !ruby/object:Gem::Requirement
|
30
|
+
requirements:
|
31
|
+
- - ~>
|
32
|
+
- !ruby/object:Gem::Version
|
33
|
+
version: 5.1.1
|
34
|
+
type: :runtime
|
35
|
+
prerelease: false
|
36
|
+
version_requirements: !ruby/object:Gem::Requirement
|
37
|
+
requirements:
|
38
|
+
- - ~>
|
39
|
+
- !ruby/object:Gem::Version
|
40
|
+
version: 5.1.1
|
41
|
+
- !ruby/object:Gem::Dependency
|
42
|
+
name: rspec
|
43
|
+
requirement: !ruby/object:Gem::Requirement
|
44
|
+
requirements:
|
45
|
+
- - ! '>='
|
46
|
+
- !ruby/object:Gem::Version
|
47
|
+
version: '0'
|
48
|
+
type: :development
|
49
|
+
prerelease: false
|
50
|
+
version_requirements: !ruby/object:Gem::Requirement
|
51
|
+
requirements:
|
52
|
+
- - ! '>='
|
53
|
+
- !ruby/object:Gem::Version
|
54
|
+
version: '0'
|
55
|
+
- !ruby/object:Gem::Dependency
|
56
|
+
name: rr
|
57
|
+
requirement: !ruby/object:Gem::Requirement
|
58
|
+
requirements:
|
59
|
+
- - ! '>='
|
60
|
+
- !ruby/object:Gem::Version
|
61
|
+
version: '0'
|
62
|
+
type: :development
|
63
|
+
prerelease: false
|
64
|
+
version_requirements: !ruby/object:Gem::Requirement
|
65
|
+
requirements:
|
66
|
+
- - ! '>='
|
67
|
+
- !ruby/object:Gem::Version
|
68
|
+
version: '0'
|
69
|
+
description: ! "Tango Card provides a RaaS API for developers (https://github.com/tangocarddev/RaaS).
|
70
|
+
This gem\n provides commonsense Ruby objects to wrap the JSON
|
71
|
+
endpoints of the RaaS API."
|
72
|
+
email:
|
73
|
+
- raphael@bonus.ly
|
74
|
+
executables: []
|
75
|
+
extensions: []
|
76
|
+
extra_rdoc_files: []
|
77
|
+
files:
|
78
|
+
- lib/tangocard/account.rb
|
79
|
+
- lib/tangocard/account_create_failed_exception.rb
|
80
|
+
- lib/tangocard/account_not_found_exception.rb
|
81
|
+
- lib/tangocard/brand.rb
|
82
|
+
- lib/tangocard/order.rb
|
83
|
+
- lib/tangocard/order_create_failed_exception.rb
|
84
|
+
- lib/tangocard/order_not_found_exception.rb
|
85
|
+
- lib/tangocard/raas.rb
|
86
|
+
- lib/tangocard/response.rb
|
87
|
+
- lib/tangocard/reward.rb
|
88
|
+
- lib/tangocard/version.rb
|
89
|
+
- lib/tangocard.rb
|
90
|
+
- MIT-LICENSE
|
91
|
+
- Rakefile
|
92
|
+
- README.rdoc
|
93
|
+
homepage: http://bonus.ly
|
94
|
+
licenses: []
|
95
|
+
metadata: {}
|
96
|
+
post_install_message:
|
97
|
+
rdoc_options: []
|
98
|
+
require_paths:
|
99
|
+
- lib
|
100
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
101
|
+
requirements:
|
102
|
+
- - ! '>='
|
103
|
+
- !ruby/object:Gem::Version
|
104
|
+
version: '0'
|
105
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
106
|
+
requirements:
|
107
|
+
- - ! '>='
|
108
|
+
- !ruby/object:Gem::Version
|
109
|
+
version: '0'
|
110
|
+
requirements: []
|
111
|
+
rubyforge_project:
|
112
|
+
rubygems_version: 2.1.4
|
113
|
+
signing_key:
|
114
|
+
specification_version: 4
|
115
|
+
summary: Ruby Wrapper for Tango Card RaaS API.
|
116
|
+
test_files: []
|