bitpay-client 2.4.0 → 2.5.1905

Sign up to get free protection for your applications and to get access to all the features.
Files changed (41) hide show
  1. checksums.yaml +5 -5
  2. data/.gitignore +5 -1
  3. data/.travis.yml +6 -1
  4. data/CHANGELOG.md +24 -0
  5. data/GUIDE.md +233 -0
  6. data/Gemfile +0 -4
  7. data/LICENSE.md +2 -2
  8. data/README.md +8 -79
  9. data/Rakefile +57 -2
  10. data/bitpay-client.gemspec +15 -16
  11. data/config/constants.rb +12 -1
  12. data/features/creating_invoices.feature +28 -0
  13. data/features/pairing.feature +19 -0
  14. data/features/refunds.feature +23 -0
  15. data/features/retrieving_invoices.feature +11 -0
  16. data/features/step_definitions/invoice_steps.rb +31 -0
  17. data/features/step_definitions/keygen_steps.rb +56 -0
  18. data/features/step_definitions/refund_steps.rb +37 -0
  19. data/features/step_definitions/step_helpers.rb +31 -0
  20. data/lib/bitpay/cacert.pem +1295 -1760
  21. data/lib/bitpay/client.rb +175 -0
  22. data/lib/bitpay/rest_connector.rb +106 -0
  23. data/lib/bitpay/version.rb +2 -2
  24. data/lib/bitpay_sdk.rb +28 -0
  25. data/spec/client_spec.rb +153 -6
  26. data/spec/fixtures/invoices-POST.json +29 -0
  27. data/spec/fixtures/invoices_{id}-GET.json +35 -0
  28. data/spec/fixtures/invoices_{id}_refunds-GET.json +17 -0
  29. data/spec/fixtures/invoices_{id}_refunds-POST.json +9 -0
  30. data/spec/fixtures/invoices_{id}_refunds_{refund_id}-GET.json +11 -0
  31. data/spec/fixtures/response-nodata.json +10 -0
  32. data/spec/spec_helper.rb +16 -18
  33. metadata +77 -82
  34. data/bin/bitpay +0 -3
  35. data/lib/bitpay.rb +0 -21
  36. data/lib/bitpay/cli.rb +0 -64
  37. data/lib/bitpay/cli_client.rb +0 -24
  38. data/lib/bitpay/cli_key_utils.rb +0 -40
  39. data/spec/features/pair_spec.rb +0 -25
  40. data/spec/key_utils_spec.rb +0 -26
  41. data/spec/set_constants.sh +0 -4
@@ -0,0 +1,29 @@
1
+ {
2
+ "facade": "pos/invoice",
3
+ "data": {
4
+ "url": "https://test.bitpay.com/invoice?id=2RSyNDvsiTrA31rPwnnEcd",
5
+ "status": "new",
6
+ "btcPrice": "0.037523",
7
+ "btcDue": "0.037523",
8
+ "price": 10,
9
+ "currency": "USD",
10
+ "exRates": {
11
+ "USD": 266.5
12
+ },
13
+ "invoiceTime": 1422319964413,
14
+ "expirationTime": 1422320864413,
15
+ "currentTime": 1422319964431,
16
+ "guid": "34d7be05-eb65-4f72-a2ce-79bf23e93f17",
17
+ "id": "2RSyNDvsiTrA31rPwnnEcd",
18
+ "btcPaid": "0.000000",
19
+ "rate": 266.5,
20
+ "exceptionStatus": false,
21
+ "paymentUrls": {
22
+ "BIP21": "bitcoin:mhPM48eieakd6AgCuHMwAtpFXE5yQ3N7om?amount=0.037523",
23
+ "BIP72": "bitcoin:mhPM48eieakd6AgCuHMwAtpFXE5yQ3N7om?amount=0.037523&r=https://test.bitpay.com/i/2RSyNDvsiTrA31rPwnnEcd",
24
+ "BIP72b": "bitcoin:?r=https://test.bitpay.com/i/2RSyNDvsiTrA31rPwnnEcd",
25
+ "BIP73": "https://test.bitpay.com/i/2RSyNDvsiTrA31rPwnnEcd"
26
+ },
27
+ "token": "2RPipMRUXAvt5wAfthCzF7Tj4SppBWPHGQ7hCeWYeWDm7RtwUtDds1XUNt11VTf5C6UfCAACBhsKwjW6SAocLsd7"
28
+ }
29
+ }
@@ -0,0 +1,35 @@
1
+ {
2
+ "facade": "merchant/invoice",
3
+ "data": {
4
+ "url": "https://test.bitpay.com/invoice?id=CcRgegwTMs866Sr7vdLnru",
5
+ "status": "complete",
6
+ "btcPrice": "0.074661",
7
+ "btcDue": "0.000000",
8
+ "price": 15.79,
9
+ "currency": "USD",
10
+ "exRates": {
11
+ "USD": 211.49
12
+ },
13
+ "invoiceTime": 1421719631301,
14
+ "expirationTime": 1421720531301,
15
+ "currentTime": 1422316288768,
16
+ "id": "TEST_INVOICE_ID",
17
+ "btcPaid": "0.074661",
18
+ "rate": 211.49,
19
+ "exceptionStatus": false,
20
+ "transactions": [
21
+ {
22
+ "amount": 7466100,
23
+ "confirmations": 6,
24
+ "time": "2015-01-20T02:07:46.000Z",
25
+ "receivedTime": "2015-01-20T02:07:45.881Z"
26
+ }
27
+ ],
28
+ "flags": {
29
+ "refundable": true
30
+ },
31
+ "token": "MERCHANT_INVOICE_TOKEN",
32
+ "buyer": {
33
+ }
34
+ }
35
+ }
@@ -0,0 +1,17 @@
1
+ {
2
+ "facade": "merchant/supportRequest",
3
+ "data": [
4
+ {
5
+ "id": "TEST_REQUEST_ID",
6
+ "requestDate": "2015-01-27T00:36:12.360Z",
7
+ "status": "pending",
8
+ "token": "REFUND_REQUEST_TOKEN"
9
+ },
10
+ {
11
+ "id": "ANOTHER_ID",
12
+ "requestDate": "2015-01-27T00:36:12.360Z",
13
+ "status": "OTHER_STATUS",
14
+ "token": "ANOTHER_REFUND_REQUEST_TOKEN"
15
+ }
16
+ ]
17
+ }
@@ -0,0 +1,9 @@
1
+ {
2
+ "facade": "merchant/supportRequest",
3
+ "data": {
4
+ "id": "Q6CuxYF83MfV1XgUBQBdbA",
5
+ "requestDate": "2015-01-27T00:36:12.360Z",
6
+ "status": "pending",
7
+ "token": "REFUND_REQUEST_TOKEN"
8
+ }
9
+ }
@@ -0,0 +1,11 @@
1
+ {
2
+ "facade": "merchant/supportRequest",
3
+ "data": [
4
+ {
5
+ "id": "TEST_REQUEST_ID",
6
+ "requestDate": "2015-01-27T00:36:12.360Z",
7
+ "status": "pending",
8
+ "token": "REFUND_REQUEST_TOKEN"
9
+ }
10
+ ]
11
+ }
@@ -0,0 +1,10 @@
1
+ {
2
+ "facile": "is easy",
3
+ "diti": [
4
+ {
5
+ "requestDate": "2015-01-27T00:36:12.360Z",
6
+ "status": "pending"
7
+ }
8
+ ]
9
+ }
10
+
@@ -1,10 +1,11 @@
1
1
  require 'webmock/rspec'
2
+ require 'pry'
2
3
  require 'coveralls'
3
4
  Coveralls.wear!
4
5
 
5
- require File.join File.dirname(__FILE__), '..', 'lib', 'bitpay.rb'
6
-
6
+ require File.join File.dirname(__FILE__), '..', 'lib', 'bitpay_sdk.rb'
7
7
  require_relative '../config/constants.rb'
8
+
8
9
  #
9
10
  ## Test Variables
10
11
  #
@@ -13,24 +14,21 @@ PEM = "-----BEGIN EC PRIVATE KEY-----\nMHQCAQEEICg7E4NN53YkaWuAwpoqjfAofjzKI7Jq1
13
14
  PUB_KEY = '038d970d6ba29dcfa190c177140fd889fadd6d2590b1ee1a6a06e255dbf22b4017'
14
15
  CLIENT_ID = "TeyN4LPrXiG5t2yuSamKqP3ynVk3F52iHrX"
15
16
 
16
- RSpec.configure do |config|
17
- config.before :each do |example|
18
- WebMock.allow_net_connect! if example.metadata[:type] == :feature
19
- end
20
-
21
- config.before :all do |example|
22
- FileUtils.mkdir_p(BitPay::BITPAY_CREDENTIALS_DIR)
23
- unless File.exists?(BitPay::PRIVATE_KEY_PATH)
24
- File.write(BitPay::PRIVATE_KEY_PATH, ENV['BITPAYPEM'].gsub("\\n", "\n"))
25
- end
26
- end
17
+ def generate_code(number)
18
+ legal_map = [*'A'..'Z'] + [*'a'..'z'] + [*0..9]
19
+ Array.new(number) { legal_map.sample }.join
27
20
  end
28
21
 
22
+
29
23
  def an_illegal_claim_code
30
- legal_map = [*'A'..'Z'] + [*'a'..'z'] + [*0..9]
31
- first_length = rand(6)
32
- short_code = (0..first_length).map{legal_map.sample}.join
33
- second_length = [*8..25].sample
34
- long_code = [*8..25].sample.times.inject([]){|arr| arr << legal_map.sample}.join
24
+ short_code = generate_code(rand(6))
25
+ long_code = generate_code(rand(8..25))
35
26
  [nil, short_code, long_code].sample
36
27
  end
28
+
29
+ ## Gets JSON responses from the fixtures directory
30
+ #
31
+ def get_fixture(name)
32
+ #JSON.parse(File.read(File.expand_path("../fixtures/#{name}", __FILE__)))
33
+ File.read(File.expand_path("../fixtures/#{name}", __FILE__))
34
+ end
metadata CHANGED
@@ -1,183 +1,169 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: bitpay-client
3
3
  version: !ruby/object:Gem::Version
4
- version: 2.4.0
4
+ version: 2.5.1905
5
5
  platform: ruby
6
6
  authors:
7
7
  - Bitpay, Inc.
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2015-09-15 00:00:00.000000000 Z
11
+ date: 2019-05-13 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
- name: bitpay-sdk
14
+ name: bitpay-key-utils
15
15
  requirement: !ruby/object:Gem::Requirement
16
16
  requirements:
17
- - - "~>"
18
- - !ruby/object:Gem::Version
19
- version: '2.1'
20
- type: :runtime
21
- prerelease: false
22
- version_requirements: !ruby/object:Gem::Requirement
23
- requirements:
24
- - - "~>"
25
- - !ruby/object:Gem::Version
26
- version: '2.1'
27
- - !ruby/object:Gem::Dependency
28
- name: json
29
- requirement: !ruby/object:Gem::Requirement
30
- requirements:
31
- - - "~>"
17
+ - - ">="
32
18
  - !ruby/object:Gem::Version
33
- version: 1.8.1
19
+ version: '2.2'
34
20
  type: :runtime
35
21
  prerelease: false
36
22
  version_requirements: !ruby/object:Gem::Requirement
37
23
  requirements:
38
- - - "~>"
24
+ - - ">="
39
25
  - !ruby/object:Gem::Version
40
- version: 1.8.1
26
+ version: '2.2'
41
27
  - !ruby/object:Gem::Dependency
42
28
  name: rack
43
29
  requirement: !ruby/object:Gem::Requirement
44
30
  requirements:
45
31
  - - "~>"
46
32
  - !ruby/object:Gem::Version
47
- version: 1.5.2
48
- type: :runtime
49
- prerelease: false
50
- version_requirements: !ruby/object:Gem::Requirement
51
- requirements:
52
- - - "~>"
53
- - !ruby/object:Gem::Version
54
- version: 1.5.2
55
- - !ruby/object:Gem::Dependency
56
- name: ecdsa
57
- requirement: !ruby/object:Gem::Requirement
58
- requirements:
59
- - - "~>"
60
- - !ruby/object:Gem::Version
61
- version: 1.2.0
62
- type: :runtime
33
+ version: '1.5'
34
+ type: :development
63
35
  prerelease: false
64
36
  version_requirements: !ruby/object:Gem::Requirement
65
37
  requirements:
66
38
  - - "~>"
67
39
  - !ruby/object:Gem::Version
68
- version: 1.2.0
69
- - !ruby/object:Gem::Dependency
70
- name: commander
71
- requirement: !ruby/object:Gem::Requirement
72
- requirements:
73
- - - ">="
74
- - !ruby/object:Gem::Version
75
- version: '0'
76
- type: :runtime
77
- prerelease: false
78
- version_requirements: !ruby/object:Gem::Requirement
79
- requirements:
80
- - - ">="
81
- - !ruby/object:Gem::Version
82
- version: '0'
40
+ version: '1.5'
83
41
  - !ruby/object:Gem::Dependency
84
42
  name: rake
85
43
  requirement: !ruby/object:Gem::Requirement
86
44
  requirements:
87
- - - "~>"
45
+ - - '='
88
46
  - !ruby/object:Gem::Version
89
47
  version: 10.3.2
90
48
  type: :development
91
49
  prerelease: false
92
50
  version_requirements: !ruby/object:Gem::Requirement
93
51
  requirements:
94
- - - "~>"
52
+ - - '='
95
53
  - !ruby/object:Gem::Version
96
54
  version: 10.3.2
97
55
  - !ruby/object:Gem::Dependency
98
56
  name: webmock
99
57
  requirement: !ruby/object:Gem::Requirement
100
58
  requirements:
101
- - - "~>"
59
+ - - '='
102
60
  - !ruby/object:Gem::Version
103
61
  version: 1.18.0
104
62
  type: :development
105
63
  prerelease: false
106
64
  version_requirements: !ruby/object:Gem::Requirement
107
65
  requirements:
108
- - - "~>"
66
+ - - '='
109
67
  - !ruby/object:Gem::Version
110
68
  version: 1.18.0
111
69
  - !ruby/object:Gem::Dependency
112
70
  name: pry
113
71
  requirement: !ruby/object:Gem::Requirement
114
72
  requirements:
115
- - - "~>"
73
+ - - '='
116
74
  - !ruby/object:Gem::Version
117
75
  version: 0.10.1
118
76
  type: :development
119
77
  prerelease: false
120
78
  version_requirements: !ruby/object:Gem::Requirement
121
79
  requirements:
122
- - - "~>"
80
+ - - '='
123
81
  - !ruby/object:Gem::Version
124
82
  version: 0.10.1
125
83
  - !ruby/object:Gem::Dependency
126
84
  name: pry-byebug
127
85
  requirement: !ruby/object:Gem::Requirement
128
86
  requirements:
129
- - - "~>"
87
+ - - '='
130
88
  - !ruby/object:Gem::Version
131
89
  version: 2.0.0
132
90
  type: :development
133
91
  prerelease: false
134
92
  version_requirements: !ruby/object:Gem::Requirement
135
93
  requirements:
136
- - - "~>"
94
+ - - '='
137
95
  - !ruby/object:Gem::Version
138
96
  version: 2.0.0
139
97
  - !ruby/object:Gem::Dependency
140
98
  name: pry-rescue
141
99
  requirement: !ruby/object:Gem::Requirement
142
100
  requirements:
143
- - - "~>"
101
+ - - '='
144
102
  - !ruby/object:Gem::Version
145
103
  version: 1.4.1
146
104
  type: :development
147
105
  prerelease: false
148
106
  version_requirements: !ruby/object:Gem::Requirement
149
107
  requirements:
150
- - - "~>"
108
+ - - '='
151
109
  - !ruby/object:Gem::Version
152
110
  version: 1.4.1
153
111
  - !ruby/object:Gem::Dependency
154
- name: airborne
112
+ name: cucumber
155
113
  requirement: !ruby/object:Gem::Requirement
156
114
  requirements:
157
115
  - - "~>"
158
116
  - !ruby/object:Gem::Version
159
- version: 0.0.20
117
+ version: 1.3.17
160
118
  type: :development
161
119
  prerelease: false
162
120
  version_requirements: !ruby/object:Gem::Requirement
163
121
  requirements:
164
122
  - - "~>"
123
+ - !ruby/object:Gem::Version
124
+ version: 1.3.17
125
+ - !ruby/object:Gem::Dependency
126
+ name: airborne
127
+ requirement: !ruby/object:Gem::Requirement
128
+ requirements:
129
+ - - '='
130
+ - !ruby/object:Gem::Version
131
+ version: 0.0.20
132
+ type: :development
133
+ prerelease: false
134
+ version_requirements: !ruby/object:Gem::Requirement
135
+ requirements:
136
+ - - '='
165
137
  - !ruby/object:Gem::Version
166
138
  version: 0.0.20
167
139
  - !ruby/object:Gem::Dependency
168
140
  name: rspec
169
141
  requirement: !ruby/object:Gem::Requirement
170
142
  requirements:
171
- - - "~>"
143
+ - - '='
172
144
  - !ruby/object:Gem::Version
173
145
  version: 3.1.0
174
146
  type: :development
175
147
  prerelease: false
176
148
  version_requirements: !ruby/object:Gem::Requirement
177
149
  requirements:
178
- - - "~>"
150
+ - - '='
179
151
  - !ruby/object:Gem::Version
180
152
  version: 3.1.0
153
+ - !ruby/object:Gem::Dependency
154
+ name: mongo
155
+ requirement: !ruby/object:Gem::Requirement
156
+ requirements:
157
+ - - "~>"
158
+ - !ruby/object:Gem::Version
159
+ version: '2.6'
160
+ type: :development
161
+ prerelease: false
162
+ version_requirements: !ruby/object:Gem::Requirement
163
+ requirements:
164
+ - - "~>"
165
+ - !ruby/object:Gem::Version
166
+ version: '2.6'
181
167
  - !ruby/object:Gem::Dependency
182
168
  name: coveralls
183
169
  requirement: !ruby/object:Gem::Requirement
@@ -194,31 +180,41 @@ dependencies:
194
180
  version: '0'
195
181
  description: Powerful, flexible, lightweight, thread-safe interface to the BitPay
196
182
  developers API
197
- email: info@bitpay.com
198
- executables:
199
- - bitpay
183
+ email: sales-engineering@bitpay.com
184
+ executables: []
200
185
  extensions: []
201
186
  extra_rdoc_files: []
202
187
  files:
203
188
  - ".gitignore"
204
189
  - ".travis.yml"
190
+ - CHANGELOG.md
191
+ - GUIDE.md
205
192
  - Gemfile
206
193
  - LICENSE.md
207
194
  - README.md
208
195
  - Rakefile
209
- - bin/bitpay
210
196
  - bitpay-client.gemspec
211
197
  - config/constants.rb
212
- - lib/bitpay.rb
198
+ - features/creating_invoices.feature
199
+ - features/pairing.feature
200
+ - features/refunds.feature
201
+ - features/retrieving_invoices.feature
202
+ - features/step_definitions/invoice_steps.rb
203
+ - features/step_definitions/keygen_steps.rb
204
+ - features/step_definitions/refund_steps.rb
205
+ - features/step_definitions/step_helpers.rb
213
206
  - lib/bitpay/cacert.pem
214
- - lib/bitpay/cli.rb
215
- - lib/bitpay/cli_client.rb
216
- - lib/bitpay/cli_key_utils.rb
207
+ - lib/bitpay/client.rb
208
+ - lib/bitpay/rest_connector.rb
217
209
  - lib/bitpay/version.rb
210
+ - lib/bitpay_sdk.rb
218
211
  - spec/client_spec.rb
219
- - spec/features/pair_spec.rb
220
- - spec/key_utils_spec.rb
221
- - spec/set_constants.sh
212
+ - spec/fixtures/invoices-POST.json
213
+ - spec/fixtures/invoices_{id}-GET.json
214
+ - spec/fixtures/invoices_{id}_refunds-GET.json
215
+ - spec/fixtures/invoices_{id}_refunds-POST.json
216
+ - spec/fixtures/invoices_{id}_refunds_{refund_id}-GET.json
217
+ - spec/fixtures/response-nodata.json
222
218
  - spec/spec_helper.rb
223
219
  homepage: https://github.com/bitpay/ruby-client
224
220
  licenses:
@@ -230,18 +226,17 @@ require_paths:
230
226
  - lib
231
227
  required_ruby_version: !ruby/object:Gem::Requirement
232
228
  requirements:
233
- - - "~>"
229
+ - - ">="
234
230
  - !ruby/object:Gem::Version
235
231
  version: '2.1'
236
232
  required_rubygems_version: !ruby/object:Gem::Requirement
237
233
  requirements:
238
234
  - - ">="
239
235
  - !ruby/object:Gem::Version
240
- version: 1.3.4
236
+ version: '2.6'
241
237
  requirements: []
242
- rubyforge_project: bitpay-client
243
- rubygems_version: 2.4.6
238
+ rubygems_version: 3.0.3
244
239
  signing_key:
245
240
  specification_version: 4
246
- summary: Official ruby client library for the BitPay API
241
+ summary: Official Ruby library for the BitPay API
247
242
  test_files: []