gyft 0.0.2 → 0.0.3
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/README.md +51 -4
- data/lib/gyft.rb +3 -0
- data/lib/gyft/client.rb +15 -5
- data/lib/gyft/client/partner.rb +38 -0
- data/lib/gyft/client/reseller.rb +4 -29
- data/lib/gyft/client/transactions.rb +34 -0
- data/lib/gyft/refund.rb +2 -0
- data/lib/gyft/version.rb +1 -1
- metadata +4 -1
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 430c2c8154291101cc09ba954792337d3d81ec03
|
4
|
+
data.tar.gz: 2cc655c695a6b1808c3ae2bab91b1500dc933098
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 82f72fb65b37d149546bea4bc5df1ebc2101579473472f2a541583f7c3149f32f9058a3b46a2998b7ba500e1f630541cc8585535cf9c59b91c3f61ba46813394
|
7
|
+
data.tar.gz: 6903ddb6c74b2bdaa0d3e1bd3923ce366377c3a75ca23ebc96bfadbe714319e40c953615300bd648ba356d398c95cbc11a45de73e4a68b5f9f553b39f1c27032
|
data/README.md
CHANGED
@@ -34,6 +34,19 @@ client = Gyft::Client.new
|
|
34
34
|
client.reseller.shop_cards # => [#<Gyft::Card id=123, merchant_id="123", ...>, ...]
|
35
35
|
```
|
36
36
|
|
37
|
+
The client provides with direct access to every API call as documented in the developer documentation. Additionally it also provides some convenience methods.
|
38
|
+
|
39
|
+
```rb
|
40
|
+
# get a card to purchase
|
41
|
+
card = client.reseller.shop_cards.first
|
42
|
+
# purchase the card for someone
|
43
|
+
transaction = card.purchase(to_email: 'customer@example.com', shop_card_id: 1234)
|
44
|
+
# load more details on the transaction
|
45
|
+
transaction = transaction.reload
|
46
|
+
# refund the transaction
|
47
|
+
transaction.refund
|
48
|
+
```
|
49
|
+
|
37
50
|
## API
|
38
51
|
|
39
52
|
### GET /health/check
|
@@ -161,7 +174,7 @@ Gyft::Account {
|
|
161
174
|
Returns a list of all the transactions for the reseller.
|
162
175
|
|
163
176
|
```rb
|
164
|
-
> transactions = client.reseller.transactions
|
177
|
+
> transactions = client.reseller.transactions.all
|
165
178
|
[#<Gyft::Transaction id=123, type=1, amount=25.0, created_when=1469034701000>, ...]
|
166
179
|
> transactions.first
|
167
180
|
Gyft::Transaction {
|
@@ -177,7 +190,7 @@ Gyft::Transaction {
|
|
177
190
|
Returns a limited list of recent transactions for the reseller.
|
178
191
|
|
179
192
|
```rb
|
180
|
-
> transactions = client.reseller.transactions(
|
193
|
+
> transactions = client.reseller.transactions.last(1)
|
181
194
|
[#<Gyft::Transaction id=123, type=1, amount=25.0, created_when=1469034701000>]
|
182
195
|
> transactions.first
|
183
196
|
Gyft::Transaction {
|
@@ -193,7 +206,7 @@ Gyft::Transaction {
|
|
193
206
|
Returns a limited list of initial transactions for the reseller.
|
194
207
|
|
195
208
|
```rb
|
196
|
-
> transactions = client.reseller.transactions(
|
209
|
+
> transactions = client.reseller.transactions.first(1)
|
197
210
|
[#<Gyft::Transaction id=122, type=1, amount=25.0, created_when=1469034701000>]
|
198
211
|
> transactions.first
|
199
212
|
Gyft::Transaction {
|
@@ -209,7 +222,7 @@ Gyft::Transaction {
|
|
209
222
|
Returns a full details for a sent transaction
|
210
223
|
|
211
224
|
```rb
|
212
|
-
> client.
|
225
|
+
> client.transactions.find(123)
|
213
226
|
Gyft::Transaction {
|
214
227
|
:id => 123,
|
215
228
|
:merchant_name => "Grotto",
|
@@ -224,3 +237,37 @@ Gyft::Transaction {
|
|
224
237
|
:gift_created => 1469034701000
|
225
238
|
}
|
226
239
|
```
|
240
|
+
|
241
|
+
### POST /transaction/refund
|
242
|
+
|
243
|
+
Refund transaction and get card details.
|
244
|
+
|
245
|
+
```rb
|
246
|
+
> client.transactions.refund(123)
|
247
|
+
Gyft::Refund {
|
248
|
+
:id => "OTlkOGM1...k5W",
|
249
|
+
:status => 0,
|
250
|
+
|
251
|
+
:gf_reseller_id => "abc123",
|
252
|
+
:gf_reseller_transaction_id => 123333,
|
253
|
+
:email => "client@example.com",
|
254
|
+
:gf_order_id => 123456,
|
255
|
+
:gf_order_detail_id => 345678,
|
256
|
+
:gf_gyfted_card_id => 678997,
|
257
|
+
:invalidated => false
|
258
|
+
}
|
259
|
+
```
|
260
|
+
|
261
|
+
### POST /partner/purchase/gift_card_direct
|
262
|
+
|
263
|
+
```rb
|
264
|
+
> client.partner.purchase.gift_card_direct(
|
265
|
+
to_email: 'customer@example.com',
|
266
|
+
shop_card_id: 1234
|
267
|
+
)
|
268
|
+
|
269
|
+
Gyft::Transaction {
|
270
|
+
:id => 1250483,
|
271
|
+
:url => "https://staging.gyft.com/card/#/?c=...."
|
272
|
+
}
|
273
|
+
```
|
data/lib/gyft.rb
CHANGED
@@ -2,8 +2,11 @@ require 'gyft/version'
|
|
2
2
|
require 'gyft/client'
|
3
3
|
require 'gyft/client/health'
|
4
4
|
require 'gyft/client/reseller'
|
5
|
+
require 'gyft/client/partner'
|
6
|
+
require 'gyft/client/transactions'
|
5
7
|
require 'gyft/card'
|
6
8
|
require 'gyft/category'
|
7
9
|
require 'gyft/merchant'
|
8
10
|
require 'gyft/account'
|
9
11
|
require 'gyft/transaction'
|
12
|
+
require 'gyft/refund'
|
data/lib/gyft/client.rb
CHANGED
@@ -47,11 +47,21 @@ module Gyft
|
|
47
47
|
Gyft::Client::Reseller.new(self)
|
48
48
|
end
|
49
49
|
|
50
|
-
def
|
51
|
-
|
50
|
+
def partner
|
51
|
+
Gyft::Client::Partner.new(self)
|
52
|
+
end
|
53
|
+
|
54
|
+
def get(path)
|
55
|
+
uri, timestamp = uri_for(path)
|
52
56
|
message = Net::HTTP::Get.new(uri.request_uri)
|
53
57
|
message['x-sig-timestamp'] = timestamp
|
54
|
-
|
58
|
+
transmit(message)
|
59
|
+
end
|
60
|
+
|
61
|
+
def post(path, params = {})
|
62
|
+
uri, timestamp = uri_for(path, params)
|
63
|
+
message = Net::HTTP::Post.new(uri.request_uri)
|
64
|
+
message['x-sig-timestamp'] = timestamp
|
55
65
|
transmit(message)
|
56
66
|
end
|
57
67
|
|
@@ -60,10 +70,10 @@ module Gyft
|
|
60
70
|
def uri_for(path, params = {})
|
61
71
|
uri = URI("https://#{ENDPOINTS[environment]}/mashery/v1#{path}")
|
62
72
|
sig, timestamp = signature
|
63
|
-
uri.query = URI.encode_www_form({
|
73
|
+
uri.query = URI.encode_www_form(params.merge({
|
64
74
|
api_key: api_key,
|
65
75
|
sig: sig
|
66
|
-
})
|
76
|
+
}))
|
67
77
|
[uri, timestamp]
|
68
78
|
end
|
69
79
|
|
@@ -0,0 +1,38 @@
|
|
1
|
+
class Gyft::Client::Partner
|
2
|
+
def initialize client
|
3
|
+
@client = client
|
4
|
+
end
|
5
|
+
|
6
|
+
def purchase
|
7
|
+
self
|
8
|
+
end
|
9
|
+
|
10
|
+
def gift_card_direct params = {}
|
11
|
+
params = symbolize(params)
|
12
|
+
options = extract(params, :to_email, :shop_card_id)
|
13
|
+
options = merge(options, params, :reseller_reference, :notes, :first_name, :last_name, :gender, :birthday)
|
14
|
+
result = @client.post("/partner/purchase/gift_card_direct", options)
|
15
|
+
Gyft::Transaction.new(result)
|
16
|
+
end
|
17
|
+
|
18
|
+
private
|
19
|
+
|
20
|
+
def symbolize params
|
21
|
+
params.inject({}){|hash,(k,v)| hash[k.to_sym] = v; hash}
|
22
|
+
end
|
23
|
+
|
24
|
+
def extract params, *args
|
25
|
+
options = {}
|
26
|
+
args.each do |arg|
|
27
|
+
options[arg] = params.fetch(arg)
|
28
|
+
end
|
29
|
+
options
|
30
|
+
end
|
31
|
+
|
32
|
+
def merge options, params, *args
|
33
|
+
args.each do |arg|
|
34
|
+
options[arg] = params[arg] if params[arg]
|
35
|
+
end
|
36
|
+
options
|
37
|
+
end
|
38
|
+
end
|
data/lib/gyft/client/reseller.rb
CHANGED
@@ -1,6 +1,3 @@
|
|
1
|
-
|
2
|
-
require 'awesome_print'
|
3
|
-
|
4
1
|
class Gyft::Client::Reseller
|
5
2
|
|
6
3
|
def initialize client
|
@@ -37,33 +34,11 @@ class Gyft::Client::Reseller
|
|
37
34
|
Gyft::Account.new(result)
|
38
35
|
end
|
39
36
|
|
40
|
-
def transactions
|
41
|
-
|
42
|
-
|
43
|
-
@client.get(path).map do |transaction|
|
44
|
-
Gyft::Transaction.new(transaction)
|
45
|
-
end
|
46
|
-
end
|
47
|
-
|
48
|
-
def transaction id
|
49
|
-
result = @client.get("/reseller/transaction/#{id}")
|
50
|
-
Gyft::Transaction.new(result)
|
37
|
+
def transactions
|
38
|
+
Gyft::Client::Transactions.new(@client)
|
51
39
|
end
|
52
40
|
|
53
|
-
|
54
|
-
|
55
|
-
def transactions_path_for(options)
|
56
|
-
last = options[:last]
|
57
|
-
first = options[:first]
|
58
|
-
|
59
|
-
path = begin
|
60
|
-
if last && last > 0
|
61
|
-
"/reseller/transactions/last/#{last}"
|
62
|
-
elsif first && first > 0
|
63
|
-
"/reseller/transactions/first/#{first}"
|
64
|
-
else
|
65
|
-
'/reseller/transactions'
|
66
|
-
end
|
67
|
-
end
|
41
|
+
def transaction
|
42
|
+
Gyft::Client::Transactions.new(@client)
|
68
43
|
end
|
69
44
|
end
|
@@ -0,0 +1,34 @@
|
|
1
|
+
class Gyft::Client::Transactions
|
2
|
+
|
3
|
+
def initialize client
|
4
|
+
@client = client
|
5
|
+
end
|
6
|
+
|
7
|
+
def find id
|
8
|
+
result = @client.get("/reseller/transaction/#{id}")
|
9
|
+
Gyft::Transaction.new(result)
|
10
|
+
end
|
11
|
+
|
12
|
+
def all
|
13
|
+
@client.get('/reseller/transactions').map do |transaction|
|
14
|
+
Gyft::Transaction.new(transaction)
|
15
|
+
end
|
16
|
+
end
|
17
|
+
|
18
|
+
def first number_of_records
|
19
|
+
@client.get("/reseller/transactions/first/#{number_of_records}").map do |transaction|
|
20
|
+
Gyft::Transaction.new(transaction)
|
21
|
+
end
|
22
|
+
end
|
23
|
+
|
24
|
+
def last number_of_records
|
25
|
+
@client.get("/reseller/transactions/last/#{number_of_records}").map do |transaction|
|
26
|
+
Gyft::Transaction.new(transaction)
|
27
|
+
end
|
28
|
+
end
|
29
|
+
|
30
|
+
def refund id
|
31
|
+
result = @client.post("/reseller/transaction/refund", id: id)
|
32
|
+
Gyft::Refund.new(result)
|
33
|
+
end
|
34
|
+
end
|
data/lib/gyft/refund.rb
ADDED
data/lib/gyft/version.rb
CHANGED
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: gyft
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.3
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Cristiano Betta
|
@@ -81,8 +81,11 @@ files:
|
|
81
81
|
- lib/gyft/category.rb
|
82
82
|
- lib/gyft/client.rb
|
83
83
|
- lib/gyft/client/health.rb
|
84
|
+
- lib/gyft/client/partner.rb
|
84
85
|
- lib/gyft/client/reseller.rb
|
86
|
+
- lib/gyft/client/transactions.rb
|
85
87
|
- lib/gyft/merchant.rb
|
88
|
+
- lib/gyft/refund.rb
|
86
89
|
- lib/gyft/transaction.rb
|
87
90
|
- lib/gyft/version.rb
|
88
91
|
- spec/gyft_spec.rb
|