bitpay-client 2.4.0 → 2.5.1905
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 +5 -5
- data/.gitignore +5 -1
- data/.travis.yml +6 -1
- data/CHANGELOG.md +24 -0
- data/GUIDE.md +233 -0
- data/Gemfile +0 -4
- data/LICENSE.md +2 -2
- data/README.md +8 -79
- data/Rakefile +57 -2
- data/bitpay-client.gemspec +15 -16
- data/config/constants.rb +12 -1
- data/features/creating_invoices.feature +28 -0
- data/features/pairing.feature +19 -0
- data/features/refunds.feature +23 -0
- data/features/retrieving_invoices.feature +11 -0
- data/features/step_definitions/invoice_steps.rb +31 -0
- data/features/step_definitions/keygen_steps.rb +56 -0
- data/features/step_definitions/refund_steps.rb +37 -0
- data/features/step_definitions/step_helpers.rb +31 -0
- data/lib/bitpay/cacert.pem +1295 -1760
- data/lib/bitpay/client.rb +175 -0
- data/lib/bitpay/rest_connector.rb +106 -0
- data/lib/bitpay/version.rb +2 -2
- data/lib/bitpay_sdk.rb +28 -0
- data/spec/client_spec.rb +153 -6
- data/spec/fixtures/invoices-POST.json +29 -0
- data/spec/fixtures/invoices_{id}-GET.json +35 -0
- data/spec/fixtures/invoices_{id}_refunds-GET.json +17 -0
- data/spec/fixtures/invoices_{id}_refunds-POST.json +9 -0
- data/spec/fixtures/invoices_{id}_refunds_{refund_id}-GET.json +11 -0
- data/spec/fixtures/response-nodata.json +10 -0
- data/spec/spec_helper.rb +16 -18
- metadata +77 -82
- data/bin/bitpay +0 -3
- data/lib/bitpay.rb +0 -21
- data/lib/bitpay/cli.rb +0 -64
- data/lib/bitpay/cli_client.rb +0 -24
- data/lib/bitpay/cli_key_utils.rb +0 -40
- data/spec/features/pair_spec.rb +0 -25
- data/spec/key_utils_spec.rb +0 -26
- data/spec/set_constants.sh +0 -4
data/bin/bitpay
DELETED
data/lib/bitpay.rb
DELETED
@@ -1,21 +0,0 @@
|
|
1
|
-
# license Copyright 2011-2014 BitPay, Inc., MIT License
|
2
|
-
# see http://opensource.org/licenses/MIT
|
3
|
-
# or https://github.com/bitpay/php-bitpay-client/blob/master/LICENSE
|
4
|
-
|
5
|
-
libdir = File.dirname(__FILE__)
|
6
|
-
$LOAD_PATH.unshift(libdir) unless $LOAD_PATH.include?(libdir)
|
7
|
-
require 'bitpay_sdk'
|
8
|
-
require 'bitpay/cli_client'
|
9
|
-
require 'bitpay/cli_key_utils'
|
10
|
-
require 'bitpay/version'
|
11
|
-
|
12
|
-
module BitPay
|
13
|
-
|
14
|
-
BITPAY_CREDENTIALS_DIR = ENV['RCBITPAYROOT'] || File.expand_path("~") + "/.bitpay/"
|
15
|
-
PRIVATE_KEY_FILE = 'bitpay.pem'
|
16
|
-
PRIVATE_KEY_PATH = File.join(BITPAY_CREDENTIALS_DIR, PRIVATE_KEY_FILE)
|
17
|
-
TOKEN_FILE = 'tokens.json'
|
18
|
-
TOKEN_FILE_PATH = File.join(BITPAY_CREDENTIALS_DIR, TOKEN_FILE)
|
19
|
-
|
20
|
-
MISSING_KEY = 'No Private Key specified. Pass priv_key or set ENV variable PRIV_KEY'
|
21
|
-
end
|
data/lib/bitpay/cli.rb
DELETED
@@ -1,64 +0,0 @@
|
|
1
|
-
# license Copyright 2011-2014 BitPay, Inc., MIT License
|
2
|
-
# see http://opensource.org/licenses/MIT
|
3
|
-
# or https://github.com/bitpay/php-bitpay-client/blob/master/LICENSE
|
4
|
-
|
5
|
-
require 'rubygems'
|
6
|
-
require 'commander/import'
|
7
|
-
require_relative '../bitpay'
|
8
|
-
|
9
|
-
program :name, 'BitPay Ruby Library CLI'
|
10
|
-
program :version, BitPay::VERSION
|
11
|
-
program :description, 'Official BitPay Ruby API Client. Use to securely register your client with the BitPay API endpoint. '
|
12
|
-
program :help_formatter, :compact
|
13
|
-
|
14
|
-
command :pair do |c|
|
15
|
-
c.syntax = 'bitpay pair <code>'
|
16
|
-
c.summary = "Pair the local keys to a bitpay account."
|
17
|
-
c.option '--test', "Use the bitpay test server"
|
18
|
-
c.option '--custom <custom>', "Use a custom bitpay URI"
|
19
|
-
c.option '--insecure <insecure>', "Use an insecure custom bitpay URI"
|
20
|
-
c.action do |args, options|
|
21
|
-
raise ArgumentError, "Pairing failed, please call argument as 'bitpay pair <code> [options]'" unless args.first
|
22
|
-
case
|
23
|
-
when options.test
|
24
|
-
client = BitPay::Client.new(api_uri: "https://test.bitpay.com")
|
25
|
-
message = "Paired with test.bitpay.com"
|
26
|
-
when options.custom
|
27
|
-
client = BitPay::Client.new(api_uri: options.custom)
|
28
|
-
message = "Paired with #{options.custom}"
|
29
|
-
when options.insecure
|
30
|
-
client = BitPay::Client.new(insecure: true, api_uri: options.insecure)
|
31
|
-
message = "Paired with #{options.insecure}"
|
32
|
-
else
|
33
|
-
client = BitPay::Client.new
|
34
|
-
message = "Paired with bitpay.com"
|
35
|
-
end
|
36
|
-
|
37
|
-
begin
|
38
|
-
client.pair_pos_client args.first
|
39
|
-
puts message
|
40
|
-
rescue Exception => e
|
41
|
-
puts e.message
|
42
|
-
end
|
43
|
-
end
|
44
|
-
end
|
45
|
-
|
46
|
-
command :show_keys do |c|
|
47
|
-
c.syntax = 'bitpay show_keys'
|
48
|
-
c.summary = "Read current environment's key information to STDOUT"
|
49
|
-
c.description = ''
|
50
|
-
c.example 'description', 'command example'
|
51
|
-
c.action do |args, options|
|
52
|
-
|
53
|
-
pem = BitPay::KeyUtils.get_local_pem_file
|
54
|
-
private_key = BitPay::KeyUtils.get_private_key_from_pem pem
|
55
|
-
public_key = BitPay::KeyUtils.get_public_key_from_pem pem
|
56
|
-
client_id = BitPay::KeyUtils.generate_sin_from_pem pem
|
57
|
-
|
58
|
-
puts "Current BitPay Client Keys:\n"
|
59
|
-
puts "Private Key: #{private_key}"
|
60
|
-
puts "Public Key: #{public_key}"
|
61
|
-
puts "Client ID: #{client_id}"
|
62
|
-
|
63
|
-
end
|
64
|
-
end
|
data/lib/bitpay/cli_client.rb
DELETED
@@ -1,24 +0,0 @@
|
|
1
|
-
module BitPay
|
2
|
-
class Client < BitPay::SDK::Client
|
3
|
-
def initialize opts={}
|
4
|
-
pem = File.read(PRIVATE_KEY_PATH) if File.exists?(PRIVATE_KEY_PATH)
|
5
|
-
pem = BitPay::KeyUtils.generate_pem unless File.exists?(PRIVATE_KEY_PATH)
|
6
|
-
pem = opts[:pem] if opts[:pem]
|
7
|
-
File.write(PRIVATE_KEY_PATH, pem)
|
8
|
-
opts[:pem] = pem
|
9
|
-
super opts
|
10
|
-
end
|
11
|
-
|
12
|
-
def pair_pos_client claim_code
|
13
|
-
response = super
|
14
|
-
token = get_token_from_response response
|
15
|
-
File.write(TOKEN_FILE_PATH, token)
|
16
|
-
return response
|
17
|
-
end
|
18
|
-
|
19
|
-
private
|
20
|
-
def get_token_from_response response
|
21
|
-
({response[0]["facade"] => response[0]["token"]}).to_json
|
22
|
-
end
|
23
|
-
end
|
24
|
-
end
|
data/lib/bitpay/cli_key_utils.rb
DELETED
@@ -1,40 +0,0 @@
|
|
1
|
-
# license Copyright 2011-2014 BitPay, Inc., MIT License
|
2
|
-
# see http://opensource.org/licenses/MIT
|
3
|
-
# or https://github.com/bitpay/php-bitpay-client/blob/master/LICENSE
|
4
|
-
|
5
|
-
require 'uri'
|
6
|
-
require 'net/https'
|
7
|
-
require 'json'
|
8
|
-
require 'openssl'
|
9
|
-
require 'ecdsa'
|
10
|
-
require 'securerandom'
|
11
|
-
require 'digest/sha2'
|
12
|
-
require 'cgi'
|
13
|
-
|
14
|
-
module BitPay
|
15
|
-
class KeyUtils
|
16
|
-
class << self
|
17
|
-
## Generates a new private key and writes to local FS
|
18
|
-
#
|
19
|
-
def retrieve_or_generate_pem
|
20
|
-
begin
|
21
|
-
pem = get_local_pem_file
|
22
|
-
rescue
|
23
|
-
pem = generate_pem
|
24
|
-
write_pem_file pem
|
25
|
-
end
|
26
|
-
pem
|
27
|
-
end
|
28
|
-
|
29
|
-
def write_pem_file pem
|
30
|
-
FileUtils.mkdir_p(BITPAY_CREDENTIALS_DIR)
|
31
|
-
File.open(PRIVATE_KEY_PATH, 'w') { |file| file.write(pem) }
|
32
|
-
end
|
33
|
-
## Gets private key from ENV variable or local FS
|
34
|
-
#
|
35
|
-
def get_local_pem_file
|
36
|
-
File.read(PRIVATE_KEY_PATH) || (raise BitPayError, MISSING_KEY)
|
37
|
-
end
|
38
|
-
end
|
39
|
-
end
|
40
|
-
end
|
data/spec/features/pair_spec.rb
DELETED
@@ -1,25 +0,0 @@
|
|
1
|
-
require_relative '../spec_helper.rb'
|
2
|
-
|
3
|
-
describe "pairing a token", javascript: true, type: :feature do
|
4
|
-
let(:claimCode) do
|
5
|
-
File.delete(BitPay::TOKEN_FILE_PATH) if File.exists?(BitPay::TOKEN_FILE_PATH)
|
6
|
-
client = BitPay::Client.new(api_uri: ROOT_ADDRESS, insecure: true)
|
7
|
-
token = client.get(path: "tokens")["data"].select{|tuple| tuple["merchant"]}.first.values.first
|
8
|
-
client.post(path: "tokens", token: token, params: {facade: "pos"})["data"][0]["pairingCode"]
|
9
|
-
end
|
10
|
-
|
11
|
-
context "when a pem file exists" do
|
12
|
-
before do
|
13
|
-
sleep(5)
|
14
|
-
`./bin/bitpay pair #{claimCode} --insecure #{ROOT_ADDRESS}`
|
15
|
-
end
|
16
|
-
|
17
|
-
it "should save a pem file when pairing" do
|
18
|
-
expect(File.exists?(BitPay::PRIVATE_KEY_PATH)).to eq true
|
19
|
-
end
|
20
|
-
|
21
|
-
it "should save a token when pairing" do
|
22
|
-
expect(JSON.parse(File.read(BitPay::TOKEN_FILE_PATH))["pos"]).to_not be_nil
|
23
|
-
end
|
24
|
-
end
|
25
|
-
end
|
data/spec/key_utils_spec.rb
DELETED
@@ -1,26 +0,0 @@
|
|
1
|
-
require 'spec_helper'
|
2
|
-
|
3
|
-
describe BitPay::KeyUtils do
|
4
|
-
let(:key_utils) {BitPay::KeyUtils}
|
5
|
-
|
6
|
-
|
7
|
-
describe '.get_local_private_key' do
|
8
|
-
it 'should get the key from ~/.bitpay/bitpay.pem if env variable is not set' do
|
9
|
-
allow(File).to receive(:read).with(BitPay::PRIVATE_KEY_PATH) {PEM}
|
10
|
-
expect(key_utils.get_local_pem_file).to eq(PEM)
|
11
|
-
end
|
12
|
-
|
13
|
-
end
|
14
|
-
|
15
|
-
describe '.retrieve_or_generate_pem' do
|
16
|
-
it 'should write a new key to ~/.bitpay/bitpay.pem if there is no existing file' do
|
17
|
-
file = class_double("File").as_stubbed_const
|
18
|
-
fileutils = class_double("FileUtils").as_stubbed_const
|
19
|
-
allow(file).to receive(:read).with(BitPay::PRIVATE_KEY_PATH).and_throw(StandardError)
|
20
|
-
allow(fileutils).to receive(:mkdir_p).with(BitPay::BITPAY_CREDENTIALS_DIR).and_return(nil)
|
21
|
-
expect(file).to receive(:open).with(BitPay::PRIVATE_KEY_PATH, 'w')
|
22
|
-
key_utils.retrieve_or_generate_pem
|
23
|
-
end
|
24
|
-
end
|
25
|
-
|
26
|
-
end
|
data/spec/set_constants.sh
DELETED