coinpayments 0.0.3 → 0.0.4

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
- SHA1:
3
- metadata.gz: dcc5cf6663ca02248fbceb9cdc104b41714f0bb6
4
- data.tar.gz: 1c319813691953c48491e085c049c6950aa5f226
2
+ SHA256:
3
+ metadata.gz: 619123c0e28ea6a2afffc82082df90a9d10c217b75ea2695de4ac876dcfda149
4
+ data.tar.gz: de079ac5d4c295ba8bf7145352b883b4ae59a345e7018fc8478717623268290b
5
5
  SHA512:
6
- metadata.gz: 518199c56965c6f9c02dd70d9bf837e7ba253e508234f73d9bc50c88ccb15e0aff05a678b957ed32301bdcd7ff6894cacb8c7c2e7a7b2b53d559a16af7c23f1a
7
- data.tar.gz: 22ce68d4a9696797f7b8dd044e95e478dbe0a93b0938d32feafccbb0b754f0f29bfe0f99d30af9312fcc8f0ed36c133d3e0a553de2e5b3439461514b29294ed6
6
+ metadata.gz: f1d96d7c2bfa0db7cc597d9c464eb9aa9eae6173256f4c7c2faedead045a512638f146920aae768717189ac7cd7af6e5c68989bae1ba90df6efc833eb42d3bb6
7
+ data.tar.gz: 6b73b2809fccf09fa4468bd49f969ca2ed9b3eb5418840118ee551c23047bbc721539dd7a87599c7bdc800708611827cf736e70efb8ddbdd0064903b3cdc527c
data/.gitignore CHANGED
@@ -6,6 +6,7 @@
6
6
  Gemfile.lock
7
7
  InstalledFiles
8
8
  _yardoc
9
+ .idea/
9
10
  coverage
10
11
  doc/
11
12
  lib/bundler/man
@@ -1,4 +1,4 @@
1
1
  language: ruby
2
2
  rvm:
3
- - 1.9.3
4
- - 2.3.0
3
+ - 2.6.0
4
+ - 2.7.0
data/README.md CHANGED
@@ -36,6 +36,7 @@ Coinpayments.configure do |config|
36
36
  config.merchant_id = ''
37
37
  config.public_api_key = ''
38
38
  config.private_api_key = ''
39
+ config.secret_phrase = ''
39
40
  end
40
41
  ```
41
42
 
@@ -66,6 +67,13 @@ For example, to quickly access current BTC/USD exchange rate, use:
66
67
  transaction = Coinpayments.create_transaction(10, 'USD', 'BTC')
67
68
  @address = transaction.address
68
69
  ```
70
+ - You can recieve IPN callbacks after payments on API-generated addresses.
71
+ Coinpayments server generates signature based on your secret phrase and row
72
+ body of POST request to your custom API. You can easily compare signatures
73
+ to verify callback using
74
+ ```
75
+ Coinpayments.sign('IPN POST request row body')
76
+ ```
69
77
 
70
78
  ## Contributing
71
79
 
@@ -17,13 +17,13 @@ Gem::Specification.new do |spec|
17
17
  spec.test_files = spec.files.grep(%r{^(test|spec|features)/})
18
18
  spec.require_paths = ["lib"]
19
19
 
20
- spec.add_development_dependency "bundler", "~> 1.6"
20
+ spec.add_development_dependency "bundler"
21
21
  spec.add_development_dependency "rake"
22
22
  spec.add_development_dependency "pry"
23
23
  spec.add_development_dependency "minitest"
24
24
  spec.add_development_dependency "vcr"
25
25
  spec.add_development_dependency "webmock"
26
26
 
27
- spec.add_dependency "httparty", "~> 0.13.1"
27
+ spec.add_dependency "httparty"
28
28
  spec.add_dependency "hashie"
29
29
  end
@@ -55,6 +55,10 @@ module Coinpayments
55
55
  api_call(args)
56
56
  end
57
57
 
58
+ def self.create_mass_withdrawal(withdrawals)
59
+ api_call(withdrawals)
60
+ end
61
+
58
62
  def self.get_tx_info(txid)
59
63
  args = { txid: txid }
60
64
  api_call(args)
@@ -70,4 +74,8 @@ module Coinpayments
70
74
  api_call(args)
71
75
  end
72
76
 
77
+ def self.sign(callback_body)
78
+ OpenSSL::HMAC.hexdigest(OpenSSL::Digest.new('sha512'),
79
+ configuration.secret_phrase,callback_body)
80
+ end
73
81
  end
@@ -1,6 +1,6 @@
1
1
  module Coinpayments
2
2
  class Configuration
3
- attr_accessor :version, :base_uri, :merchant_id, :public_api_key, :private_api_key
3
+ attr_accessor :version, :base_uri, :merchant_id, :public_api_key, :private_api_key, :secret_phrase
4
4
 
5
5
  def initialize
6
6
  @version = 1
@@ -8,6 +8,7 @@ module Coinpayments
8
8
  @merchant_id = ''
9
9
  @public_api_key = ''
10
10
  @private_api_key = ''
11
+ @secret_phrase = ''
11
12
  end
12
13
  end
13
14
  end
@@ -1,3 +1,3 @@
1
1
  module Coinpayments
2
- VERSION = "0.0.3"
2
+ VERSION = "0.0.4"
3
3
  end
@@ -2,4 +2,5 @@ Coinpayments.configure do |config|
2
2
  config.merchant_id = ''
3
3
  config.public_api_key = ''
4
4
  config.private_api_key = ''
5
+ config.secret_phrase = ''
5
6
  end
@@ -42,6 +42,28 @@ class CoinpaymentsTest < Minitest::Test
42
42
  end
43
43
  end
44
44
 
45
+ def test_create_mass_withdrawal
46
+ VCR.use_cassette('create_mass_withdrawal') do
47
+ withdrawals = {wd: {
48
+ wd1: {
49
+ amount: 1,
50
+ address: 'sYo5A4vVBBV2SYbh7jPjocqg9DeNYqkP4U',
51
+ currency: 'START'
52
+ },
53
+ wd2: {
54
+ amount: 1,
55
+ address: 'sYo5A4vVBBV2SYbh7jPjocqg9DeNYqkP4U',
56
+ currency: 'START'
57
+ }
58
+ }
59
+ }
60
+ r = Coinpayments.create_mass_withdrawal(withdrawals)
61
+ assert r.kind_of?(Hash)
62
+ assert r.respond_to?(:wd1)
63
+ assert r.respond_to?(:wd2)
64
+ end
65
+ end
66
+
45
67
  def test_get_tx_info
46
68
  VCR.use_cassette('get_tx_info') do
47
69
  r = Coinpayments.get_tx_info('705565b8b8f068566fed1a71977ece30265c6e80cf7dfe854ab4a455701129bc')
@@ -65,4 +87,11 @@ class CoinpaymentsTest < Minitest::Test
65
87
  assert r.respond_to?(:status_text)
66
88
  end
67
89
  end
90
+
91
+ def test_sign
92
+ VCR.use_cassette('sign') do
93
+ r = Coinpayments.sign('Secret Phrase')
94
+ assert r.size == 128
95
+ end
96
+ end
68
97
  end
@@ -0,0 +1,56 @@
1
+ ---
2
+ http_interactions:
3
+ - request:
4
+ method: post
5
+ uri: https://www.coinpayments.net/api.php
6
+ body:
7
+ encoding: UTF-8
8
+ string: version=1&key=8e2d03e5b7778e7ca2bb7299d8480141c9b66849520b40ec23d4d181392831db&cmd=create_mass_withdrawal&wd[wd1][amount]=1&wd[wd1][address]=sYo5A4vVBBV2SYbh7jPjocqg9DeNYqkP4U&wd[wd1][currency]=START&wd[wd2][amount]=2&wd[wd2][address]=sYo5A4vVBBV2SYbh7jPjocqg9DeNYqkP4U&wd[wd2][currency]=START
9
+ headers:
10
+ Hmac:
11
+ - c3df4f4f69b847dbf3035c39f45d94ecdc07a66c326525164028ce4f173ddc168d63e991f607fb7ee36b240b5a502e518733d1453b990347e06a2f3f93704db2
12
+ response:
13
+ status:
14
+ code: 200
15
+ message: OK
16
+ headers:
17
+ Date:
18
+ - Fri, 16 Feb 2018 10:37:41 GMT
19
+ Server:
20
+ - Apache
21
+ X-Frame-Options:
22
+ - sameorigin
23
+ Strict-Transport-Security:
24
+ - max-age=31536000
25
+ Set-Cookie:
26
+ - PHPSESSID=20a5h814i2fjhsbckld7o67ob48f1ib7; path=/; secure; HttpOnly
27
+ - incap_ses_375_992349=AFfAVWXHGBr/giKqmkQ0BXW0hloAAAAAMBlIYON2guIlAfo7x63nSQ==;
28
+ path=/; Domain=.coinpayments.net
29
+ - visid_incap_992349=jGNVOmMQT4WlxPNfz1WnpnW0hloAAAAAQUIPAAAAAADp+GUCASaXCO1dg1TjvL+y;
30
+ expires=Fri, 15 Feb 2019 13:36:21 GMT; path=/; Domain=.coinpayments.net
31
+ Expires:
32
+ - Thu, 19 Nov 1981 08:52:00 GMT
33
+ Cache-Control:
34
+ - no-store, no-cache, must-revalidate, post-check=0, pre-check=0
35
+ Pragma:
36
+ - no-cache
37
+ Access-Control-Allow-Origin:
38
+ - "*"
39
+ Content-Disposition:
40
+ - attachment; filename=coinpayments_api.json
41
+ Content-Length:
42
+ - '119'
43
+ Content-Type:
44
+ - application/json
45
+ X-Iinfo:
46
+ - 13-37462443-37462477 NNNN CT(77 79 0) RT(1518777460968 198) q(0 0 2 -1) r(3
47
+ 3) U6
48
+ X-Cdn:
49
+ - Incapsula
50
+ body:
51
+ encoding: UTF-8
52
+ string: '{"error":"ok","result":{"wd1":{"error":"START is currently disabled!"},"wd2":{"error":"START
53
+ is currently disabled!"}}}'
54
+ http_version:
55
+ recorded_at: Fri, 16 Feb 2018 10:37:41 GMT
56
+ recorded_with: VCR 4.0.0
metadata CHANGED
@@ -1,29 +1,29 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: coinpayments
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.3
4
+ version: 0.0.4
5
5
  platform: ruby
6
6
  authors:
7
7
  - Przemysław Janowski
8
- autorequire:
8
+ autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2016-08-10 00:00:00.000000000 Z
11
+ date: 2020-07-15 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler
15
15
  requirement: !ruby/object:Gem::Requirement
16
16
  requirements:
17
- - - "~>"
17
+ - - ">="
18
18
  - !ruby/object:Gem::Version
19
- version: '1.6'
19
+ version: '0'
20
20
  type: :development
21
21
  prerelease: false
22
22
  version_requirements: !ruby/object:Gem::Requirement
23
23
  requirements:
24
- - - "~>"
24
+ - - ">="
25
25
  - !ruby/object:Gem::Version
26
- version: '1.6'
26
+ version: '0'
27
27
  - !ruby/object:Gem::Dependency
28
28
  name: rake
29
29
  requirement: !ruby/object:Gem::Requirement
@@ -98,16 +98,16 @@ dependencies:
98
98
  name: httparty
99
99
  requirement: !ruby/object:Gem::Requirement
100
100
  requirements:
101
- - - "~>"
101
+ - - ">="
102
102
  - !ruby/object:Gem::Version
103
- version: 0.13.1
103
+ version: '0'
104
104
  type: :runtime
105
105
  prerelease: false
106
106
  version_requirements: !ruby/object:Gem::Requirement
107
107
  requirements:
108
- - - "~>"
108
+ - - ">="
109
109
  - !ruby/object:Gem::Version
110
- version: 0.13.1
110
+ version: '0'
111
111
  - !ruby/object:Gem::Dependency
112
112
  name: hashie
113
113
  requirement: !ruby/object:Gem::Requirement
@@ -122,7 +122,7 @@ dependencies:
122
122
  - - ">="
123
123
  - !ruby/object:Gem::Version
124
124
  version: '0'
125
- description:
125
+ description:
126
126
  email:
127
127
  - p.janowski@outlook.com
128
128
  executables: []
@@ -143,6 +143,7 @@ files:
143
143
  - lib/generators/coinpayments/templates/coinpayments_initializer.rb
144
144
  - test/coinpayments_test.rb
145
145
  - test/fixtures/balances.yml
146
+ - test/fixtures/create_mass_withdrawal.yml
146
147
  - test/fixtures/create_transaction.yml
147
148
  - test/fixtures/create_withdrawal.yml
148
149
  - test/fixtures/get_callback_address.yml
@@ -153,7 +154,7 @@ homepage: https://github.com/Salet/coinpayments
153
154
  licenses:
154
155
  - MIT
155
156
  metadata: {}
156
- post_install_message:
157
+ post_install_message:
157
158
  rdoc_options: []
158
159
  require_paths:
159
160
  - lib
@@ -168,14 +169,14 @@ required_rubygems_version: !ruby/object:Gem::Requirement
168
169
  - !ruby/object:Gem::Version
169
170
  version: '0'
170
171
  requirements: []
171
- rubyforge_project:
172
- rubygems_version: 2.6.6
173
- signing_key:
172
+ rubygems_version: 3.1.2
173
+ signing_key:
174
174
  specification_version: 4
175
175
  summary: Ruby client for the CoinPayments.net API
176
176
  test_files:
177
177
  - test/coinpayments_test.rb
178
178
  - test/fixtures/balances.yml
179
+ - test/fixtures/create_mass_withdrawal.yml
179
180
  - test/fixtures/create_transaction.yml
180
181
  - test/fixtures/create_withdrawal.yml
181
182
  - test/fixtures/get_callback_address.yml