cryptocoin_payable 1.4.3 → 1.4.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
2
  SHA1:
3
- metadata.gz: ffd352ef2d7415e0067feda15e957525a0efe5b3
4
- data.tar.gz: 103ff28a0a31e61d518d998c83cb0c4ddec2722e
3
+ metadata.gz: 2e8ee910240c9364019d58075f3822390414af89
4
+ data.tar.gz: 630fe67e170cfc62acc2553208a9165a88635b65
5
5
  SHA512:
6
- metadata.gz: '09ea60a77c02fb244dcf93153c3965ed550308582c061abac853d93d2548088192e7b7dd15072881b3429133211762d3bd18e252f4779121fd0fe8fb32fcf66e'
7
- data.tar.gz: d8b165ea4394ed9ad72afe866e90ce37884f4b663890a0f3230d5b43b2d41a092dc4cf27814802600cdf5734caee7c3c3f142a5200d7bf56b4728cb88c9d9d1f
6
+ metadata.gz: 5d2a3eac566f31ee6d26e82d73560b053ffb552c44cc83e6946971489be2c3a86ab26bd24cf99537b6ede0231d88c7049a9df0faeefdf899e81e86fc9b17d613
7
+ data.tar.gz: aa54453fe746d2543baed91ba8a59d65d95afe3a19c4031ce113024783a88606ceb4d8fbc03decf405c1c9a9512f617865d2ef5fa9acc4f702e0b7f7148426a9
data/bin/console CHANGED
@@ -2,6 +2,7 @@
2
2
 
3
3
  require 'bundler/setup'
4
4
  require 'cryptocoin_payable'
5
+ require 'cryptocoin_payable/orm/activerecord'
5
6
 
6
7
  # You can add fixtures and/or initialization code here to make experimenting
7
8
  # with your gem easier. You can also use a different console, if you like.
@@ -24,8 +24,8 @@ Given(/^a payment is made for (\d+) percent$/) do |percentage|
24
24
  [{
25
25
  transaction_hash: SecureRandom.uuid,
26
26
  block_hash: '00000000000000606aa74093ed91d657192a3772732ee4d99a7b7be8075eafa2',
27
- block_time: DateTime.iso8601('2017-12-26T21:38:44.000+00:00'),
28
- estimated_time: DateTime.iso8601('2017-12-26T21:30:19.858+00:00'),
27
+ block_time: Time.iso8601('2017-12-26T21:38:44.000+00:00'),
28
+ estimated_time: Time.iso8601('2017-12-26T21:30:19.858+00:00'),
29
29
  estimated_value: @coin_amount_due * (percentage.to_f / 100.0),
30
30
  confirmations: 1
31
31
  }]
@@ -77,11 +77,11 @@ module CryptocoinPayable
77
77
  end
78
78
 
79
79
  def parse_timestamp(timestamp)
80
- timestamp.nil? ? nil : DateTime.strptime(timestamp.to_s, '%s')
80
+ timestamp.nil? ? nil : Time.strptime(timestamp.to_s, '%s')
81
81
  end
82
82
 
83
83
  def parse_time(time)
84
- time.nil? ? nil : DateTime.iso8601(time)
84
+ time.nil? ? nil : Time.iso8601(time)
85
85
  end
86
86
 
87
87
  private
@@ -2,22 +2,28 @@ module CryptocoinPayable
2
2
  module Adapters
3
3
  def self.for(coin_type)
4
4
  case coin_type.to_sym
5
- when :eth
6
- ethereum_adapter
5
+ when :bch
6
+ bitcoin_cash_adapter
7
7
  when :btc
8
8
  bitcoin_adapter
9
+ when :eth
10
+ ethereum_adapter
9
11
  else
10
12
  raise "Invalid coin type #{coin_type}"
11
13
  end
12
14
  end
13
15
 
14
- def self.ethereum_adapter
15
- @ethereum_adapter ||= Ethereum.new
16
+ def self.bitcoin_cash_adapter
17
+ @bitcoin_cash_adapter ||= BitcoinCash.new
16
18
  end
17
19
 
18
20
  def self.bitcoin_adapter
19
21
  @bitcoin_adapter ||= Bitcoin.new
20
22
  end
23
+
24
+ def self.ethereum_adapter
25
+ @ethereum_adapter ||= Ethereum.new
26
+ end
21
27
  end
22
28
  end
23
29
 
@@ -21,6 +21,7 @@ module CryptocoinPayable
21
21
  enum coin_type: %i[
22
22
  btc
23
23
  eth
24
+ bch
24
25
  ]
25
26
 
26
27
  state_machine :state, initial: :pending do
@@ -6,6 +6,7 @@ module CryptocoinPayable
6
6
  enum coin_type: %i[
7
7
  btc
8
8
  eth
9
+ bch
9
10
  ]
10
11
  end
11
12
  end
@@ -1,3 +1,3 @@
1
1
  module CryptocoinPayable
2
- VERSION = '1.4.3'.freeze
2
+ VERSION = '1.4.4'.freeze
3
3
  end
@@ -10,8 +10,8 @@ describe CryptocoinPayable::Adapters::BitcoinCash, :vcr do
10
10
  {
11
11
  transaction_hash: '10d9d3927a21d90c573a5fbbb347f409af37219ceb93f7475d6c4cca4231d29f',
12
12
  block_hash: '0000000000000000015493ab50fde669130f9b64f0918031a5b6dcc44f14698f',
13
- block_time: DateTime.iso8601('2018-10-12T07:28:21.000000000+00:00'),
14
- estimated_time: DateTime.iso8601('2018-10-12T07:28:21.000000000+00:00'),
13
+ block_time: Time.iso8601('2018-10-12T07:28:21.000000000+00:00'),
14
+ estimated_time: Time.iso8601('2018-10-12T07:28:21.000000000+00:00'),
15
15
  estimated_value: 4_128_450,
16
16
  confirmations: 2
17
17
  }
@@ -8,16 +8,16 @@ describe CryptocoinPayable::Adapters::Bitcoin, :vcr do
8
8
  {
9
9
  transaction_hash: '5bdeaf7829148d7e0e1e7b5233512a2c5ae54ef7ccbc8e68b2f85b7e49c917a0',
10
10
  block_hash: '0000000000000000048e8ea3fdd2c3a59ddcbcf7575f82cb96ce9fd17da9f2f4',
11
- block_time: DateTime.iso8601('2016-09-13T15:41:00.000000000+00:00'),
12
- estimated_time: be_within(1.day).of(DateTime.iso8601('2016-09-13T15:41:00.000000000+00:00')),
11
+ block_time: Time.iso8601('2016-09-13T15:41:00.000000000+00:00'),
12
+ estimated_time: be_within(1.day).of(Time.iso8601('2016-09-13T15:41:00.000000000+00:00')),
13
13
  estimated_value: 499_000_000,
14
14
  confirmations: 116_077
15
15
  },
16
16
  {
17
17
  transaction_hash: 'e7bcdb13d9c903973bd8a740054d4c056a559bae67d4e8f6d0a42b4bab552623',
18
18
  block_hash: '000000000000000001af27feb303ad97af81a5882157f166781784c639f8e896',
19
- block_time: DateTime.iso8601('2016-09-13T15:22:42.000000000+00:00'),
20
- estimated_time: be_within(1.day).of(DateTime.iso8601('2016-09-13T15:22:42.000000000+00:00')),
19
+ block_time: Time.iso8601('2016-09-13T15:22:42.000000000+00:00'),
20
+ estimated_time: be_within(1.day).of(Time.iso8601('2016-09-13T15:22:42.000000000+00:00')),
21
21
  estimated_value: 1_000_000,
22
22
  confirmations: 116_080
23
23
  }
@@ -9,7 +9,7 @@ describe CryptocoinPayable::Adapters::Ethereum, :vcr do
9
9
  transaction_hash: '0xa88b799514e9621962e3d0de25e7e0bc7a123e33085f322c7acdb99cc2585c6d',
10
10
  block_hash: '0x752c50e426f65820f5bf6fd49acbb08d79464f8e7e8ea5b77e2299b69fd6398b',
11
11
  block_time: nil,
12
- estimated_time: be_within(1.day).of(DateTime.iso8601('2018-07-05T12:58:33.000000000+07:00')),
12
+ estimated_time: be_within(1.day).of(Time.iso8601('2018-07-05T12:58:33.000000000+07:00')),
13
13
  estimated_value: 33_753_640_000_000_000,
14
14
  confirmations: 569_771
15
15
  },
@@ -17,7 +17,7 @@ describe CryptocoinPayable::Adapters::Ethereum, :vcr do
17
17
  transaction_hash: '0xb325a8cf241f332bca92c7f715987e4d34be9a6b3bb78d2425c83086b4aced26',
18
18
  block_hash: '0x1c2b73a16fd8c4d25feeccaa2f0bf5c82b8f415f1beaf4d34aaf870daf89689d',
19
19
  block_time: nil,
20
- estimated_time: be_within(1.day).of(DateTime.iso8601('2018-07-05T13:35:07.000000000+07:00')),
20
+ estimated_time: be_within(1.day).of(Time.iso8601('2018-07-05T13:35:07.000000000+07:00')),
21
21
  estimated_value: 2_190_144_444_444_444,
22
22
  confirmations: 569_629
23
23
  },
@@ -25,7 +25,7 @@ describe CryptocoinPayable::Adapters::Ethereum, :vcr do
25
25
  transaction_hash: '0xcd874917be5ad177e7ebd88b5c4a7d4283796e00e43345da5b63fb4f78130b37',
26
26
  block_hash: '0x4ce71d11146445f123680ea9beba7db968b04dc675caddf60248c9d9d6f5739e',
27
27
  block_time: nil,
28
- estimated_time: be_within(1.day).of(DateTime.iso8601('2018-07-05T13:55:53.000000000+07:00')),
28
+ estimated_time: be_within(1.day).of(Time.iso8601('2018-07-05T13:55:53.000000000+07:00')),
29
29
  estimated_value: 1_007_518_888_888_888,
30
30
  confirmations: 569_549
31
31
  },
@@ -33,7 +33,7 @@ describe CryptocoinPayable::Adapters::Ethereum, :vcr do
33
33
  transaction_hash: '0x799ec2aaafbddbc2e746334f96f59f6127dec62e5693480576db351aaf840bfb',
34
34
  block_hash: '0xc1361b19b2266e2259ac433b9e18b4fbc81339304988bbc62dd93aa24fac6449',
35
35
  block_time: nil,
36
- estimated_time: be_within(1.day).of(DateTime.iso8601('2018-08-26T16:05:44.000000000+07:00')),
36
+ estimated_time: be_within(1.day).of(Time.iso8601('2018-08-26T16:05:44.000000000+07:00')),
37
37
  estimated_value: 15_678_420_000_000_000,
38
38
  confirmations: 261_969
39
39
  }
@@ -0,0 +1,19 @@
1
+ require 'active_record'
2
+ require 'cryptocoin_payable'
3
+ require 'cryptocoin_payable/orm/activerecord'
4
+
5
+ describe CryptocoinPayable::CoinPayment do
6
+ context 'when creating a Bitcoin Cash payment' do
7
+ subject { CryptocoinPayable::CoinPayment.new(coin_type: :bch, reason: 'test', price: 1) }
8
+
9
+ it 'can save a payment' do
10
+ expect { subject.save! }.not_to raise_error
11
+ end
12
+
13
+ it 'can update the coin amount due' do
14
+ subject.update_coin_amount_due
15
+ expect(subject.coin_amount_due).to eq(100_000_000)
16
+ expect(subject.coin_conversion).to eq(1)
17
+ end
18
+ end
19
+ end
@@ -9,8 +9,8 @@ describe CryptocoinPayable::PaymentProcessor do
9
9
  transactions << {
10
10
  transaction_hash: Digest::SHA2.new(256).hexdigest(i.to_s),
11
11
  block_hash: '0000000000000000048e8ea3fdd2c3a59ddcbcf7575f82cb96ce9fd17da9f2f4',
12
- block_time: DateTime.iso8601('2016-09-13T15:41:00.000000000+00:00'),
13
- estimated_time: DateTime.iso8601('2016-09-13T15:41:00.000000000+00:00'),
12
+ block_time: Time.iso8601('2016-09-13T15:41:00.000000000+00:00'),
13
+ estimated_time: Time.iso8601('2016-09-13T15:41:00.000000000+00:00'),
14
14
  estimated_value: 499_000_000,
15
15
  confirmations: 116_077
16
16
  }
@@ -23,7 +23,6 @@ describe CryptocoinPayable::PaymentProcessor do
23
23
  after(:all) { GC.enable }
24
24
 
25
25
  before do
26
- CryptocoinPayable::CurrencyConversion.create!(coin_type: :btc, currency: 1, price: 1)
27
26
  adapter = CryptocoinPayable::Adapters.bitcoin_adapter
28
27
  allow(adapter).to receive(:fetch_transactions) { build_fake_transactions_data }
29
28
  end
@@ -6,12 +6,6 @@ describe CryptocoinPayable::PricingProcessor, vcr: true do
6
6
  # Ensure we have a stale payment.
7
7
  Timecop.freeze(3.days.from_now)
8
8
 
9
- CryptocoinPayable::CurrencyConversion.create!(
10
- coin_type: :btc,
11
- currency: 1,
12
- price: 1
13
- )
14
-
15
9
  CryptocoinPayable::CoinPayment.create!(
16
10
  state: :pending,
17
11
  coin_type: :btc,
@@ -0,0 +1,70 @@
1
+ ---
2
+ http_interactions:
3
+ - request:
4
+ method: get
5
+ uri: https://blockexplorer.com/api/txs/?address=1PKKkNRPPfPjrPiufHzuLFX2gMAVJbcN8H
6
+ body:
7
+ encoding: US-ASCII
8
+ string: ''
9
+ headers:
10
+ Accept-Encoding:
11
+ - gzip;q=1.0,deflate;q=0.6,identity;q=0.3
12
+ Accept:
13
+ - "*/*"
14
+ User-Agent:
15
+ - Ruby
16
+ response:
17
+ status:
18
+ code: 200
19
+ message: OK
20
+ headers:
21
+ Date:
22
+ - Thu, 08 Nov 2018 17:34:48 GMT
23
+ Content-Type:
24
+ - application/json; charset=utf-8
25
+ Transfer-Encoding:
26
+ - chunked
27
+ Connection:
28
+ - keep-alive
29
+ Set-Cookie:
30
+ - BE=f6fe53688c017ff7; path=/
31
+ - __cfduid=dd04ba3e33bea3f20633eebd13320dc081541698486; expires=Fri, 08-Nov-19
32
+ 17:34:46 GMT; path=/; domain=.blockexplorer.com; HttpOnly; Secure
33
+ X-Powered-By:
34
+ - Express
35
+ Access-Control-Allow-Origin:
36
+ - "*"
37
+ Access-Control-Allow-Methods:
38
+ - GET, HEAD, PUT, POST, OPTIONS
39
+ Access-Control-Allow-Headers:
40
+ - Origin, X-Requested-With, Content-Type, Accept, Content-Length, Cache-Control,
41
+ cf-connecting-ip
42
+ Cache-Control:
43
+ - public, max-age=30
44
+ X-Content-Type-Options:
45
+ - nosniff
46
+ Etag:
47
+ - W/"10a9-4+a9umI+STIlOj3adv7w8ZfOGog"
48
+ Vary:
49
+ - Accept-Encoding
50
+ Cf-Cache-Status:
51
+ - BYPASS
52
+ Expect-Ct:
53
+ - max-age=604800, report-uri="https://report-uri.cloudflare.com/cdn-cgi/beacon/expect-ct"
54
+ Server:
55
+ - cloudflare
56
+ Cf-Ray:
57
+ - 4769cad68b06a49d-PNH
58
+ body:
59
+ encoding: ASCII-8BIT
60
+ string: '{"pagesTotal":1,"txs":[{"txid":"1c085fb7180d35736dae4d1526f18c71fb551173c7471a70251bff88d38d559d","version":1,"locktime":0,"vin":[{"txid":"5dd89fb2f9a2adfe6f4918db6a203b7c8c91c25c7cb0cd9bfb8a250e3c25abdd","vout":0,"sequence":4294967295,"n":0,"scriptSig":{"hex":"483045022100b029679930b80ce4c067b9c903571c6a935983d7beecaeb902ad1fffa9dba21502204e542e193b74acf68ab17cb13f821d339244aea9cb339bede4b195b3c3b35c6c0121028005d0d0b1c96d549f0eb5e18fb9f7b35ed5a28fb2f3c55842ab9dc9a9218976","asm":"3045022100b029679930b80ce4c067b9c903571c6a935983d7beecaeb902ad1fffa9dba21502204e542e193b74acf68ab17cb13f821d339244aea9cb339bede4b195b3c3b35c6c[ALL]
61
+ 028005d0d0b1c96d549f0eb5e18fb9f7b35ed5a28fb2f3c55842ab9dc9a9218976"},"addr":"1PKKkNRPPfPjrPiufHzuLFX2gMAVJbcN8H","valueSat":55965,"value":0.00055965,"doubleSpentTxID":null},{"txid":"5dd89fb2f9a2adfe6f4918db6a203b7c8c91c25c7cb0cd9bfb8a250e3c25abdd","vout":1,"sequence":4294967295,"n":1,"scriptSig":{"hex":"473044022048fad34851bc49c267386186df590ac12390172669f5612b2c28dc09d517223c02203fe2ecf934c10cfaa3d27d1e739ec3413fd16612ba16eaa15ba7a2cfbf0b3a790121034994bba249dc54ed3651595dab6c5c6e3c177032495e00a3fe53874adf565a34","asm":"3044022048fad34851bc49c267386186df590ac12390172669f5612b2c28dc09d517223c02203fe2ecf934c10cfaa3d27d1e739ec3413fd16612ba16eaa15ba7a2cfbf0b3a79[ALL]
62
+ 034994bba249dc54ed3651595dab6c5c6e3c177032495e00a3fe53874adf565a34"},"addr":"15Gmaq5M8cMD4mAy1Gh6dVtnoDX3XAazwf","valueSat":503191,"value":0.00503191,"doubleSpentTxID":null}],"vout":[{"value":"0.00062184","n":0,"scriptPubKey":{"hex":"a91484fd6a85eb6cb335e0b8641717f3cf7f392f897587","asm":"OP_HASH160
63
+ 84fd6a85eb6cb335e0b8641717f3cf7f392f8975 OP_EQUAL","addresses":["3DpChXQfjya6zQdUcgpA5tQFfqv9KgRXMP"],"type":"scripthash"},"spentTxId":"0a4c5507fe17f62d698f4ad30843909320770fd5b7159a925a0df289ed77c38e","spentIndex":1,"spentHeight":547179},{"value":"0.00495855","n":1,"scriptPubKey":{"hex":"76a9142edbf57347f7f56a2975c4c5c147680a781e32a988ac","asm":"OP_DUP
64
+ OP_HASH160 2edbf57347f7f56a2975c4c5c147680a781e32a9 OP_EQUALVERIFY OP_CHECKSIG","addresses":["15Gmaq5M8cMD4mAy1Gh6dVtnoDX3XAazwf"],"type":"pubkeyhash"},"spentTxId":"6f4f788586ba84ec1bea20b0063fff671c39f85a246b161188980fd13d8203f3","spentIndex":0,"spentHeight":547444}],"blockhash":"00000000000000000008d05a3b4530691dcfe048fa046bc1c95cbf7ae6c60ff0","blockheight":547177,"confirmations":2057,"time":1540413667,"blocktime":1540413667,"valueOut":0.00558039,"size":371,"valueIn":0.00559156,"fees":0.00001117},{"txid":"5dd89fb2f9a2adfe6f4918db6a203b7c8c91c25c7cb0cd9bfb8a250e3c25abdd","version":1,"locktime":0,"vin":[{"txid":"040d0d19654c2fa3e5dbea6654849339261c0bc5f4540173bf87ad0c9d1b2726","vout":1,"sequence":4294967295,"n":0,"scriptSig":{"hex":"483045022100d74af226278b3eaa850f12ccbbdc005796da6172b4b4664d1769586a361982a60220227b54175f2989cbceb4795997381c4b7a3f99d579431bf74294fcde8317ac8c0121034994bba249dc54ed3651595dab6c5c6e3c177032495e00a3fe53874adf565a34","asm":"3045022100d74af226278b3eaa850f12ccbbdc005796da6172b4b4664d1769586a361982a60220227b54175f2989cbceb4795997381c4b7a3f99d579431bf74294fcde8317ac8c[ALL]
65
+ 034994bba249dc54ed3651595dab6c5c6e3c177032495e00a3fe53874adf565a34"},"addr":"15Gmaq5M8cMD4mAy1Gh6dVtnoDX3XAazwf","valueSat":559835,"value":0.00559835,"doubleSpentTxID":null}],"vout":[{"value":"0.00055965","n":0,"scriptPubKey":{"hex":"76a914f4c9e785dbe753f59b98c082d793b2e1312c558788ac","asm":"OP_DUP
66
+ OP_HASH160 f4c9e785dbe753f59b98c082d793b2e1312c5587 OP_EQUALVERIFY OP_CHECKSIG","addresses":["1PKKkNRPPfPjrPiufHzuLFX2gMAVJbcN8H"],"type":"pubkeyhash"},"spentTxId":"1c085fb7180d35736dae4d1526f18c71fb551173c7471a70251bff88d38d559d","spentIndex":0,"spentHeight":547177},{"value":"0.00503191","n":1,"scriptPubKey":{"hex":"76a9142edbf57347f7f56a2975c4c5c147680a781e32a988ac","asm":"OP_DUP
67
+ OP_HASH160 2edbf57347f7f56a2975c4c5c147680a781e32a9 OP_EQUALVERIFY OP_CHECKSIG","addresses":["15Gmaq5M8cMD4mAy1Gh6dVtnoDX3XAazwf"],"type":"pubkeyhash"},"spentTxId":"1c085fb7180d35736dae4d1526f18c71fb551173c7471a70251bff88d38d559d","spentIndex":1,"spentHeight":547177}],"blockhash":"0000000000000000001e7b7b2bf28d3e3813e0a37354f95288fe05fa18a0bc8a","blockheight":547126,"confirmations":2108,"time":1540380059,"blocktime":1540380059,"valueOut":0.00559156,"size":226,"valueIn":0.00559835,"fees":0.00000679}]}'
68
+ http_version:
69
+ recorded_at: Thu, 08 Nov 2018 17:34:53 GMT
70
+ recorded_with: VCR 4.0.0
@@ -1,5 +1,106 @@
1
1
  ---
2
2
  http_interactions:
3
+ - request:
4
+ method: get
5
+ uri: https://api.coinbase.com/v2/prices/BCH-USD/spot
6
+ body:
7
+ encoding: US-ASCII
8
+ string: ''
9
+ headers:
10
+ Accept-Encoding:
11
+ - gzip;q=1.0,deflate;q=0.6,identity;q=0.3
12
+ Accept:
13
+ - "*/*"
14
+ User-Agent:
15
+ - Ruby
16
+ response:
17
+ status:
18
+ code: 200
19
+ message: OK
20
+ headers:
21
+ Date:
22
+ - Thu, 08 Nov 2018 17:53:56 GMT
23
+ Content-Type:
24
+ - application/json; charset=utf-8
25
+ Content-Length:
26
+ - '81'
27
+ Connection:
28
+ - keep-alive
29
+ Set-Cookie:
30
+ - __cfduid=d5f901b0febd4880997885e4cdc0882561541699635; expires=Fri, 08-Nov-19
31
+ 17:53:55 GMT; path=/; domain=.coinbase.com; HttpOnly
32
+ Cache-Control:
33
+ - public, max-age=30
34
+ Content-Disposition:
35
+ - attachment; filename=response.json
36
+ Content-Security-Policy:
37
+ - 'default-src ''self'' https://www.coinbase.com; child-src ''self'' https://www.coinbase.com
38
+ https://*.online-metrix.net https://*.wpstn.com https://netverify.com https://platform.twitter.com
39
+ https://www.google.com/recaptcha/ https://cdn.plaid.com/link/ https://*.doubleclick.net/
40
+ blob: https://coinbase.ada.support; connect-src ''self'' https://www.coinbase.com
41
+ https://api.coinbase.com https://api.mixpanel.com https://*.online-metrix.net
42
+ https://api.cloudinary.com https://ott9.wpstn.com/live https://api.amplitude.com/
43
+ static.coinbase.com wss://ws.coinbase.com wss://ws.coinbase.com:443 https://www.coinbase.com/api
44
+ https://coinbase.ada.support/api/; font-src ''self'' https://www.coinbase.com
45
+ https://assets.coinbase.com/ static.coinbase.com; img-src ''self'' data: https://www.coinbase.com
46
+ https://images.coinbase.com https://exceptions.coinbase.com https://coinbase-uploads.s3.amazonaws.com
47
+ https://s3.amazonaws.com/app-public/ https://maps.gstatic.com https://ssl.google-analytics.com
48
+ https://www.google.com https://maps.googleapis.com https://csi.gstatic.com
49
+ https://www.google-analytics.com https://res.cloudinary.com https://secure.gravatar.com
50
+ https://i2.wp.com https://*.online-metrix.net https://assets.coinbase.com/
51
+ https://hexagon-analytics.com https://api.mixpanel.com https://cb-brand.s3.amazonaws.com
52
+ https://googleads.g.doubleclick.net https://stats.g.doubleclick.net/r/collect
53
+ blob: static.coinbase.com https://d124s1zbdqkqqe.cloudfront.net https://www.facebook.com/tr;
54
+ media-src ''self'' https://www.coinbase.com blob:; object-src ''self'' data:
55
+ blob: https://www.coinbase.com https://cdn.siftscience.com https://*.online-metrix.net
56
+ https://www.gstatic.com https://www.google.com/recaptcha/api/; script-src
57
+ ''self'' ''unsafe-inline'' ''unsafe-eval'' https://www.coinbase.com https://cdn.siftscience.com
58
+ https://*.newrelic.com https://bam.nr-data.net https://*.google-analytics.com
59
+ https://www.google.com https://www.gstatic.com https://*.online-metrix.net
60
+ https://code.jquery.com https://chart.googleapis.com https://maps.googleapis.com
61
+ https://maps.gstatic.com https://netverify.com https://ajax.cloudflare.com
62
+ https://cdn.plaid.com/link/v2/stable/ https://www.googletagmanager.com/gtag/js
63
+ https://www.googletagmanager.com/gtm.js https://www.googleadservices.com https://googleads.g.doubleclick.net
64
+ https://assets.coinbase.com/ static.coinbase.com; style-src ''self'' ''unsafe-inline''
65
+ https://www.coinbase.com https://assets.coinbase.com/ static.coinbase.com;
66
+ report-uri /csp-report'
67
+ Etag:
68
+ - W/"b660661171f1c14502e61d57793828bd"
69
+ Expect-Ct:
70
+ - enforce; max-age=86400; report-uri="https://coinbase.report-uri.io/r/default/ct/reportOnly"
71
+ Referrer-Policy:
72
+ - strict-origin-when-cross-origin
73
+ Strict-Transport-Security:
74
+ - max-age=31536000; includeSubDomains; preload
75
+ Vary:
76
+ - Origin,Accept-Encoding
77
+ X-Content-Type-Options:
78
+ - nosniff
79
+ X-Download-Options:
80
+ - noopen
81
+ X-Frame-Options:
82
+ - DENY
83
+ X-Permitted-Cross-Domain-Policies:
84
+ - none
85
+ X-Powered-By:
86
+ - Proof-of-Work
87
+ X-Request-Id:
88
+ - 875e27b8-fda6-465f-b629-d783863ee485
89
+ X-Xss-Protection:
90
+ - 1; mode=block
91
+ Cf-Cache-Status:
92
+ - HIT
93
+ Expires:
94
+ - Thu, 08 Nov 2018 17:54:26 GMT
95
+ Server:
96
+ - cloudflare
97
+ Cf-Ray:
98
+ - 4769e6e35bd0a491-PNH
99
+ body:
100
+ encoding: ASCII-8BIT
101
+ string: '{"data":{"base":"BCH","currency":"USD","amount":"587.97"}}'
102
+ http_version:
103
+ recorded_at: Sun, 11 Nov 2018 17:54:00 GMT
3
104
  - request:
4
105
  method: get
5
106
  uri: https://api.coinbase.com/v2/prices/BTC-USD/spot
@@ -19,16 +120,16 @@ http_interactions:
19
120
  message: OK
20
121
  headers:
21
122
  Date:
22
- - Mon, 22 Oct 2018 12:03:43 GMT
123
+ - Thu, 08 Nov 2018 17:53:57 GMT
23
124
  Content-Type:
24
125
  - application/json; charset=utf-8
25
- Transfer-Encoding:
26
- - chunked
126
+ Content-Length:
127
+ - '82'
27
128
  Connection:
28
129
  - keep-alive
29
130
  Set-Cookie:
30
- - __cfduid=d3e71f70698fb0777476e87de15b925f71540209823; expires=Tue, 22-Oct-19
31
- 12:03:43 GMT; path=/; domain=.coinbase.com; HttpOnly
131
+ - __cfduid=d04b2b46c8cd0d0c16375884efe5462451541699636; expires=Fri, 08-Nov-19
132
+ 17:53:56 GMT; path=/; domain=.coinbase.com; HttpOnly
32
133
  Cache-Control:
33
134
  - public, max-age=30
34
135
  Content-Disposition:
@@ -65,7 +166,7 @@ http_interactions:
65
166
  https://www.coinbase.com https://assets.coinbase.com/ static.coinbase.com;
66
167
  report-uri /csp-report'
67
168
  Etag:
68
- - W/"50113d3b29ac6ba037f591afa45666d5"
169
+ - W/"4f5f2ad82a3963f92662806d45ab3edf"
69
170
  Expect-Ct:
70
171
  - enforce; max-age=86400; report-uri="https://coinbase.report-uri.io/r/default/ct/reportOnly"
71
172
  Referrer-Policy:
@@ -85,22 +186,22 @@ http_interactions:
85
186
  X-Powered-By:
86
187
  - Proof-of-Work
87
188
  X-Request-Id:
88
- - c4a1f140-cfaf-4fd5-b690-c8cbd93cdf98
189
+ - d16c1c0c-26ea-4fc7-a1ef-b02abfa8bf80
89
190
  X-Xss-Protection:
90
191
  - 1; mode=block
91
192
  Cf-Cache-Status:
92
193
  - HIT
93
194
  Expires:
94
- - Mon, 22 Oct 2018 12:04:13 GMT
195
+ - Thu, 08 Nov 2018 17:54:27 GMT
95
196
  Server:
96
197
  - cloudflare
97
198
  Cf-Ray:
98
- - 46dbd2859e5549a9-BKK
199
+ - 4769e6ea49b4a485-PNH
99
200
  body:
100
201
  encoding: ASCII-8BIT
101
- string: '{"data":{"base":"BTC","currency":"USD","amount":"6399.36"}}'
202
+ string: '{"data":{"base":"BTC","currency":"USD","amount":"6424.00"}}'
102
203
  http_version:
103
- recorded_at: Thu, 25 Oct 2018 12:03:55 GMT
204
+ recorded_at: Sun, 11 Nov 2018 17:54:00 GMT
104
205
  - request:
105
206
  method: get
106
207
  uri: https://api.coinbase.com/v2/prices/ETH-USD/spot
@@ -120,7 +221,7 @@ http_interactions:
120
221
  message: OK
121
222
  headers:
122
223
  Date:
123
- - Mon, 22 Oct 2018 12:03:45 GMT
224
+ - Thu, 08 Nov 2018 17:53:59 GMT
124
225
  Content-Type:
125
226
  - application/json; charset=utf-8
126
227
  Content-Length:
@@ -128,8 +229,8 @@ http_interactions:
128
229
  Connection:
129
230
  - keep-alive
130
231
  Set-Cookie:
131
- - __cfduid=d3e71f70698fb0777476e87de15b925f71540209823; expires=Tue, 22-Oct-19
132
- 12:03:43 GMT; path=/; domain=.coinbase.com; HttpOnly
232
+ - __cfduid=d233c228c665e49647bb663088827d07f1541699638; expires=Fri, 08-Nov-19
233
+ 17:53:58 GMT; path=/; domain=.coinbase.com; HttpOnly
133
234
  Cache-Control:
134
235
  - public, max-age=30
135
236
  Content-Disposition:
@@ -166,7 +267,7 @@ http_interactions:
166
267
  https://www.coinbase.com https://assets.coinbase.com/ static.coinbase.com;
167
268
  report-uri /csp-report'
168
269
  Etag:
169
- - W/"efc1bc8e6732bdf6cba86c542ae05a3f"
270
+ - W/"3f88f9ab53d68d44e3364543ddfdb274"
170
271
  Expect-Ct:
171
272
  - enforce; max-age=86400; report-uri="https://coinbase.report-uri.io/r/default/ct/reportOnly"
172
273
  Referrer-Policy:
@@ -186,20 +287,20 @@ http_interactions:
186
287
  X-Powered-By:
187
288
  - Proof-of-Work
188
289
  X-Request-Id:
189
- - 12c5f4dc-a501-4d49-80f7-3bb02d826bfa
290
+ - bc27a504-585e-4550-98f5-a71b699a954b
190
291
  X-Xss-Protection:
191
292
  - 1; mode=block
192
293
  Cf-Cache-Status:
193
294
  - HIT
194
295
  Expires:
195
- - Mon, 22 Oct 2018 12:04:15 GMT
296
+ - Thu, 08 Nov 2018 17:54:29 GMT
196
297
  Server:
197
298
  - cloudflare
198
299
  Cf-Ray:
199
- - 46dbd286cf8849a9-BKK
300
+ - 4769e6f1aa45a4af-PNH
200
301
  body:
201
302
  encoding: ASCII-8BIT
202
- string: '{"data":{"base":"ETH","currency":"USD","amount":"201.96"}}'
303
+ string: '{"data":{"base":"ETH","currency":"USD","amount":"211.81"}}'
203
304
  http_version:
204
- recorded_at: Thu, 25 Oct 2018 12:03:55 GMT
305
+ recorded_at: Sun, 11 Nov 2018 17:54:00 GMT
205
306
  recorded_with: VCR 4.0.0
data/spec/spec_helper.rb CHANGED
@@ -107,6 +107,14 @@ RSpec.configure do |config|
107
107
 
108
108
  ActiveRecord::Base.establish_connection(adapter: 'postgresql', database: 'cryptocoin_payable_test')
109
109
  create_tables
110
+
111
+ CryptocoinPayable::CurrencyConversion.coin_types.keys.each do |coin_type|
112
+ CryptocoinPayable::CurrencyConversion.create!(
113
+ coin_type: coin_type,
114
+ currency: 1,
115
+ price: 1
116
+ )
117
+ end
110
118
  end
111
119
 
112
120
  config.after(:suite) do
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: cryptocoin_payable
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.4.3
4
+ version: 1.4.4
5
5
  platform: ruby
6
6
  authors:
7
7
  - Jonathan Salis
@@ -9,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2018-10-25 00:00:00.000000000 Z
12
+ date: 2018-11-08 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: bundler
@@ -339,6 +339,7 @@ files:
339
339
  - spec/acceptance/adapters/bitcoin_cash_spec.rb
340
340
  - spec/acceptance/adapters/bitcoin_spec.rb
341
341
  - spec/acceptance/adapters/ethereum_spec.rb
342
+ - spec/acceptance/coin_payment_spec.rb
342
343
  - spec/acceptance/commands/payment_processor_spec.rb
343
344
  - spec/acceptance/commands/pricing_processor_spec.rb
344
345
  - spec/dummy/README.rdoc
@@ -393,6 +394,7 @@ files:
393
394
  - spec/fixtures/vcr_cassettes/CryptocoinPayable_Adapters_Bitcoin/gives_zero_instead_of_null_for_zero-value_transactions.yml
394
395
  - spec/fixtures/vcr_cassettes/CryptocoinPayable_Adapters_Bitcoin/handles_nil.yml
395
396
  - spec/fixtures/vcr_cassettes/CryptocoinPayable_Adapters_Bitcoin/raises_an_error_when_an_invalid_address_is_passed.yml
397
+ - spec/fixtures/vcr_cassettes/CryptocoinPayable_Adapters_Bitcoin/returns_zero_estimated_value_for_zero-value_transactions.yml
396
398
  - spec/fixtures/vcr_cassettes/CryptocoinPayable_Adapters_Bitcoin/when_the_Block_Explorer_API_fails/falls_back_to_using_the_BlockCypher_API.yml
397
399
  - spec/fixtures/vcr_cassettes/CryptocoinPayable_Adapters_BitcoinCash/gets_an_empty_result_when_no_transactions_found.yml
398
400
  - spec/fixtures/vcr_cassettes/CryptocoinPayable_Adapters_BitcoinCash/gets_transactions_for_a_given_address.yml
@@ -438,6 +440,7 @@ test_files:
438
440
  - spec/acceptance/adapters/bitcoin_cash_spec.rb
439
441
  - spec/acceptance/adapters/bitcoin_spec.rb
440
442
  - spec/acceptance/adapters/ethereum_spec.rb
443
+ - spec/acceptance/coin_payment_spec.rb
441
444
  - spec/acceptance/commands/payment_processor_spec.rb
442
445
  - spec/acceptance/commands/pricing_processor_spec.rb
443
446
  - spec/dummy/README.rdoc
@@ -492,6 +495,7 @@ test_files:
492
495
  - spec/fixtures/vcr_cassettes/CryptocoinPayable_Adapters_Bitcoin/gives_zero_instead_of_null_for_zero-value_transactions.yml
493
496
  - spec/fixtures/vcr_cassettes/CryptocoinPayable_Adapters_Bitcoin/handles_nil.yml
494
497
  - spec/fixtures/vcr_cassettes/CryptocoinPayable_Adapters_Bitcoin/raises_an_error_when_an_invalid_address_is_passed.yml
498
+ - spec/fixtures/vcr_cassettes/CryptocoinPayable_Adapters_Bitcoin/returns_zero_estimated_value_for_zero-value_transactions.yml
495
499
  - spec/fixtures/vcr_cassettes/CryptocoinPayable_Adapters_Bitcoin/when_the_Block_Explorer_API_fails/falls_back_to_using_the_BlockCypher_API.yml
496
500
  - spec/fixtures/vcr_cassettes/CryptocoinPayable_Adapters_BitcoinCash/gets_an_empty_result_when_no_transactions_found.yml
497
501
  - spec/fixtures/vcr_cassettes/CryptocoinPayable_Adapters_BitcoinCash/gets_transactions_for_a_given_address.yml