wizypay-api-client 0.2.2 → 0.2.3

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: fea8329539f0457da4dc96c3fe29b9ba76cdde79
4
- data.tar.gz: 7ff679baa52f95b4ffdc3f3686b7b73736f7361b
3
+ metadata.gz: 4bca630ae75a36db5e41f3cb75ee501d9cf14add
4
+ data.tar.gz: bf3964e81428eba7194195083f42cfffadfc746d
5
5
  SHA512:
6
- metadata.gz: ec8fa60444298cc762f5b34ea9b0ca9e3c5b645332526a946c0f3f6b23f61cf41e2ddb10232804886bd2993e0e7894206735f1532c56a9029fa3781b02bec1b1
7
- data.tar.gz: 12f3c0745c3484c2710a24fb39ed629bc3caf0fde5d273c1b1800425cc8f30fe0b7140d2cee345cb60195717ef2fe0054f64a2c8e39589f14f8266ae36d10a25
6
+ metadata.gz: df0f6ab6adfb7f945e6abccc97d484489b5f8299f67a84b910a3d2c9d8b5545679b5cd01caf0b3f447f7560362e83577335e7a3195ae62322c07d11fd5c1686b
7
+ data.tar.gz: 61306abd6fde64bffb67a71fecded4ec07ac6a578a5cb788a2f30ac9275e5741e025afd972b8380faa6d7b71327a1aeb86c6c437078340d8c46c1a4caeb4b0ef
data/lib/wizypay/card.rb CHANGED
@@ -1,5 +1,20 @@
1
1
  module Wizypay
2
2
  class Card < Resource
3
+ include SimpleHmac::Helper
4
+
5
+ def self.where(q)
6
+ raw = Client.get('/cards', q)
7
+ Collection.new(self, raw[:data], raw[:meta])
8
+ end
9
+
10
+ def self.all(q = {})
11
+ where(q)
12
+ end
13
+
14
+ def self.find(id)
15
+ new(Client.get("/cards/#{id}")[:data])
16
+ end
17
+
3
18
  def self.create(reference, amount, currency, merchant_id, user)
4
19
  user = user.to_json if user.is_a?(Hash)
5
20
  new(amount: amount, currency: currency, merchant_id: merchant_id, reference: reference, user: user).tap do |card|
@@ -21,7 +36,7 @@ module Wizypay
21
36
 
22
37
  def url
23
38
  timestamp = Time.now.utc.httpdate
24
- security = Base64.strict_encode64(OpenSSL::HMAC.digest('sha256', Client.api_secret, "#{reference}\n#{timestamp}"))
39
+ security = sign_string("#{reference}\n#{timestamp}", Client.api_secret)
25
40
  query_string = {
26
41
  key: Client.api_key,
27
42
  timestamp: timestamp,
@@ -34,5 +49,18 @@ module Wizypay
34
49
  def save
35
50
  reinitialize Client.post('/cards', to_h)
36
51
  end
52
+
53
+ def created_at
54
+ return nil unless super.present?
55
+ Time.parse(super)
56
+ end
57
+
58
+ def operations
59
+ Collection.new(VdcOperation, super['data'], super['meta'])
60
+ end
61
+
62
+ def refunds
63
+ Collection.new(Refund, super['data'], super['meta'])
64
+ end
37
65
  end
38
66
  end
@@ -0,0 +1,10 @@
1
+ module Wizypay
2
+ class Refund < Resource
3
+ %w(created_at executed_at pending_until).each do |time_attr|
4
+ define_method time_attr do
5
+ return nil unless super.present?
6
+ Time.parse(super)
7
+ end
8
+ end
9
+ end
10
+ end
@@ -0,0 +1,8 @@
1
+ module Wizypay
2
+ class VdcOperation < Resource
3
+ def timestamp
4
+ return nil unless super.present?
5
+ Time.parse(super)
6
+ end
7
+ end
8
+ end
@@ -1,3 +1,3 @@
1
1
  module Wizypay
2
- VERSION = '0.2.2'
2
+ VERSION = '0.2.3'
3
3
  end
data/lib/wizypay.rb CHANGED
@@ -1,7 +1,4 @@
1
1
  require 'time'
2
- require 'base64'
3
- require 'openssl'
4
- require 'securerandom'
5
2
  require 'rest-client'
6
3
  require 'simple-hmac'
7
4
  require 'json'
@@ -9,6 +6,8 @@ require_relative 'wizypay/client'
9
6
  require_relative 'wizypay/resource'
10
7
  require_relative 'wizypay/collection'
11
8
  require_relative 'wizypay/card'
9
+ require_relative 'wizypay/vdc_operation'
10
+ require_relative 'wizypay/refund'
12
11
  require_relative 'wizypay/ad'
13
12
  require_relative 'wizypay/merchant_category'
14
13
  require_relative 'wizypay/merchant'
@@ -0,0 +1,44 @@
1
+ require 'spec_helper'
2
+
3
+ module Wizypay
4
+ RSpec.describe Card do
5
+ let(:api_key) { 'key' }
6
+ let(:api_secret) { 'secret' }
7
+ let(:api_endpoint) { 'https://api.wizypay.com' }
8
+ let(:all_cards_request) { stub_request(:get, "#{api_endpoint}/cards").
9
+ with(headers: { 'Accept' => 'application/json',
10
+ 'Authorization' => /WIZYPAY #{api_key}:.*/ }) }
11
+ let(:where_cards_request) { stub_request(:get, "#{api_endpoint}/cards?beneficiary=john").
12
+ with(headers: { 'Accept' => 'application/json',
13
+ 'Authorization' => /WIZYPAY #{api_key}:.*/ }) }
14
+ before do
15
+ Wizypay.setup(api_key, api_secret, api_endpoint)
16
+ end
17
+
18
+ context 'all' do
19
+ it 'returns empty body' do
20
+ request = all_cards_request.to_return(status: 200, body: '{"data": []}')
21
+ response = Card.all
22
+ expect(request).to have_been_made
23
+ expect(response).to be_empty
24
+ end
25
+
26
+ it 'is a collection' do
27
+ all_cards_request.to_return(status: 200, body: '{"data": [{"id": 1, "partial_number": "XXXX-1234"}]}')
28
+ response = Card.all
29
+ expect(response).to be_a(Collection)
30
+ expect(response.first).to be_a(Card)
31
+ expect(response.first.partial_number).to eq 'XXXX-1234'
32
+ end
33
+ end
34
+
35
+ context 'where' do
36
+ it 'returns empty body' do
37
+ request = where_cards_request.to_return(status: 200, body: '{"data": []}')
38
+ response = Card.where(beneficiary: 'john')
39
+ expect(request).to have_been_made
40
+ expect(response).to be_empty
41
+ end
42
+ end
43
+ end
44
+ end
@@ -0,0 +1,40 @@
1
+ require 'spec_helper'
2
+
3
+ module Wizypay
4
+ RSpec.describe Card do
5
+ let(:api_key) { 'key' }
6
+ let(:api_secret) { 'secret' }
7
+ let(:api_endpoint) { 'https://api.wizypay.com' }
8
+ let(:card_id) { 1 }
9
+ let(:card_request) { stub_request(:get, "#{api_endpoint}/cards/#{card_id}").
10
+ with(headers: { 'Accept' => 'application/json',
11
+ 'Authorization' => /WIZYPAY #{api_key}:.*/ }) }
12
+ before do
13
+ Wizypay.setup(api_key, api_secret, api_endpoint)
14
+ end
15
+
16
+ it 'is a card' do
17
+ request = card_request.to_return(status: 200, body: '{"data": {"id": 1, "partial_number": "XXXX-1234"}}')
18
+ response = Card.find(card_id)
19
+ expect(request).to have_been_made
20
+ expect(response).to be_a(Card)
21
+ expect(response.partial_number).to eq 'XXXX-1234'
22
+ end
23
+
24
+ it 'has operations' do
25
+ card_request.to_return(status: 200, body: '{"data": {"operations": {"data": [{"id": 1}]}}}')
26
+ response = Card.find(card_id)
27
+ expect(response.operations).to be_a(Collection)
28
+ expect(response.operations.first).to be_a(VdcOperation)
29
+ expect(response.operations.first.id).to eq 1
30
+ end
31
+
32
+ it 'has refunds' do
33
+ card_request.to_return(status: 200, body: '{"data": {"refunds": {"data": [{"id": 1}]}}}')
34
+ response = Card.find(card_id)
35
+ expect(response.refunds).to be_a(Collection)
36
+ expect(response.refunds.first).to be_a(Refund)
37
+ expect(response.refunds.first.id).to eq 1
38
+ end
39
+ end
40
+ end
@@ -3,6 +3,7 @@ require 'time'
3
3
 
4
4
  module Wizypay
5
5
  RSpec.describe 'Card#url' do
6
+ include SimpleHmac::Helper
6
7
 
7
8
  let(:api_key) { 'key' }
8
9
  let(:api_secret) { 'secret' }
@@ -14,13 +15,14 @@ module Wizypay
14
15
  end
15
16
 
16
17
  it 'returns' do
17
- t = Time.new('2015-10-30T21:00:00+001')
18
+ t = Time.new(2015, 1, 1, 0, 0, 0, "+01:00")
18
19
  Timecop.freeze(t) do
19
20
  url = Card.new(reference: reference).url
21
+ expected_security = sign_string("#{reference}\n#{t.httpdate}", api_secret)
20
22
  expect(url).to eq("#{api_endpoint}/widget?key=#{URI::encode_www_form_component api_key}"+
21
23
  "&timestamp=#{URI::encode_www_form_component t.httpdate}" +
22
24
  "&reference=#{URI::encode_www_form_component reference}"+
23
- "&security=0fKNCz6hux0IjNCz31JHgzh35gqLTAIM8z3iNhSkC7g%3D")
25
+ "&security=#{URI::encode_www_form_component expected_security}")
24
26
  end
25
27
  end
26
28
 
@@ -1,7 +1,7 @@
1
1
  require 'spec_helper'
2
2
 
3
3
  module Wizypay
4
- RSpec.describe Merchant do
4
+ RSpec.describe MerchantCategory do
5
5
  let(:api_key) { 'key' }
6
6
  let(:api_secret) { 'secret' }
7
7
  let(:api_endpoint) { 'https://api.wizypay.com' }
@@ -1,7 +1,7 @@
1
1
  require 'spec_helper'
2
2
 
3
3
  module Wizypay
4
- RSpec.describe Merchant do
4
+ RSpec.describe MerchantVersion do
5
5
  let(:api_key) { 'key' }
6
6
  let(:api_secret) { 'secret' }
7
7
  let(:api_endpoint) { 'https://api.wizypay.com' }
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: wizypay-api-client
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.2.2
4
+ version: 0.2.3
5
5
  platform: ruby
6
6
  authors:
7
7
  - Chaker Nakhli
@@ -10,7 +10,7 @@ authors:
10
10
  autorequire:
11
11
  bindir: bin
12
12
  cert_chain: []
13
- date: 2016-01-29 00:00:00.000000000 Z
13
+ date: 2016-02-01 00:00:00.000000000 Z
14
14
  dependencies:
15
15
  - !ruby/object:Gem::Dependency
16
16
  name: simple-hmac
@@ -157,9 +157,13 @@ files:
157
157
  - lib/wizypay/merchant.rb
158
158
  - lib/wizypay/merchant_category.rb
159
159
  - lib/wizypay/merchant_version.rb
160
+ - lib/wizypay/refund.rb
160
161
  - lib/wizypay/resource.rb
162
+ - lib/wizypay/vdc_operation.rb
161
163
  - lib/wizypay/version.rb
162
164
  - spec/card/cancel_card_spec.rb
165
+ - spec/card/card_all_spec.rb
166
+ - spec/card/card_show_spec.rb
163
167
  - spec/card/card_url_spec.rb
164
168
  - spec/card/create_card_spec.rb
165
169
  - spec/merchant/merchant_spec.rb
@@ -193,6 +197,8 @@ specification_version: 4
193
197
  summary: Programmatic API to access Wizypay's API.
194
198
  test_files:
195
199
  - spec/card/cancel_card_spec.rb
200
+ - spec/card/card_all_spec.rb
201
+ - spec/card/card_show_spec.rb
196
202
  - spec/card/card_url_spec.rb
197
203
  - spec/card/create_card_spec.rb
198
204
  - spec/merchant/merchant_spec.rb