coingate 1.0.1 → 2.0.0

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: d5cacfa153fb957d6aabc39b4256088635c10476
4
- data.tar.gz: 46c1dd848e2f5aef091c8b4767550794b5a7d8f9
3
+ metadata.gz: 20d0f614e7f63f731fcf8be425e7996815f2821a
4
+ data.tar.gz: e881bbb6daa9a65d4c3aecfa42b180a0ecf2eba9
5
5
  SHA512:
6
- metadata.gz: 95110b8ac7444f6867193206ef5a9ba35c1bfca54d8d802d985a11cbd3cd0ef4f1df681e92bd754d11406276012e7d0153c02fe9549e230a35988a002795545f
7
- data.tar.gz: b9ebb74fa958b7c0cee75cda771ac1f2e18c6c59dbc0962bada10b3401859f3f7b8849d2303620ee491a773e3d9be03d902e09e7df0af5369249c99b23604c5d
6
+ metadata.gz: f482452dadb80bdd536b96a133ed4b2c5892cb97a54fc57930935439b97bc07407022dfdf1acbc5f590d24becb0db993fddfee5cffc77d11b6893d1e1a7708d1
7
+ data.tar.gz: 8b36ae10c932f22763edd06395d8fb21a9325be0e185d9203e5dc57b4ad7cab90ce763ba9aae8659ec82ef13360db798e76b8fd2385e34075b5a9a7491cee306
@@ -1,24 +1,26 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- coingate (1.0.0)
4
+ coingate (2.0.0)
5
5
  rest-client
6
6
 
7
7
  GEM
8
8
  remote: https://rubygems.org/
9
9
  specs:
10
10
  diff-lcs (1.2.5)
11
- domain_name (0.5.20160310)
11
+ domain_name (0.5.20180417)
12
12
  unf (>= 0.0.5, < 1.0.0)
13
- http-cookie (1.0.2)
13
+ http-cookie (1.0.3)
14
14
  domain_name (~> 0.5)
15
- mime-types (2.99.1)
15
+ mime-types (3.1)
16
+ mime-types-data (~> 3.2015)
17
+ mime-types-data (3.2016.0521)
16
18
  netrc (0.11.0)
17
19
  rake (10.5.0)
18
- rest-client (1.8.0)
20
+ rest-client (2.0.2)
19
21
  http-cookie (>= 1.0.2, < 2.0)
20
- mime-types (>= 1.16, < 3.0)
21
- netrc (~> 0.7)
22
+ mime-types (>= 1.16, < 4.0)
23
+ netrc (~> 0.8)
22
24
  rspec (3.4.0)
23
25
  rspec-core (~> 3.4.0)
24
26
  rspec-expectations (~> 3.4.0)
@@ -34,7 +36,7 @@ GEM
34
36
  rspec-support (3.4.1)
35
37
  unf (0.1.4)
36
38
  unf_ext
37
- unf_ext (0.0.7.2)
39
+ unf_ext (0.0.7.5)
38
40
 
39
41
  PLATFORMS
40
42
  ruby
@@ -46,4 +48,4 @@ DEPENDENCIES
46
48
  rspec
47
49
 
48
50
  BUNDLED WITH
49
- 1.10.6
51
+ 1.16.0
data/README.md CHANGED
@@ -21,7 +21,7 @@ And then execute:
21
21
  Or install it yourself by executing:
22
22
 
23
23
  $ gem install coingate
24
-
24
+
25
25
  ## Usage
26
26
 
27
27
  ### Create API credentials
@@ -34,17 +34,17 @@ You can set default configuration like this:
34
34
 
35
35
  ```ruby
36
36
  CoinGate.config do |config|
37
- config.app_id = 1
38
- config.api_key = 'get_your_key_at_coingatecom'
39
- config.api_secret = 'get_your_key_at_coingatecom'
37
+ config.auth_token = 'get_your_auth_token_at_coingatecom'
40
38
  config.environment = 'live' # live or sandbox. Default: live
41
39
  end
40
+
41
+ order = CoinGate::Merchant::Order.find(1)
42
42
  ```
43
43
 
44
44
  Or you can pass authentication params individually, for example:
45
45
 
46
46
  ```ruby
47
- CoinGate::Merchant::Order.find(1, {app_id: 1, api_key: 'coingate', api_secret: 'coingate', environment: 'sandbox'})
47
+ order = CoinGate::Merchant::Order.find(1, {auth_token: 'coingate', environment: 'sandbox'})
48
48
  ```
49
49
 
50
50
  ### Create Order
@@ -54,8 +54,8 @@ CoinGate::Merchant::Order.find(1, {app_id: 1, api_key: 'coingate', api_secret: '
54
54
  ```ruby
55
55
  post_params = {
56
56
  order_id: 'ORDER-1412759367',
57
- price: 1050.99,
58
- currency: 'USD',
57
+ price_amount: 1050.99,
58
+ price_currency: 'USD',
59
59
  receive_currency: 'EUR',
60
60
  callback_url: 'https://example.com/payments/callback?token=6tCENGUYI62ojkuzDPX7Jg',
61
61
  cancel_url: 'https://example.com/cart',
@@ -77,8 +77,8 @@ end
77
77
  ```ruby
78
78
  post_params = {
79
79
  order_id: 'ORDER-1412759367',
80
- price: 1050.99,
81
- currency: 'USD',
80
+ price_amount: 1050.99,
81
+ price_currency: 'USD',
82
82
  receive_currency: 'EUR',
83
83
  callback_url: 'https://example.com/payments/callback?token=6tCENGUYI62ojkuzDPX7Jg',
84
84
  cancel_url: 'https://example.com/cart',
@@ -12,21 +12,19 @@ require 'json'
12
12
 
13
13
  module CoinGate
14
14
  class << self
15
- attr_accessor :app_id, :api_key, :api_secret, :environment
15
+ attr_accessor :auth_token, :environment
16
16
 
17
17
  def config
18
18
  yield self
19
19
  end
20
20
 
21
21
  def api_request(url, request_method = :post, params = {}, authentication = {})
22
- app_id = authentication[:app_id] || self.app_id
23
- api_key = authentication[:api_key] || self.api_key
24
- api_secret = authentication[:api_secret] || self.api_secret
22
+ auth_token = authentication[:auth_token] || self.auth_token
25
23
  environment = authentication[:environment] || self.environment || 'live'
26
24
 
27
- # Check if credentials was passed
28
- if app_id.nil? || api_key.nil? || api_secret.nil?
29
- CoinGate.raise_error(400, {'reason' => 'CredentialsMissing'})
25
+ # Check if auth_token was passed
26
+ if auth_token.nil?
27
+ CoinGate.raise_error(400, {'reason' => 'AuthTokenMissing'})
30
28
  end
31
29
 
32
30
  # Check if right environment passed
@@ -39,19 +37,13 @@ module CoinGate
39
37
  url = (
40
38
  case environment
41
39
  when 'sandbox'
42
- 'https://api-sandbox.coingate.com/v1'
40
+ 'https://api-sandbox.coingate.com/v2'
43
41
  else
44
- 'https://api.coingate.com/v1'
42
+ 'https://api.coingate.com/v2'
45
43
  end) + url
46
44
 
47
- nonce = (Time.now.to_f * 1e6).to_i
48
- message = nonce.to_s + app_id.to_s + api_key
49
- signature = OpenSSL::HMAC.hexdigest(OpenSSL::Digest.new('sha256'), api_secret, message)
50
-
51
45
  headers = {
52
- 'Access-Nonce' => nonce,
53
- 'Access-Key' => api_key,
54
- 'Access-Signature' => signature
46
+ Authorization: "Token #{auth_token}"
55
47
  }
56
48
 
57
49
  begin
@@ -3,12 +3,12 @@ module CoinGate
3
3
 
4
4
  # HTTP Status 400
5
5
  class BadRequest < APIError; end
6
- class CredentialsMissing < BadRequest; end
6
+ class AuthTokenMissing < BadRequest; end
7
7
  class BadEnvironment < BadRequest; end
8
8
 
9
9
  # HTTP Status 401
10
10
  class Unauthorized < APIError; end
11
- class BadCredentials < Unauthorized; end
11
+ class BadAuthToken < Unauthorized; end
12
12
 
13
13
  # HTTP Status 404
14
14
  class NotFound < APIError; end
@@ -19,6 +19,9 @@ module CoinGate
19
19
  # HTTP Status 422
20
20
  class UnprocessableEntity < APIError; end
21
21
  class OrderIsNotValid < UnprocessableEntity; end
22
+
23
+ # HTTP Status 429
24
+ class RateLimitException < UnprocessableEntity; end
22
25
 
23
26
  # HTTP Status 500
24
27
  class InternalServerError < APIError; end
@@ -9,14 +9,14 @@ module CoinGate
9
9
  raise (case http_code
10
10
  when 400
11
11
  case reason
12
- when 'CredentialsMissing' then CredentialsMissing
12
+ when 'AuthTokenMissing' then AuthTokenMissing
13
13
  when 'BadEnvironment' then BadEnvironment
14
14
  else BadRequest
15
15
  end
16
16
 
17
17
  when 401 then
18
18
  case reason
19
- when 'BadCredentials' then BadCredentials
19
+ when 'BadAuthToken' then BadAuthToken
20
20
  else Unauthorized
21
21
  end
22
22
 
@@ -34,6 +34,8 @@ module CoinGate
34
34
  when 'OrderIsNotValid' then OrderIsNotValid
35
35
  else UnprocessableEntity
36
36
  end
37
+
38
+ when 429 then RateLimitException
37
39
 
38
40
  when 500 then InternalServerError
39
41
 
@@ -1,5 +1,5 @@
1
1
  class CoinGate::Merchant::Order
2
- STATUSES = %w(pending confirming paid invalid canceled expired failed)
2
+ STATUSES = %w(new pending confirming paid invalid canceled expired failed)
3
3
 
4
4
  def initialize(params)
5
5
  @order = params
@@ -1,3 +1,3 @@
1
1
  module CoinGate
2
- VERSION = '1.0.1'
2
+ VERSION = '2.0.0'
3
3
  end
@@ -6,8 +6,8 @@ describe CoinGate::Merchant::Order do
6
6
  let(:valid_order_params) do
7
7
  {
8
8
  order_id: 'ORDER-1412759367',
9
- price: 1050.99,
10
- currency: 'USD',
9
+ price_amount: 1050.99,
10
+ price_currency: 'USD',
11
11
  receive_currency: 'EUR',
12
12
  callback_url: 'https://example.com/payments/callback?token=6tCENGUYI62ojkuzDPX7Jg',
13
13
  cancel_url: 'https://example.com/cart',
@@ -18,9 +18,7 @@ describe CoinGate::Merchant::Order do
18
18
 
19
19
  before do
20
20
  CoinGate.config do |config|
21
- config.app_id = @authentication[:app_id]
22
- config.api_key = @authentication[:api_key]
23
- config.api_secret = @authentication[:api_secret]
21
+ config.auth_token = @authentication[:auth_token]
24
22
  config.environment = @authentication[:environment]
25
23
  end
26
24
  end
@@ -32,8 +30,8 @@ describe CoinGate::Merchant::Order do
32
30
  end
33
31
 
34
32
  context 'valid' do
35
- it { expect(CoinGate::Merchant::Order.create(valid_order_params).pending?).to be true }
36
- it { expect(CoinGate::Merchant::Order.create!(valid_order_params).pending?).to be true }
33
+ it { expect(CoinGate::Merchant::Order.create(valid_order_params).new?).to be true }
34
+ it { expect(CoinGate::Merchant::Order.create!(valid_order_params).new?).to be true }
37
35
  end
38
36
  end
39
37
 
@@ -42,8 +40,8 @@ describe CoinGate::Merchant::Order do
42
40
  it do
43
41
  order = CoinGate::Merchant::Order.create(valid_order_params)
44
42
 
45
- expect(CoinGate::Merchant::Order.find(order.id).pending?).to be true
46
- expect(CoinGate::Merchant::Order.find!(order.id).pending?).to be true
43
+ expect(CoinGate::Merchant::Order.find(order.id).new?).to be true
44
+ expect(CoinGate::Merchant::Order.find!(order.id).new?).to be true
47
45
  end
48
46
  end
49
47
 
@@ -56,28 +54,23 @@ describe CoinGate::Merchant::Order do
56
54
  describe 'passing auth params through arguments' do
57
55
  before do
58
56
  CoinGate.config do |config|
59
- config.app_id = nil
60
- config.api_key = nil
61
- config.api_secret = nil
62
- config.environment = nil
57
+ config.auth_token = nil
63
58
  end
64
59
  end
65
60
 
66
61
  describe 'create order' do
67
62
  context 'params not passed' do
68
- it { expect { CoinGate::Merchant::Order.create({}) }.to raise_error CoinGate::CredentialsMissing }
69
- it { expect { CoinGate::Merchant::Order.create!({}) }.to raise_error CoinGate::CredentialsMissing }
63
+ it { expect { CoinGate::Merchant::Order.create({}) }.to raise_error CoinGate::AuthTokenMissing }
64
+ it { expect { CoinGate::Merchant::Order.create!({}) }.to raise_error CoinGate::AuthTokenMissing }
70
65
  end
71
66
 
72
67
  context 'invalid params passed' do
73
68
  authentication = {
74
- app_id: 1,
75
- api_key: 'a',
76
- api_secret: 'a'
69
+ auth_token: 'a'
77
70
  }
78
71
 
79
- it { expect { CoinGate::Merchant::Order.create({}, authentication) }.to raise_error CoinGate::BadCredentials }
80
- it { expect { CoinGate::Merchant::Order.create!({}, authentication) }.to raise_error CoinGate::BadCredentials }
72
+ it { expect { CoinGate::Merchant::Order.create({}, authentication) }.to raise_error CoinGate::BadAuthToken }
73
+ it { expect { CoinGate::Merchant::Order.create!({}, authentication) }.to raise_error CoinGate::BadAuthToken }
81
74
  end
82
75
 
83
76
  context 'valid params passed' do
@@ -88,19 +81,17 @@ describe CoinGate::Merchant::Order do
88
81
 
89
82
  describe 'find order' do
90
83
  context 'params not passed' do
91
- it { expect { CoinGate::Merchant::Order.find(0) }.to raise_error CoinGate::CredentialsMissing }
92
- it { expect { CoinGate::Merchant::Order.find!(0) }.to raise_error CoinGate::CredentialsMissing }
84
+ it { expect { CoinGate::Merchant::Order.find(0) }.to raise_error CoinGate::AuthTokenMissing }
85
+ it { expect { CoinGate::Merchant::Order.find!(0) }.to raise_error CoinGate::AuthTokenMissing }
93
86
  end
94
87
 
95
88
  context 'invalid params passed' do
96
89
  authentication = {
97
- app_id: 1,
98
- api_key: 'a',
99
- api_secret: 'a'
90
+ auth_token: 'a',
100
91
  }
101
92
 
102
- it { expect { CoinGate::Merchant::Order.find(0, authentication) }.to raise_error CoinGate::BadCredentials }
103
- it { expect { CoinGate::Merchant::Order.find!(0, authentication) }.to raise_error CoinGate::BadCredentials }
93
+ it { expect { CoinGate::Merchant::Order.find(0, authentication) }.to raise_error CoinGate::BadAuthToken }
94
+ it { expect { CoinGate::Merchant::Order.find!(0, authentication) }.to raise_error CoinGate::BadAuthToken }
104
95
  end
105
96
 
106
97
  context 'valid params passed' do
@@ -1,9 +1,7 @@
1
1
  RSpec.shared_context 'shared' do
2
2
  before(:all) do
3
3
  @authentication = {
4
- app_id: 1,
5
- api_key: 'iob0ctFgeHLajvfxzYnIPB',
6
- api_secret: 'ytaqXRWZ17ONlpshPTQuF50rIVLwBbmi',
4
+ auth_token: 'gYEWru1zBeUU2p4FVHTfVYmxZ7jzTxxBPphgHjET',
7
5
  environment: 'sandbox'
8
6
  }
9
7
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: coingate
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.0.1
4
+ version: 2.0.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Tomas Achmedovas
@@ -9,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2017-04-19 00:00:00.000000000 Z
12
+ date: 2018-04-27 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: rest-client
@@ -110,7 +110,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
110
110
  version: '0'
111
111
  requirements: []
112
112
  rubyforge_project:
113
- rubygems_version: 2.5.1
113
+ rubygems_version: 2.6.10
114
114
  signing_key:
115
115
  specification_version: 4
116
116
  summary: Library for CoinGate