doge_coin 0.0.1 → 0.9.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/.rspec +2 -0
- data/Gemfile.lock +51 -0
- data/README.md +42 -2
- data/doge_coin.gemspec +8 -1
- data/lib/doge_coin.rb +14 -1
- data/lib/doge_coin/client.rb +99 -0
- data/lib/doge_coin/configuration.rb +24 -0
- data/lib/doge_coin/errors.rb +7 -0
- data/lib/doge_coin/version.rb +1 -1
- data/spec/blockchain_captured_responses/addressbalance/.json +1 -0
- data/spec/blockchain_captured_responses/addressbalance/DFrwT5zteXdvfgz3vjhWNcpXMXDiVPmkXN.json +1 -0
- data/spec/blockchain_captured_responses/addressbalance/DMP2WQ1pjCqSNCdvn4HMFztmLG7an9hNWT.json +1 -0
- data/spec/blockchain_captured_responses/addressbalance/DMP2WQ1pjCqSNCdvn4HMFztmLG7an9hNWT_---.json +1 -0
- data/spec/blockchain_captured_responses/addressbalance/abcdef.json +1 -0
- data/spec/blockchain_captured_responses/addresstohash/DMP2WQ1pjCqSNCdvn4HMFztmLG7an9hNWT.json +1 -0
- data/spec/blockchain_captured_responses/checkaddress/DMP2WQ1pjCqSNCdvn4HMFztmLG7an9hNWT.json +1 -0
- data/spec/blockchain_captured_responses/checkaddress/DMP2WQ1pjCqSNCdvn4HMFztmLG7an9hNWTBB.json +1 -0
- data/spec/blockchain_captured_responses/checkaddress/lol.json +1 -0
- data/spec/blockchain_captured_responses/decode_address/DMP2WQ1pjCqSNCdvn4HMFztmLG7an9hNWT.json +1 -0
- data/spec/blockchain_captured_responses/getblockcount.json +1 -0
- data/spec/blockchain_captured_responses/getdifficulty.json +1 -0
- data/spec/blockchain_captured_responses/getreceivedbyaddress/.json +1 -0
- data/spec/blockchain_captured_responses/getreceivedbyaddress/DFrwT5zteXdvfgz3vjhWNcpXMXDiVPmkXN.json +1 -0
- data/spec/blockchain_captured_responses/getreceivedbyaddress/DMP2WQ1pjCqSNCdvn4HMFztmLG7an9hNWT.json +1 -0
- data/spec/blockchain_captured_responses/getreceivedbyaddress/DMP2WQ1pjCqSNCdvn4HMFztmLG7an9hNWT_---.json +1 -0
- data/spec/blockchain_captured_responses/getreceivedbyaddress/abcdef.json +1 -0
- data/spec/blockchain_captured_responses/getsentbyaddress/.json +1 -0
- data/spec/blockchain_captured_responses/getsentbyaddress/DABmu1j1hD2HeFEiMGUByuc1HwwZguQvWg.json +1 -0
- data/spec/blockchain_captured_responses/getsentbyaddress/DMP2WQ1pjCqSNCdvn4HMFztmLG7an9hNWT.json +1 -0
- data/spec/blockchain_captured_responses/getsentbyaddress/DMP2WQ1pjCqSNCdvn4HMFztmLG7an9hNWT_---.json +1 -0
- data/spec/blockchain_captured_responses/getsentbyaddress/abcdef.json +1 -0
- data/spec/blockchain_captured_responses/hashtoaddress/B224785E7F7D213AF75AB440DB1108C07ED38D80.json +1 -0
- data/spec/blockchain_captured_responses/totalbc.json +1 -0
- data/spec/blockchain_captured_responses/transactions.json +1 -0
- data/spec/client_spec.rb +74 -0
- data/spec/spec_helper.rb +18 -0
- metadata +150 -7
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 668ef2b6b9a1556865ee6fce61221f1abcfc4ce5
|
4
|
+
data.tar.gz: b3a50c25822071faa018eff7484992e7d4619c23
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 0a2054db5836ea5e5a79847d987464bf663c1bba4bc3474d3454701907bea424eb8d3a7cdd1330bcd20983a40ee49f11284d0de414a864e199757bdfd2c897a4
|
7
|
+
data.tar.gz: 50df9ec6c068fc988c63e03342078a8f4272b6d4d6463436b475dbe47209310948edbcdff01009ec5c08e3b9263e5cf240ad6ade31e6409e3841ae5fdef6e228
|
data/.rspec
ADDED
data/Gemfile.lock
ADDED
@@ -0,0 +1,51 @@
|
|
1
|
+
PATH
|
2
|
+
remote: .
|
3
|
+
specs:
|
4
|
+
doge_coin (0.0.1)
|
5
|
+
faraday (~> 0.9)
|
6
|
+
multi_json (~> 1.8)
|
7
|
+
vcr (~> 2.8)
|
8
|
+
|
9
|
+
GEM
|
10
|
+
remote: https://rubygems.org/
|
11
|
+
specs:
|
12
|
+
addressable (2.3.5)
|
13
|
+
coderay (1.1.0)
|
14
|
+
crack (0.4.1)
|
15
|
+
safe_yaml (~> 0.9.0)
|
16
|
+
diff-lcs (1.2.5)
|
17
|
+
faraday (0.9.0)
|
18
|
+
multipart-post (>= 1.2, < 3)
|
19
|
+
method_source (0.8.2)
|
20
|
+
multi_json (1.8.4)
|
21
|
+
multipart-post (2.0.0)
|
22
|
+
pry (0.9.12.6)
|
23
|
+
coderay (~> 1.0)
|
24
|
+
method_source (~> 0.8)
|
25
|
+
slop (~> 3.4)
|
26
|
+
rake (10.1.1)
|
27
|
+
rspec (2.14.1)
|
28
|
+
rspec-core (~> 2.14.0)
|
29
|
+
rspec-expectations (~> 2.14.0)
|
30
|
+
rspec-mocks (~> 2.14.0)
|
31
|
+
rspec-core (2.14.7)
|
32
|
+
rspec-expectations (2.14.4)
|
33
|
+
diff-lcs (>= 1.1.3, < 2.0)
|
34
|
+
rspec-mocks (2.14.4)
|
35
|
+
safe_yaml (0.9.7)
|
36
|
+
slop (3.4.7)
|
37
|
+
vcr (2.8.0)
|
38
|
+
webmock (1.15.0)
|
39
|
+
addressable (>= 2.2.7)
|
40
|
+
crack (>= 0.3.2)
|
41
|
+
|
42
|
+
PLATFORMS
|
43
|
+
ruby
|
44
|
+
|
45
|
+
DEPENDENCIES
|
46
|
+
bundler (~> 1.5)
|
47
|
+
doge_coin!
|
48
|
+
pry
|
49
|
+
rake (~> 10.1)
|
50
|
+
rspec (~> 2.14)
|
51
|
+
webmock (= 1.15)
|
data/README.md
CHANGED
@@ -1,6 +1,7 @@
|
|
1
1
|
# DogeCoin
|
2
2
|
|
3
|
-
|
3
|
+
The purpose of this gem is to explore the DogeCoin blockchain.
|
4
|
+
For the moment it wraps the [Dogechain](http://dogechain.info) API, but this could change in the future.
|
4
5
|
|
5
6
|
## Installation
|
6
7
|
|
@@ -18,7 +19,46 @@ Or install it yourself as:
|
|
18
19
|
|
19
20
|
## Usage
|
20
21
|
|
21
|
-
|
22
|
+
### Instruction
|
23
|
+
|
24
|
+
There is a call mapped for nearly all the [dogechain API](http://dogechain.info/chain/Dogecoin/q).
|
25
|
+
|
26
|
+
The current calls are:
|
27
|
+
```ruby
|
28
|
+
get_block_count
|
29
|
+
get_difficulty
|
30
|
+
get_total_mined
|
31
|
+
transactions
|
32
|
+
address_balance (address)
|
33
|
+
total_received (address)
|
34
|
+
total_sent (address)
|
35
|
+
address_to_hash (address)
|
36
|
+
hash_to_address (address)
|
37
|
+
valid_address? (address)
|
38
|
+
decode_address (address)
|
39
|
+
```
|
40
|
+
|
41
|
+
In a close-future, I would like to add methods to check if an address received new transactions, check how much validations it got etc...
|
42
|
+
|
43
|
+
Feel free to contribute !
|
44
|
+
|
45
|
+
### Configuration
|
46
|
+
|
47
|
+
You can configure the gem to use [VCR](https://github.com/vcr/vcr) (e.g: for test purpose).
|
48
|
+
Simply add the following to your spec_helper.rb
|
49
|
+
|
50
|
+
```ruby
|
51
|
+
DogeCoin.configure do |c|
|
52
|
+
c.vcr_mode = true
|
53
|
+
end
|
54
|
+
```
|
55
|
+
|
56
|
+
## Testing
|
57
|
+
|
58
|
+
Checkout the gem, then simply run
|
59
|
+
```shell
|
60
|
+
rspec
|
61
|
+
```
|
22
62
|
|
23
63
|
## Contributing
|
24
64
|
|
data/doge_coin.gemspec
CHANGED
@@ -18,6 +18,13 @@ Gem::Specification.new do |spec|
|
|
18
18
|
spec.test_files = spec.files.grep(%r{^(test|spec|features)/})
|
19
19
|
spec.require_paths = ["lib"]
|
20
20
|
|
21
|
+
spec.add_dependency "vcr", '~> 2.8'
|
22
|
+
spec.add_dependency 'multi_json', '~> 1.8'
|
23
|
+
spec.add_dependency 'faraday', '~> 0.9'
|
24
|
+
|
21
25
|
spec.add_development_dependency "bundler", "~> 1.5"
|
22
|
-
spec.add_development_dependency "rake"
|
26
|
+
spec.add_development_dependency "rake", '~> 10.1'
|
27
|
+
spec.add_development_dependency "rspec", '~> 2.14'
|
28
|
+
spec.add_development_dependency 'webmock', '1.15'
|
29
|
+
spec.add_development_dependency "pry", '~> 0.9'
|
23
30
|
end
|
data/lib/doge_coin.rb
CHANGED
@@ -1,5 +1,18 @@
|
|
1
1
|
require "doge_coin/version"
|
2
|
+
require "doge_coin/configuration"
|
3
|
+
require "doge_coin/client"
|
4
|
+
require 'faraday'
|
2
5
|
|
3
6
|
module DogeCoin
|
4
|
-
|
7
|
+
extend DogeCoin::Configuration
|
8
|
+
|
9
|
+
def self.method_missing(method, *args, &block)
|
10
|
+
new_client.send(method, *args, &block)
|
11
|
+
end
|
12
|
+
|
13
|
+
private
|
14
|
+
|
15
|
+
def self.new_client
|
16
|
+
@client ||= DogeCoin::Client.new
|
17
|
+
end
|
5
18
|
end
|
@@ -0,0 +1,99 @@
|
|
1
|
+
require 'doge_coin/errors'
|
2
|
+
require 'faraday'
|
3
|
+
|
4
|
+
module DogeCoin
|
5
|
+
class Client
|
6
|
+
include Faraday
|
7
|
+
VALID_FLOAT_REGEXP = /\A(\d)+(\.\d+)?\z/
|
8
|
+
|
9
|
+
# Returns the current block count
|
10
|
+
def get_block_count
|
11
|
+
call_blockchain_api('getblockcount').to_i
|
12
|
+
end
|
13
|
+
# Returns the current difficulty
|
14
|
+
def get_difficulty
|
15
|
+
call_blockchain_api('getdifficulty').to_f
|
16
|
+
end
|
17
|
+
# Returns the total of mined doges
|
18
|
+
def get_total_mined
|
19
|
+
call_blockchain_api('totalbc').to_f
|
20
|
+
end
|
21
|
+
|
22
|
+
# Returns the amount transactions of the last blocks as an Array object
|
23
|
+
def transactions
|
24
|
+
JSON.parse(call_blockchain_api("transactions"))
|
25
|
+
end
|
26
|
+
|
27
|
+
# Returns the address balance (received - sent)
|
28
|
+
# Raise error if address is invalid
|
29
|
+
def address_balance address
|
30
|
+
balance = call_blockchain_api("addressbalance/#{address}")
|
31
|
+
|
32
|
+
raise DogeCoin::InvalidAddress unless is_a_float?(balance)
|
33
|
+
|
34
|
+
balance.to_f
|
35
|
+
end
|
36
|
+
|
37
|
+
# Returns the total sent
|
38
|
+
# Raise error if address is invalid
|
39
|
+
def total_received address
|
40
|
+
balance = call_blockchain_api("getreceivedbyaddress/#{address}")
|
41
|
+
|
42
|
+
raise DogeCoin::InvalidAddress unless is_a_float?(balance)
|
43
|
+
|
44
|
+
balance.to_f
|
45
|
+
end
|
46
|
+
|
47
|
+
# Returns the total sent
|
48
|
+
# Raise error if address is invalid
|
49
|
+
def total_sent address
|
50
|
+
balance = call_blockchain_api("getsentbyaddress/#{address}")
|
51
|
+
|
52
|
+
raise DogeCoin::InvalidAddress unless is_a_float?(balance)
|
53
|
+
|
54
|
+
balance.to_f
|
55
|
+
end
|
56
|
+
|
57
|
+
# Shows the 160-bit hash encoded in ADDRESS.
|
58
|
+
# For BBE compatibility, the address is not checked for validity.
|
59
|
+
def address_to_hash address
|
60
|
+
call_blockchain_api("addresstohash/#{address}")
|
61
|
+
end
|
62
|
+
|
63
|
+
# Converts a 160-bit hash and address version to an address.
|
64
|
+
def hash_to_address address
|
65
|
+
call_blockchain_api("hashtoaddress/#{address}")
|
66
|
+
end
|
67
|
+
|
68
|
+
# Returns true if the adress is valid, and false otherwise
|
69
|
+
def valid_address? address
|
70
|
+
code = call_blockchain_api("checkaddress/#{address}")
|
71
|
+
|
72
|
+
!['X5', 'SZ', 'CK'].include?(code)
|
73
|
+
end
|
74
|
+
|
75
|
+
# Shows ADDRESS's version byte(s) and public key hash as hex strings separated by colon (":").
|
76
|
+
def decode_address address
|
77
|
+
call_blockchain_api("decode_address/#{address}")
|
78
|
+
end
|
79
|
+
|
80
|
+
private
|
81
|
+
def is_a_float? nb
|
82
|
+
nb.match(VALID_FLOAT_REGEXP) ? true : false
|
83
|
+
end
|
84
|
+
def call_blockchain_api(params)
|
85
|
+
if DogeCoin.vcr_mode
|
86
|
+
DogeCoin::Configuration.configure_vcr
|
87
|
+
|
88
|
+
::VCR.use_cassette(params, match_requests_on: [:method, :uri]) do
|
89
|
+
do_call params
|
90
|
+
end
|
91
|
+
else
|
92
|
+
do_call params
|
93
|
+
end
|
94
|
+
end
|
95
|
+
def do_call params
|
96
|
+
Faraday.get(DogeCoin::Configuration::DOGECHAIN_BASE_URL + params).body
|
97
|
+
end
|
98
|
+
end
|
99
|
+
end
|
@@ -0,0 +1,24 @@
|
|
1
|
+
require 'vcr'
|
2
|
+
|
3
|
+
module DogeCoin
|
4
|
+
module Configuration
|
5
|
+
attr_accessor :vcr_mode
|
6
|
+
|
7
|
+
DOGECHAIN_BASE_URL = 'http://dogechain.info/chain/Dogecoin/q/'
|
8
|
+
|
9
|
+
def configure
|
10
|
+
yield self
|
11
|
+
end
|
12
|
+
|
13
|
+
def self.configure_vcr
|
14
|
+
VCR.configure do |c|
|
15
|
+
c.cassette_library_dir = 'spec/blockchain_captured_responses'
|
16
|
+
c.default_cassette_options = { serialize_with: :json }
|
17
|
+
c.preserve_exact_body_bytes do |http_message|
|
18
|
+
http_message.body.encoding.name == 'ASCII-8BIT' || !http_message.body.valid_encoding?
|
19
|
+
end
|
20
|
+
c.hook_into :webmock
|
21
|
+
end
|
22
|
+
end
|
23
|
+
end
|
24
|
+
end
|
data/lib/doge_coin/version.rb
CHANGED
@@ -0,0 +1 @@
|
|
1
|
+
{"http_interactions":[{"request":{"method":"get","uri":"http://dogechain.info/chain/Dogecoin/q/addressbalance/","body":{"encoding":"US-ASCII","string":""},"headers":{"User-Agent":["Faraday v0.9.0"],"Accept-Encoding":["gzip;q=1.0,deflate;q=0.6,identity;q=0.3"],"Accept":["*/*"]}},"response":{"status":{"code":200,"message":"OK"},"headers":{"Date":["Wed, 29 Jan 2014 21:33:02 GMT"],"Server":["Apache/2.2.22 (Debian)"],"X-Powered-By":["PHP/5.4.4-14+deb7u7"],"Vary":["Accept-Encoding"],"Content-Length":["97"],"Content-Type":["text/plain"]},"body":{"encoding":"UTF-8","string":"returns amount of money at the given address\n/chain/CHAIN/q/addressbalance/ADDRESS"},"http_version":null},"recorded_at":"Wed, 29 Jan 2014 21:36:16 GMT"}],"recorded_with":"VCR 2.8.0"}
|
data/spec/blockchain_captured_responses/addressbalance/DFrwT5zteXdvfgz3vjhWNcpXMXDiVPmkXN.json
ADDED
@@ -0,0 +1 @@
|
|
1
|
+
{"http_interactions":[{"request":{"method":"get","uri":"http://dogechain.info/chain/Dogecoin/q/addressbalance/DFrwT5zteXdvfgz3vjhWNcpXMXDiVPmkXN","body":{"encoding":"US-ASCII","string":""},"headers":{"User-Agent":["Faraday v0.9.0"],"Accept-Encoding":["gzip;q=1.0,deflate;q=0.6,identity;q=0.3"],"Accept":["*/*"]}},"response":{"status":{"code":200,"message":"OK"},"headers":{"Date":["Wed, 29 Jan 2014 21:33:02 GMT"],"Server":["Apache/2.2.22 (Debian)"],"X-Powered-By":["PHP/5.4.4-14+deb7u7"],"Vary":["Accept-Encoding"],"Content-Length":["34"],"Content-Type":["text/plain"]},"body":{"encoding":"UTF-8","string":"18712.33473684"},"http_version":null},"recorded_at":"Wed, 29 Jan 2014 21:36:15 GMT"}],"recorded_with":"VCR 2.8.0"}
|
data/spec/blockchain_captured_responses/addressbalance/DMP2WQ1pjCqSNCdvn4HMFztmLG7an9hNWT.json
ADDED
@@ -0,0 +1 @@
|
|
1
|
+
{"http_interactions":[{"request":{"method":"get","uri":"http://dogechain.info/chain/Dogecoin/q/addressbalance/DMP2WQ1pjCqSNCdvn4HMFztmLG7an9hNWT","body":{"encoding":"US-ASCII","string":""},"headers":{"User-Agent":["Faraday v0.9.0"],"Accept-Encoding":["gzip;q=1.0,deflate;q=0.6,identity;q=0.3"],"Accept":["*/*"]}},"response":{"status":{"code":200,"message":"OK"},"headers":{"Date":["Wed, 29 Jan 2014 21:33:02 GMT"],"Server":["Apache/2.2.22 (Debian)"],"X-Powered-By":["PHP/5.4.4-14+deb7u7"],"Vary":["Accept-Encoding"],"Content-Length":["21"],"Content-Type":["text/plain"]},"body":{"encoding":"UTF-8","string":"0"},"http_version":null},"recorded_at":"Wed, 29 Jan 2014 21:36:15 GMT"}],"recorded_with":"VCR 2.8.0"}
|
data/spec/blockchain_captured_responses/addressbalance/DMP2WQ1pjCqSNCdvn4HMFztmLG7an9hNWT_---.json
ADDED
@@ -0,0 +1 @@
|
|
1
|
+
{"http_interactions":[{"request":{"method":"get","uri":"http://dogechain.info/chain/Dogecoin/q/addressbalance/DMP2WQ1pjCqSNCdvn4HMFztmLG7an9hNWT+---","body":{"encoding":"US-ASCII","string":""},"headers":{"User-Agent":["Faraday v0.9.0"],"Accept-Encoding":["gzip;q=1.0,deflate;q=0.6,identity;q=0.3"],"Accept":["*/*"]}},"response":{"status":{"code":400,"message":"Bad Request"},"headers":{"Date":["Wed, 29 Jan 2014 21:33:03 GMT"],"Server":["Apache/2.2.22 (Debian)"],"X-Powered-By":["PHP/5.4.4-14+deb7u7"],"Vary":["Accept-Encoding"],"Content-Length":["613"],"Connection":["close"],"Content-Type":["text/html"]},"body":{"encoding":"UTF-8","string":"<!DOCTYPE html>\n<html class=\"no-js\" lang=\"en\">\n\t<head>\n\t\t<meta charset=\"utf-8\">\n\t\t<meta http-equiv=\"X-UA-Compatible\" content=\"IE=edge\">\n\t\t<title>Dogechain - Page not found</title>\n\t\t<meta name=\"description\" content=\"\">\n\t\t<meta name=\"robots\" content=\"index, follow\">\n\t\t<meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\">\n\t\t\n\t\t<!-- Styles -->\n\t\t<link rel=\"stylesheet\" href=\"/content/css/sangoma-blue.css\">\n\n\t\t<!-- JS Libs -->\n\t\t<script src=\"//ajax.googleapis.com/ajax/libs/jquery/1.10.2/jquery.min.js\"></script>\n\t\t<script>window.jQuery || document.write('<script src=\"/content/js/libs/jquery.js\"><\\/script>')</script>\n\t\t<script src=\"/content/js/libs/modernizr.js\"></script>\n\n\t\t<!-- IE8 support of media queries and CSS 2/3 selectors -->\n\t\t<!--[if lt IE 9]>\n\t\t\t<script src=\"/content/js/libs/respond.min.js\"></script>\n\t\t\t<script src=\"/content/js/libs/selectivizr.js\"></script>\n\t\t<![endif]-->\n\n\t</head>\n\t<body class=\"error-page\">\n\t\t\n\t\t<!-- Error page container -->\n\t\t<section class=\"container\">\n\t\t\n\t\t\t<h1>Error</h1>\n\t\t\t<p class=\"description\">An Error Was Encountered</p>\n\t\t\t<p>The URI you submitted has disallowed characters.</p>\t\t</section>\n\t\t<!-- /Error page container -->\n\t\t\n\t</body>\n</html>"},"http_version":null},"recorded_at":"Wed, 29 Jan 2014 21:36:16 GMT"}],"recorded_with":"VCR 2.8.0"}
|
@@ -0,0 +1 @@
|
|
1
|
+
{"http_interactions":[{"request":{"method":"get","uri":"http://dogechain.info/chain/Dogecoin/q/addressbalance/abcdef","body":{"encoding":"US-ASCII","string":""},"headers":{"User-Agent":["Faraday v0.9.0"],"Accept-Encoding":["gzip;q=1.0,deflate;q=0.6,identity;q=0.3"],"Accept":["*/*"]}},"response":{"status":{"code":200,"message":"OK"},"headers":{"Date":["Wed, 29 Jan 2014 21:33:03 GMT"],"Server":["Apache/2.2.22 (Debian)"],"X-Powered-By":["PHP/5.4.4-14+deb7u7"],"Vary":["Accept-Encoding"],"Content-Length":["42"],"Content-Type":["text/plain"]},"body":{"encoding":"UTF-8","string":"ERROR: address invalid"},"http_version":null},"recorded_at":"Wed, 29 Jan 2014 21:36:16 GMT"}],"recorded_with":"VCR 2.8.0"}
|
@@ -0,0 +1 @@
|
|
1
|
+
{"http_interactions":[{"request":{"method":"get","uri":"http://dogechain.info/chain/Dogecoin/q/addresstohash/DMP2WQ1pjCqSNCdvn4HMFztmLG7an9hNWT","body":{"encoding":"US-ASCII","string":""},"headers":{"User-Agent":["Faraday v0.9.0"],"Accept-Encoding":["gzip;q=1.0,deflate;q=0.6,identity;q=0.3"],"Accept":["*/*"]}},"response":{"status":{"code":200,"message":"OK"},"headers":{"Date":["Wed, 29 Jan 2014 21:33:03 GMT"],"Server":["Apache/2.2.22 (Debian)"],"X-Powered-By":["PHP/5.4.4-14+deb7u7"],"Vary":["Accept-Encoding"],"Content-Length":["56"],"Content-Type":["text/plain"]},"body":{"encoding":"UTF-8","string":"B224785E7F7D213AF75AB440DB1108C07ED38D80"},"http_version":null},"recorded_at":"Wed, 29 Jan 2014 21:36:16 GMT"}],"recorded_with":"VCR 2.8.0"}
|
@@ -0,0 +1 @@
|
|
1
|
+
{"http_interactions":[{"request":{"method":"get","uri":"http://dogechain.info/chain/Dogecoin/q/checkaddress/DMP2WQ1pjCqSNCdvn4HMFztmLG7an9hNWT","body":{"encoding":"US-ASCII","string":""},"headers":{"User-Agent":["Faraday v0.9.0"],"Accept-Encoding":["gzip;q=1.0,deflate;q=0.6,identity;q=0.3"],"Accept":["*/*"]}},"response":{"status":{"code":200,"message":"OK"},"headers":{"Date":["Wed, 29 Jan 2014 21:33:01 GMT"],"Server":["Apache/2.2.22 (Debian)"],"X-Powered-By":["PHP/5.4.4-14+deb7u7"],"Vary":["Accept-Encoding"],"Content-Length":["22"],"Content-Type":["text/plain"]},"body":{"encoding":"UTF-8","string":"1E"},"http_version":null},"recorded_at":"Wed, 29 Jan 2014 21:36:14 GMT"}],"recorded_with":"VCR 2.8.0"}
|
data/spec/blockchain_captured_responses/checkaddress/DMP2WQ1pjCqSNCdvn4HMFztmLG7an9hNWTBB.json
ADDED
@@ -0,0 +1 @@
|
|
1
|
+
{"http_interactions":[{"request":{"method":"get","uri":"http://dogechain.info/chain/Dogecoin/q/checkaddress/DMP2WQ1pjCqSNCdvn4HMFztmLG7an9hNWTBB","body":{"encoding":"US-ASCII","string":""},"headers":{"User-Agent":["Faraday v0.9.0"],"Accept-Encoding":["gzip;q=1.0,deflate;q=0.6,identity;q=0.3"],"Accept":["*/*"]}},"response":{"status":{"code":200,"message":"OK"},"headers":{"Date":["Wed, 29 Jan 2014 21:33:01 GMT"],"Server":["Apache/2.2.22 (Debian)"],"X-Powered-By":["PHP/5.4.4-14+deb7u7"],"Vary":["Accept-Encoding"],"Content-Length":["22"],"Content-Type":["text/plain"]},"body":{"encoding":"UTF-8","string":"CK"},"http_version":null},"recorded_at":"Wed, 29 Jan 2014 21:36:15 GMT"}],"recorded_with":"VCR 2.8.0"}
|
@@ -0,0 +1 @@
|
|
1
|
+
{"http_interactions":[{"request":{"method":"get","uri":"http://dogechain.info/chain/Dogecoin/q/checkaddress/lol","body":{"encoding":"US-ASCII","string":""},"headers":{"User-Agent":["Faraday v0.9.0"],"Accept-Encoding":["gzip;q=1.0,deflate;q=0.6,identity;q=0.3"],"Accept":["*/*"]}},"response":{"status":{"code":200,"message":"OK"},"headers":{"Date":["Wed, 29 Jan 2014 21:33:01 GMT"],"Server":["Apache/2.2.22 (Debian)"],"X-Powered-By":["PHP/5.4.4-14+deb7u7"],"Vary":["Accept-Encoding"],"Content-Length":["22"],"Content-Type":["text/plain"]},"body":{"encoding":"UTF-8","string":"SZ"},"http_version":null},"recorded_at":"Wed, 29 Jan 2014 21:36:14 GMT"}],"recorded_with":"VCR 2.8.0"}
|
data/spec/blockchain_captured_responses/decode_address/DMP2WQ1pjCqSNCdvn4HMFztmLG7an9hNWT.json
ADDED
@@ -0,0 +1 @@
|
|
1
|
+
{"http_interactions":[{"request":{"method":"get","uri":"http://dogechain.info/chain/Dogecoin/q/decode_address/DMP2WQ1pjCqSNCdvn4HMFztmLG7an9hNWT","body":{"encoding":"US-ASCII","string":""},"headers":{"User-Agent":["Faraday v0.9.0"],"Accept-Encoding":["gzip;q=1.0,deflate;q=0.6,identity;q=0.3"],"Accept":["*/*"]}},"response":{"status":{"code":200,"message":"OK"},"headers":{"Date":["Wed, 29 Jan 2014 21:33:04 GMT"],"Server":["Apache/2.2.22 (Debian)"],"X-Powered-By":["PHP/5.4.4-14+deb7u7"],"Vary":["Accept-Encoding"],"Content-Length":["61"],"Content-Type":["text/plain"]},"body":{"encoding":"UTF-8","string":"1e:B224785E7F7D213AF75AB440DB1108C07ED38D80"},"http_version":null},"recorded_at":"Wed, 29 Jan 2014 21:36:17 GMT"}],"recorded_with":"VCR 2.8.0"}
|
@@ -0,0 +1 @@
|
|
1
|
+
{"http_interactions":[{"request":{"method":"get","uri":"http://dogechain.info/chain/Dogecoin/q/getblockcount","body":{"encoding":"US-ASCII","string":""},"headers":{"User-Agent":["Faraday v0.9.0"],"Accept-Encoding":["gzip;q=1.0,deflate;q=0.6,identity;q=0.3"],"Accept":["*/*"]}},"response":{"status":{"code":200,"message":"OK"},"headers":{"Date":["Wed, 29 Jan 2014 19:59:24 GMT"],"Server":["Apache/2.2.22 (Debian)"],"X-Powered-By":["PHP/5.4.4-14+deb7u7"],"Vary":["Accept-Encoding"],"Content-Length":["25"],"Content-Type":["text/plain"]},"body":{"encoding":"UTF-8","string":"77974"},"http_version":null},"recorded_at":"Wed, 29 Jan 2014 20:02:37 GMT"}],"recorded_with":"VCR 2.8.0"}
|
@@ -0,0 +1 @@
|
|
1
|
+
{"http_interactions":[{"request":{"method":"get","uri":"http://dogechain.info/chain/Dogecoin/q/getdifficulty","body":{"encoding":"US-ASCII","string":""},"headers":{"User-Agent":["Faraday v0.9.0"],"Accept-Encoding":["gzip;q=1.0,deflate;q=0.6,identity;q=0.3"],"Accept":["*/*"]}},"response":{"status":{"code":200,"message":"OK"},"headers":{"Date":["Wed, 29 Jan 2014 21:33:01 GMT"],"Server":["Apache/2.2.22 (Debian)"],"X-Powered-By":["PHP/5.4.4-14+deb7u7"],"Vary":["Accept-Encoding"],"Content-Length":["28"],"Content-Type":["text/plain"]},"body":{"encoding":"UTF-8","string":"1009.723"},"http_version":null},"recorded_at":"Wed, 29 Jan 2014 21:36:14 GMT"}],"recorded_with":"VCR 2.8.0"}
|
@@ -0,0 +1 @@
|
|
1
|
+
{"http_interactions":[{"request":{"method":"get","uri":"http://dogechain.info/chain/Dogecoin/q/getreceivedbyaddress/","body":{"encoding":"US-ASCII","string":""},"headers":{"User-Agent":["Faraday v0.9.0"],"Accept-Encoding":["gzip;q=1.0,deflate;q=0.6,identity;q=0.3"],"Accept":["*/*"]}},"response":{"status":{"code":200,"message":"OK"},"headers":{"Date":["Wed, 29 Jan 2014 21:34:45 GMT"],"Server":["Apache/2.2.22 (Debian)"],"X-Powered-By":["PHP/5.4.4-14+deb7u7"],"Vary":["Accept-Encoding"],"Content-Length":["130"],"Content-Type":["text/html"]},"body":{"encoding":"UTF-8","string":"returns amount of money received by given address (not balance, sends are not subtracted)\n/chain/CHAIN/q/getreceivedbyaddress/ADDRESS"},"http_version":null},"recorded_at":"Wed, 29 Jan 2014 21:37:59 GMT"}],"recorded_with":"VCR 2.8.0"}
|
data/spec/blockchain_captured_responses/getreceivedbyaddress/DFrwT5zteXdvfgz3vjhWNcpXMXDiVPmkXN.json
ADDED
@@ -0,0 +1 @@
|
|
1
|
+
{"http_interactions":[{"request":{"method":"get","uri":"http://dogechain.info/chain/Dogecoin/q/getreceivedbyaddress/DFrwT5zteXdvfgz3vjhWNcpXMXDiVPmkXN","body":{"encoding":"US-ASCII","string":""},"headers":{"User-Agent":["Faraday v0.9.0"],"Accept-Encoding":["gzip;q=1.0,deflate;q=0.6,identity;q=0.3"],"Accept":["*/*"]}},"response":{"status":{"code":200,"message":"OK"},"headers":{"Date":["Wed, 29 Jan 2014 21:34:44 GMT"],"Server":["Apache/2.2.22 (Debian)"],"X-Powered-By":["PHP/5.4.4-14+deb7u7"],"Vary":["Accept-Encoding"],"Content-Length":["34"],"Content-Type":["text/html"]},"body":{"encoding":"UTF-8","string":"18712.33473684"},"http_version":null},"recorded_at":"Wed, 29 Jan 2014 21:37:57 GMT"}],"recorded_with":"VCR 2.8.0"}
|
data/spec/blockchain_captured_responses/getreceivedbyaddress/DMP2WQ1pjCqSNCdvn4HMFztmLG7an9hNWT.json
ADDED
@@ -0,0 +1 @@
|
|
1
|
+
{"http_interactions":[{"request":{"method":"get","uri":"http://dogechain.info/chain/Dogecoin/q/getreceivedbyaddress/DMP2WQ1pjCqSNCdvn4HMFztmLG7an9hNWT","body":{"encoding":"US-ASCII","string":""},"headers":{"User-Agent":["Faraday v0.9.0"],"Accept-Encoding":["gzip;q=1.0,deflate;q=0.6,identity;q=0.3"],"Accept":["*/*"]}},"response":{"status":{"code":200,"message":"OK"},"headers":{"Date":["Wed, 29 Jan 2014 21:34:44 GMT"],"Server":["Apache/2.2.22 (Debian)"],"X-Powered-By":["PHP/5.4.4-14+deb7u7"],"Vary":["Accept-Encoding"],"Content-Length":["21"],"Content-Type":["text/html"]},"body":{"encoding":"UTF-8","string":"0"},"http_version":null},"recorded_at":"Wed, 29 Jan 2014 21:37:58 GMT"}],"recorded_with":"VCR 2.8.0"}
|
@@ -0,0 +1 @@
|
|
1
|
+
{"http_interactions":[{"request":{"method":"get","uri":"http://dogechain.info/chain/Dogecoin/q/getreceivedbyaddress/DMP2WQ1pjCqSNCdvn4HMFztmLG7an9hNWT+---","body":{"encoding":"US-ASCII","string":""},"headers":{"User-Agent":["Faraday v0.9.0"],"Accept-Encoding":["gzip;q=1.0,deflate;q=0.6,identity;q=0.3"],"Accept":["*/*"]}},"response":{"status":{"code":400,"message":"Bad Request"},"headers":{"Date":["Wed, 29 Jan 2014 21:34:48 GMT"],"Server":["Apache/2.2.22 (Debian)"],"X-Powered-By":["PHP/5.4.4-14+deb7u7"],"Vary":["Accept-Encoding"],"Content-Length":["613"],"Connection":["close"],"Content-Type":["text/html"]},"body":{"encoding":"UTF-8","string":"<!DOCTYPE html>\n<html class=\"no-js\" lang=\"en\">\n\t<head>\n\t\t<meta charset=\"utf-8\">\n\t\t<meta http-equiv=\"X-UA-Compatible\" content=\"IE=edge\">\n\t\t<title>Dogechain - Page not found</title>\n\t\t<meta name=\"description\" content=\"\">\n\t\t<meta name=\"robots\" content=\"index, follow\">\n\t\t<meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\">\n\t\t\n\t\t<!-- Styles -->\n\t\t<link rel=\"stylesheet\" href=\"/content/css/sangoma-blue.css\">\n\n\t\t<!-- JS Libs -->\n\t\t<script src=\"//ajax.googleapis.com/ajax/libs/jquery/1.10.2/jquery.min.js\"></script>\n\t\t<script>window.jQuery || document.write('<script src=\"/content/js/libs/jquery.js\"><\\/script>')</script>\n\t\t<script src=\"/content/js/libs/modernizr.js\"></script>\n\n\t\t<!-- IE8 support of media queries and CSS 2/3 selectors -->\n\t\t<!--[if lt IE 9]>\n\t\t\t<script src=\"/content/js/libs/respond.min.js\"></script>\n\t\t\t<script src=\"/content/js/libs/selectivizr.js\"></script>\n\t\t<![endif]-->\n\n\t</head>\n\t<body class=\"error-page\">\n\t\t\n\t\t<!-- Error page container -->\n\t\t<section class=\"container\">\n\t\t\n\t\t\t<h1>Error</h1>\n\t\t\t<p class=\"description\">An Error Was Encountered</p>\n\t\t\t<p>The URI you submitted has disallowed characters.</p>\t\t</section>\n\t\t<!-- /Error page container -->\n\t\t\n\t</body>\n</html>"},"http_version":null},"recorded_at":"Wed, 29 Jan 2014 21:38:02 GMT"}],"recorded_with":"VCR 2.8.0"}
|
@@ -0,0 +1 @@
|
|
1
|
+
{"http_interactions":[{"request":{"method":"get","uri":"http://dogechain.info/chain/Dogecoin/q/getreceivedbyaddress/abcdef","body":{"encoding":"US-ASCII","string":""},"headers":{"User-Agent":["Faraday v0.9.0"],"Accept-Encoding":["gzip;q=1.0,deflate;q=0.6,identity;q=0.3"],"Accept":["*/*"]}},"response":{"status":{"code":200,"message":"OK"},"headers":{"Date":["Wed, 29 Jan 2014 21:34:47 GMT"],"Server":["Apache/2.2.22 (Debian)"],"X-Powered-By":["PHP/5.4.4-14+deb7u7"],"Vary":["Accept-Encoding"],"Content-Length":["42"],"Content-Type":["text/html"]},"body":{"encoding":"UTF-8","string":"ERROR: address invalid"},"http_version":null},"recorded_at":"Wed, 29 Jan 2014 21:38:01 GMT"}],"recorded_with":"VCR 2.8.0"}
|
@@ -0,0 +1 @@
|
|
1
|
+
{"http_interactions":[{"request":{"method":"get","uri":"http://dogechain.info/chain/Dogecoin/q/getsentbyaddress/","body":{"encoding":"US-ASCII","string":""},"headers":{"User-Agent":["Faraday v0.9.0"],"Accept-Encoding":["gzip;q=1.0,deflate;q=0.6,identity;q=0.3"],"Accept":["*/*"]}},"response":{"status":{"code":200,"message":"OK"},"headers":{"Date":["Wed, 29 Jan 2014 21:38:23 GMT"],"Server":["Apache/2.2.22 (Debian)"],"X-Powered-By":["PHP/5.4.4-14+deb7u7"],"Vary":["Accept-Encoding"],"Content-Length":["98"],"Content-Type":["text/html"]},"body":{"encoding":"UTF-8","string":"returns amount of money sent from given address\n/chain/CHAIN/q/getsentbyaddress/ADDRESS"},"http_version":null},"recorded_at":"Wed, 29 Jan 2014 21:41:36 GMT"}],"recorded_with":"VCR 2.8.0"}
|
data/spec/blockchain_captured_responses/getsentbyaddress/DABmu1j1hD2HeFEiMGUByuc1HwwZguQvWg.json
ADDED
@@ -0,0 +1 @@
|
|
1
|
+
{"http_interactions":[{"request":{"method":"get","uri":"http://dogechain.info/chain/Dogecoin/q/getsentbyaddress/DABmu1j1hD2HeFEiMGUByuc1HwwZguQvWg","body":{"encoding":"US-ASCII","string":""},"headers":{"User-Agent":["Faraday v0.9.0"],"Accept-Encoding":["gzip;q=1.0,deflate;q=0.6,identity;q=0.3"],"Accept":["*/*"]}},"response":{"status":{"code":200,"message":"OK"},"headers":{"Date":["Wed, 29 Jan 2014 21:38:22 GMT"],"Server":["Apache/2.2.22 (Debian)"],"X-Powered-By":["PHP/5.4.4-14+deb7u7"],"Vary":["Accept-Encoding"],"Content-Length":["34"],"Content-Type":["text/html"]},"body":{"encoding":"UTF-8","string":"86136.83368812"},"http_version":null},"recorded_at":"Wed, 29 Jan 2014 21:41:35 GMT"}],"recorded_with":"VCR 2.8.0"}
|
data/spec/blockchain_captured_responses/getsentbyaddress/DMP2WQ1pjCqSNCdvn4HMFztmLG7an9hNWT.json
ADDED
@@ -0,0 +1 @@
|
|
1
|
+
{"http_interactions":[{"request":{"method":"get","uri":"http://dogechain.info/chain/Dogecoin/q/getsentbyaddress/DMP2WQ1pjCqSNCdvn4HMFztmLG7an9hNWT","body":{"encoding":"US-ASCII","string":""},"headers":{"User-Agent":["Faraday v0.9.0"],"Accept-Encoding":["gzip;q=1.0,deflate;q=0.6,identity;q=0.3"],"Accept":["*/*"]}},"response":{"status":{"code":200,"message":"OK"},"headers":{"Date":["Wed, 29 Jan 2014 21:38:23 GMT"],"Server":["Apache/2.2.22 (Debian)"],"X-Powered-By":["PHP/5.4.4-14+deb7u7"],"Vary":["Accept-Encoding"],"Content-Length":["21"],"Content-Type":["text/html"]},"body":{"encoding":"UTF-8","string":"0"},"http_version":null},"recorded_at":"Wed, 29 Jan 2014 21:41:36 GMT"}],"recorded_with":"VCR 2.8.0"}
|
data/spec/blockchain_captured_responses/getsentbyaddress/DMP2WQ1pjCqSNCdvn4HMFztmLG7an9hNWT_---.json
ADDED
@@ -0,0 +1 @@
|
|
1
|
+
{"http_interactions":[{"request":{"method":"get","uri":"http://dogechain.info/chain/Dogecoin/q/getsentbyaddress/DMP2WQ1pjCqSNCdvn4HMFztmLG7an9hNWT+---","body":{"encoding":"US-ASCII","string":""},"headers":{"User-Agent":["Faraday v0.9.0"],"Accept-Encoding":["gzip;q=1.0,deflate;q=0.6,identity;q=0.3"],"Accept":["*/*"]}},"response":{"status":{"code":400,"message":"Bad Request"},"headers":{"Date":["Wed, 29 Jan 2014 21:38:24 GMT"],"Server":["Apache/2.2.22 (Debian)"],"X-Powered-By":["PHP/5.4.4-14+deb7u7"],"Vary":["Accept-Encoding"],"Content-Length":["613"],"Connection":["close"],"Content-Type":["text/html"]},"body":{"encoding":"UTF-8","string":"<!DOCTYPE html>\n<html class=\"no-js\" lang=\"en\">\n\t<head>\n\t\t<meta charset=\"utf-8\">\n\t\t<meta http-equiv=\"X-UA-Compatible\" content=\"IE=edge\">\n\t\t<title>Dogechain - Page not found</title>\n\t\t<meta name=\"description\" content=\"\">\n\t\t<meta name=\"robots\" content=\"index, follow\">\n\t\t<meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\">\n\t\t\n\t\t<!-- Styles -->\n\t\t<link rel=\"stylesheet\" href=\"/content/css/sangoma-blue.css\">\n\n\t\t<!-- JS Libs -->\n\t\t<script src=\"//ajax.googleapis.com/ajax/libs/jquery/1.10.2/jquery.min.js\"></script>\n\t\t<script>window.jQuery || document.write('<script src=\"/content/js/libs/jquery.js\"><\\/script>')</script>\n\t\t<script src=\"/content/js/libs/modernizr.js\"></script>\n\n\t\t<!-- IE8 support of media queries and CSS 2/3 selectors -->\n\t\t<!--[if lt IE 9]>\n\t\t\t<script src=\"/content/js/libs/respond.min.js\"></script>\n\t\t\t<script src=\"/content/js/libs/selectivizr.js\"></script>\n\t\t<![endif]-->\n\n\t</head>\n\t<body class=\"error-page\">\n\t\t\n\t\t<!-- Error page container -->\n\t\t<section class=\"container\">\n\t\t\n\t\t\t<h1>Error</h1>\n\t\t\t<p class=\"description\">An Error Was Encountered</p>\n\t\t\t<p>The URI you submitted has disallowed characters.</p>\t\t</section>\n\t\t<!-- /Error page container -->\n\t\t\n\t</body>\n</html>"},"http_version":null},"recorded_at":"Wed, 29 Jan 2014 21:41:37 GMT"}],"recorded_with":"VCR 2.8.0"}
|
@@ -0,0 +1 @@
|
|
1
|
+
{"http_interactions":[{"request":{"method":"get","uri":"http://dogechain.info/chain/Dogecoin/q/getsentbyaddress/abcdef","body":{"encoding":"US-ASCII","string":""},"headers":{"User-Agent":["Faraday v0.9.0"],"Accept-Encoding":["gzip;q=1.0,deflate;q=0.6,identity;q=0.3"],"Accept":["*/*"]}},"response":{"status":{"code":200,"message":"OK"},"headers":{"Date":["Wed, 29 Jan 2014 21:38:23 GMT"],"Server":["Apache/2.2.22 (Debian)"],"X-Powered-By":["PHP/5.4.4-14+deb7u7"],"Vary":["Accept-Encoding"],"Content-Length":["42"],"Content-Type":["text/html"]},"body":{"encoding":"UTF-8","string":"ERROR: address invalid"},"http_version":null},"recorded_at":"Wed, 29 Jan 2014 21:41:36 GMT"}],"recorded_with":"VCR 2.8.0"}
|
data/spec/blockchain_captured_responses/hashtoaddress/B224785E7F7D213AF75AB440DB1108C07ED38D80.json
ADDED
@@ -0,0 +1 @@
|
|
1
|
+
{"http_interactions":[{"request":{"method":"get","uri":"http://dogechain.info/chain/Dogecoin/q/hashtoaddress/B224785E7F7D213AF75AB440DB1108C07ED38D80","body":{"encoding":"US-ASCII","string":""},"headers":{"User-Agent":["Faraday v0.9.0"],"Accept-Encoding":["gzip;q=1.0,deflate;q=0.6,identity;q=0.3"],"Accept":["*/*"]}},"response":{"status":{"code":200,"message":"OK"},"headers":{"Date":["Wed, 29 Jan 2014 21:33:04 GMT"],"Server":["Apache/2.2.22 (Debian)"],"X-Powered-By":["PHP/5.4.4-14+deb7u7"],"Vary":["Accept-Encoding"],"Content-Length":["54"],"Content-Type":["text/html"]},"body":{"encoding":"UTF-8","string":"DMP2WQ1pjCqSNCdvn4HMFztmLG7an9hNWT"},"http_version":null},"recorded_at":"Wed, 29 Jan 2014 21:36:17 GMT"}],"recorded_with":"VCR 2.8.0"}
|
@@ -0,0 +1 @@
|
|
1
|
+
{"http_interactions":[{"request":{"method":"get","uri":"http://dogechain.info/chain/Dogecoin/q/totalbc","body":{"encoding":"US-ASCII","string":""},"headers":{"User-Agent":["Faraday v0.9.0"],"Accept-Encoding":["gzip;q=1.0,deflate;q=0.6,identity;q=0.3"],"Accept":["*/*"]}},"response":{"status":{"code":200,"message":"OK"},"headers":{"Date":["Wed, 29 Jan 2014 21:40:06 GMT"],"Server":["Apache/2.2.22 (Debian)"],"X-Powered-By":["PHP/5.4.4-14+deb7u7"],"Vary":["Accept-Encoding"],"Content-Length":["40"],"Content-Type":["text/plain"]},"body":{"encoding":"UTF-8","string":"38898180040.54100037"},"http_version":null},"recorded_at":"Wed, 29 Jan 2014 21:43:20 GMT"}],"recorded_with":"VCR 2.8.0"}
|
@@ -0,0 +1 @@
|
|
1
|
+
{"http_interactions":[{"request":{"method":"get","uri":"http://dogechain.info/chain/Dogecoin/q/transactions","body":{"encoding":"US-ASCII","string":""},"headers":{"User-Agent":["Faraday v0.9.0"],"Accept-Encoding":["gzip;q=1.0,deflate;q=0.6,identity;q=0.3"],"Accept":["*/*"]}},"response":{"status":{"code":200,"message":"OK"},"headers":{"Date":["Wed, 29 Jan 2014 21:42:05 GMT"],"Server":["Apache/2.2.22 (Debian)"],"X-Powered-By":["PHP/5.4.4-14+deb7u7"],"Content-Length":["3415"],"Content-Type":["application/json"]},"body":{"encoding":"UTF-8","string":"[[500,1386475886,1],[1000,1386481098,1],[1500,1386502787,5],[2000,1386525878,1],[2500,1386547883,20],[3000,1386578142,3],[3500,1386604879,17],[4000,1386632799,2],[4500,1386660584,3],[5000,1386689081,7],[5500,1386722845,7],[6000,1386747831,2],[6500,1386775649,2],[7000,1386806037,3],[7500,1386832869,20],[8000,1386862884,15],[8500,1386894675,14],[9000,1386921194,20],[9500,1386949902,35],[10000,1386976507,40],[10500,1387003002,4],[11000,1387032616,117],[11500,1387059151,140],[12000,1387087438,12],[12500,1387112572,96],[13000,1387136994,95],[13500,1387164357,203],[14000,1387191530,15],[14500,1387221926,31],[15000,1387248986,104],[15500,1387279568,37],[16000,1387309712,196],[16500,1387337230,22],[17000,1387363763,11],[17500,1387397828,113],[18000,1387421658,135],[18500,1387450373,10],[19000,1387479231,126],[19500,1387505638,26],[20000,1387534464,44],[20500,1387564774,49],[21000,1387593136,60],[21500,1387627043,73],[22000,1387655643,482],[22500,1387684851,136],[23000,1387718706,32],[23500,1387746707,31],[24000,1387777985,19],[24500,1387806287,99],[25000,1387836151,136],[25500,1387864159,105],[26000,1387893795,34],[26500,1387924225,100],[27000,1387952095,12],[27500,1387982776,79],[28000,1388013114,82],[28500,1388043228,124],[29000,1388075043,50],[29500,1388103339,89],[30000,1388133665,156],[30500,1388165522,66],[31000,1388196430,34],[31500,1388225598,60],[32000,1388255897,151],[32500,1388287354,35],[33000,1388319215,11],[33500,1388347598,90],[34000,1388378337,43],[34500,1388409878,270],[35000,1388439361,28],[35500,1388470462,50],[36000,1388499584,19],[36500,1388530886,10],[37000,1388559136,46],[37500,1388588846,98],[38000,1388620041,82],[38500,1388649714,11],[39000,1388682262,15],[39500,1388710769,69],[40000,1388740613,51],[40500,1388773764,122],[41000,1388804300,42],[41500,1388836376,30],[42000,1388865799,95],[42500,1388898408,52],[43000,1388925957,22],[43500,1388955796,10],[44000,1388986902,37],[44500,1389017907,5],[45000,1389050143,13],[45500,1389081564,17],[46000,1389109279,68],[46500,1389140386,158],[47000,1389170935,21],[47500,1389200872,25],[48000,1389234256,10],[48500,1389261155,36],[49000,1389291613,47],[49500,1389319697,67],[50000,1389349309,8],[50500,1389378897,88],[51000,1389407229,99],[51500,1389436319,10],[52000,1389467814,57],[52500,1389497390,3],[53000,1389529329,38],[53500,1389562731,6],[54000,1389590609,105],[54500,1389620821,3],[55000,1389652909,36],[55500,1389682876,13],[56000,1389712859,7],[56500,1389741710,16],[57000,1389769890,45],[57500,1389799481,14],[58000,1389828500,83],[58500,1389861084,3],[59000,1389889461,13],[59500,1389919687,27],[60000,1389950047,103],[60500,1389978241,123],[61000,1390008267,20],[61500,1390036861,198],[62000,1390065260,167],[62500,1390096819,21],[63000,1390124726,3],[63500,1390154395,7],[64000,1390184154,58],[64500,1390213880,3],[65000,1390242241,59],[65500,1390271894,95],[66000,1390301280,195],[66500,1390328153,3],[67000,1390357497,171],[67500,1390387792,307],[68000,1390416857,223],[68500,1390447997,105],[69000,1390478375,9],[69500,1390508824,43],[70000,1390537379,6],[70500,1390567507,383],[71000,1390596599,58],[71500,1390628597,24],[72000,1390657333,84],[72500,1390689486,195],[73000,1390715648,19],[73500,1390751128,3],[74000,1390781652,60],[74500,1390812032,392],[75000,1390841574,3],[75500,1390871692,7],[76000,1390902445,23],[76500,1390932955,97],[77000,1390964228,33],[77500,1390997581,3],[78000,1391027611,29]]"},"http_version":null},"recorded_at":"Wed, 29 Jan 2014 21:45:18 GMT"}],"recorded_with":"VCR 2.8.0"}
|
data/spec/client_spec.rb
ADDED
@@ -0,0 +1,74 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
describe DogeCoin do
|
4
|
+
ADDRESS_FOR_DONATIONS = 'DMP2WQ1pjCqSNCdvn4HMFztmLG7an9hNWT'
|
5
|
+
HASH_FROM_ADDRESS_FOR_DONATION = 'B224785E7F7D213AF75AB440DB1108C07ED38D80'
|
6
|
+
|
7
|
+
it '#get_block_count' do
|
8
|
+
blockcount = DogeCoin.get_block_count
|
9
|
+
|
10
|
+
# As recorded in the tape
|
11
|
+
blockcount.should == 77974
|
12
|
+
blockcount.should be_a(Integer)
|
13
|
+
end
|
14
|
+
it '#get_difficulty' do
|
15
|
+
difficulty = DogeCoin.get_difficulty
|
16
|
+
|
17
|
+
# As recorded in the tape
|
18
|
+
difficulty.should == 1009.723
|
19
|
+
difficulty.should be_a(Float)
|
20
|
+
end
|
21
|
+
it '#get_total_mined' do
|
22
|
+
difficulty = DogeCoin.get_total_mined
|
23
|
+
|
24
|
+
# As recorded in the tape
|
25
|
+
difficulty.should be_within(0.1).of(38898180040.5)
|
26
|
+
difficulty.should be_a(Float)
|
27
|
+
end
|
28
|
+
it '#get_total_mined' do
|
29
|
+
DogeCoin.transactions.should be_a(Array)
|
30
|
+
end
|
31
|
+
|
32
|
+
it '#address_balance' do
|
33
|
+
DogeCoin.address_balance('DFrwT5zteXdvfgz3vjhWNcpXMXDiVPmkXN').should be_within(0.1).of(18712.3)
|
34
|
+
DogeCoin.address_balance(ADDRESS_FOR_DONATIONS).should be_within(0.1).of(0)
|
35
|
+
|
36
|
+
['', 'abcdef', "#{ADDRESS_FOR_DONATIONS}+---"].each do |invalid_address|
|
37
|
+
expect { DogeCoin.address_balance(invalid_address) }.to raise_error(DogeCoin::InvalidAddress)
|
38
|
+
end
|
39
|
+
end
|
40
|
+
it '#total_received' do
|
41
|
+
DogeCoin.total_received('DFrwT5zteXdvfgz3vjhWNcpXMXDiVPmkXN').should be_within(0.1).of(18712.3)
|
42
|
+
DogeCoin.total_received(ADDRESS_FOR_DONATIONS).should be_within(0.1).of(0)
|
43
|
+
|
44
|
+
['', 'abcdef', "#{ADDRESS_FOR_DONATIONS}+---"].each do |invalid_address|
|
45
|
+
expect { DogeCoin.total_received(invalid_address) }.to raise_error(DogeCoin::InvalidAddress)
|
46
|
+
end
|
47
|
+
end
|
48
|
+
it '#total_sent' do
|
49
|
+
DogeCoin.total_sent('DABmu1j1hD2HeFEiMGUByuc1HwwZguQvWg').should be_within(0.1).of(86136.8)
|
50
|
+
DogeCoin.total_sent(ADDRESS_FOR_DONATIONS).should be_within(0.1).of(0)
|
51
|
+
|
52
|
+
['', 'abcdef', "#{ADDRESS_FOR_DONATIONS}+---"].each do |invalid_address|
|
53
|
+
expect { DogeCoin.total_sent(invalid_address) }.to raise_error(DogeCoin::InvalidAddress)
|
54
|
+
end
|
55
|
+
end
|
56
|
+
|
57
|
+
it '#address_to_hash & #hash_to_address' do
|
58
|
+
hash = DogeCoin.address_to_hash(ADDRESS_FOR_DONATIONS)
|
59
|
+
|
60
|
+
hash.should == HASH_FROM_ADDRESS_FOR_DONATION
|
61
|
+
|
62
|
+
DogeCoin.hash_to_address(hash).should == ADDRESS_FOR_DONATIONS
|
63
|
+
end
|
64
|
+
|
65
|
+
it '#valid_address?' do
|
66
|
+
DogeCoin.valid_address?(ADDRESS_FOR_DONATIONS).should be_true
|
67
|
+
DogeCoin.valid_address?('lol').should be_false
|
68
|
+
DogeCoin.valid_address?("#{ADDRESS_FOR_DONATIONS}BB").should be_false
|
69
|
+
end
|
70
|
+
|
71
|
+
it '#decode_address' do
|
72
|
+
DogeCoin.decode_address(ADDRESS_FOR_DONATIONS).should == "1e:#{HASH_FROM_ADDRESS_FOR_DONATION}"
|
73
|
+
end
|
74
|
+
end
|
data/spec/spec_helper.rb
ADDED
@@ -0,0 +1,18 @@
|
|
1
|
+
require 'doge_coin'
|
2
|
+
require 'pry'
|
3
|
+
|
4
|
+
RSpec.configure do |config|
|
5
|
+
config.treat_symbols_as_metadata_keys_with_true_values = true
|
6
|
+
config.run_all_when_everything_filtered = true
|
7
|
+
config.filter_run :focus
|
8
|
+
|
9
|
+
# Run specs in random order to surface order dependencies. If you find an
|
10
|
+
# order dependency and want to debug it, you can fix the order by providing
|
11
|
+
# the seed, which is printed after each run.
|
12
|
+
# --seed 1234
|
13
|
+
config.order = 'random'
|
14
|
+
|
15
|
+
DogeCoin.configure do |c|
|
16
|
+
c.vcr_mode = true
|
17
|
+
end
|
18
|
+
end
|
metadata
CHANGED
@@ -1,15 +1,57 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: doge_coin
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0
|
4
|
+
version: 0.9.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Dimitri Jorge
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2014-01-
|
11
|
+
date: 2014-01-29 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
|
+
- !ruby/object:Gem::Dependency
|
14
|
+
name: vcr
|
15
|
+
requirement: !ruby/object:Gem::Requirement
|
16
|
+
requirements:
|
17
|
+
- - "~>"
|
18
|
+
- !ruby/object:Gem::Version
|
19
|
+
version: '2.8'
|
20
|
+
type: :runtime
|
21
|
+
prerelease: false
|
22
|
+
version_requirements: !ruby/object:Gem::Requirement
|
23
|
+
requirements:
|
24
|
+
- - "~>"
|
25
|
+
- !ruby/object:Gem::Version
|
26
|
+
version: '2.8'
|
27
|
+
- !ruby/object:Gem::Dependency
|
28
|
+
name: multi_json
|
29
|
+
requirement: !ruby/object:Gem::Requirement
|
30
|
+
requirements:
|
31
|
+
- - "~>"
|
32
|
+
- !ruby/object:Gem::Version
|
33
|
+
version: '1.8'
|
34
|
+
type: :runtime
|
35
|
+
prerelease: false
|
36
|
+
version_requirements: !ruby/object:Gem::Requirement
|
37
|
+
requirements:
|
38
|
+
- - "~>"
|
39
|
+
- !ruby/object:Gem::Version
|
40
|
+
version: '1.8'
|
41
|
+
- !ruby/object:Gem::Dependency
|
42
|
+
name: faraday
|
43
|
+
requirement: !ruby/object:Gem::Requirement
|
44
|
+
requirements:
|
45
|
+
- - "~>"
|
46
|
+
- !ruby/object:Gem::Version
|
47
|
+
version: '0.9'
|
48
|
+
type: :runtime
|
49
|
+
prerelease: false
|
50
|
+
version_requirements: !ruby/object:Gem::Requirement
|
51
|
+
requirements:
|
52
|
+
- - "~>"
|
53
|
+
- !ruby/object:Gem::Version
|
54
|
+
version: '0.9'
|
13
55
|
- !ruby/object:Gem::Dependency
|
14
56
|
name: bundler
|
15
57
|
requirement: !ruby/object:Gem::Requirement
|
@@ -28,16 +70,58 @@ dependencies:
|
|
28
70
|
name: rake
|
29
71
|
requirement: !ruby/object:Gem::Requirement
|
30
72
|
requirements:
|
31
|
-
- - "
|
73
|
+
- - "~>"
|
32
74
|
- !ruby/object:Gem::Version
|
33
|
-
version: '
|
75
|
+
version: '10.1'
|
34
76
|
type: :development
|
35
77
|
prerelease: false
|
36
78
|
version_requirements: !ruby/object:Gem::Requirement
|
37
79
|
requirements:
|
38
|
-
- - "
|
80
|
+
- - "~>"
|
81
|
+
- !ruby/object:Gem::Version
|
82
|
+
version: '10.1'
|
83
|
+
- !ruby/object:Gem::Dependency
|
84
|
+
name: rspec
|
85
|
+
requirement: !ruby/object:Gem::Requirement
|
86
|
+
requirements:
|
87
|
+
- - "~>"
|
88
|
+
- !ruby/object:Gem::Version
|
89
|
+
version: '2.14'
|
90
|
+
type: :development
|
91
|
+
prerelease: false
|
92
|
+
version_requirements: !ruby/object:Gem::Requirement
|
93
|
+
requirements:
|
94
|
+
- - "~>"
|
95
|
+
- !ruby/object:Gem::Version
|
96
|
+
version: '2.14'
|
97
|
+
- !ruby/object:Gem::Dependency
|
98
|
+
name: webmock
|
99
|
+
requirement: !ruby/object:Gem::Requirement
|
100
|
+
requirements:
|
101
|
+
- - '='
|
102
|
+
- !ruby/object:Gem::Version
|
103
|
+
version: '1.15'
|
104
|
+
type: :development
|
105
|
+
prerelease: false
|
106
|
+
version_requirements: !ruby/object:Gem::Requirement
|
107
|
+
requirements:
|
108
|
+
- - '='
|
109
|
+
- !ruby/object:Gem::Version
|
110
|
+
version: '1.15'
|
111
|
+
- !ruby/object:Gem::Dependency
|
112
|
+
name: pry
|
113
|
+
requirement: !ruby/object:Gem::Requirement
|
114
|
+
requirements:
|
115
|
+
- - "~>"
|
116
|
+
- !ruby/object:Gem::Version
|
117
|
+
version: '0.9'
|
118
|
+
type: :development
|
119
|
+
prerelease: false
|
120
|
+
version_requirements: !ruby/object:Gem::Requirement
|
121
|
+
requirements:
|
122
|
+
- - "~>"
|
39
123
|
- !ruby/object:Gem::Version
|
40
|
-
version: '0'
|
124
|
+
version: '0.9'
|
41
125
|
description: This is a wrapper for the dogechain.info api calls. Make verifications
|
42
126
|
on transactions, check amounts received and sent, execute block on a given verification
|
43
127
|
count etc..
|
@@ -48,14 +132,46 @@ extensions: []
|
|
48
132
|
extra_rdoc_files: []
|
49
133
|
files:
|
50
134
|
- ".gitignore"
|
135
|
+
- ".rspec"
|
51
136
|
- Gemfile
|
137
|
+
- Gemfile.lock
|
52
138
|
- LICENSE
|
53
139
|
- LICENSE.txt
|
54
140
|
- README.md
|
55
141
|
- Rakefile
|
56
142
|
- doge_coin.gemspec
|
57
143
|
- lib/doge_coin.rb
|
144
|
+
- lib/doge_coin/client.rb
|
145
|
+
- lib/doge_coin/configuration.rb
|
146
|
+
- lib/doge_coin/errors.rb
|
58
147
|
- lib/doge_coin/version.rb
|
148
|
+
- spec/blockchain_captured_responses/addressbalance/.json
|
149
|
+
- spec/blockchain_captured_responses/addressbalance/DFrwT5zteXdvfgz3vjhWNcpXMXDiVPmkXN.json
|
150
|
+
- spec/blockchain_captured_responses/addressbalance/DMP2WQ1pjCqSNCdvn4HMFztmLG7an9hNWT.json
|
151
|
+
- spec/blockchain_captured_responses/addressbalance/DMP2WQ1pjCqSNCdvn4HMFztmLG7an9hNWT_---.json
|
152
|
+
- spec/blockchain_captured_responses/addressbalance/abcdef.json
|
153
|
+
- spec/blockchain_captured_responses/addresstohash/DMP2WQ1pjCqSNCdvn4HMFztmLG7an9hNWT.json
|
154
|
+
- spec/blockchain_captured_responses/checkaddress/DMP2WQ1pjCqSNCdvn4HMFztmLG7an9hNWT.json
|
155
|
+
- spec/blockchain_captured_responses/checkaddress/DMP2WQ1pjCqSNCdvn4HMFztmLG7an9hNWTBB.json
|
156
|
+
- spec/blockchain_captured_responses/checkaddress/lol.json
|
157
|
+
- spec/blockchain_captured_responses/decode_address/DMP2WQ1pjCqSNCdvn4HMFztmLG7an9hNWT.json
|
158
|
+
- spec/blockchain_captured_responses/getblockcount.json
|
159
|
+
- spec/blockchain_captured_responses/getdifficulty.json
|
160
|
+
- spec/blockchain_captured_responses/getreceivedbyaddress/.json
|
161
|
+
- spec/blockchain_captured_responses/getreceivedbyaddress/DFrwT5zteXdvfgz3vjhWNcpXMXDiVPmkXN.json
|
162
|
+
- spec/blockchain_captured_responses/getreceivedbyaddress/DMP2WQ1pjCqSNCdvn4HMFztmLG7an9hNWT.json
|
163
|
+
- spec/blockchain_captured_responses/getreceivedbyaddress/DMP2WQ1pjCqSNCdvn4HMFztmLG7an9hNWT_---.json
|
164
|
+
- spec/blockchain_captured_responses/getreceivedbyaddress/abcdef.json
|
165
|
+
- spec/blockchain_captured_responses/getsentbyaddress/.json
|
166
|
+
- spec/blockchain_captured_responses/getsentbyaddress/DABmu1j1hD2HeFEiMGUByuc1HwwZguQvWg.json
|
167
|
+
- spec/blockchain_captured_responses/getsentbyaddress/DMP2WQ1pjCqSNCdvn4HMFztmLG7an9hNWT.json
|
168
|
+
- spec/blockchain_captured_responses/getsentbyaddress/DMP2WQ1pjCqSNCdvn4HMFztmLG7an9hNWT_---.json
|
169
|
+
- spec/blockchain_captured_responses/getsentbyaddress/abcdef.json
|
170
|
+
- spec/blockchain_captured_responses/hashtoaddress/B224785E7F7D213AF75AB440DB1108C07ED38D80.json
|
171
|
+
- spec/blockchain_captured_responses/totalbc.json
|
172
|
+
- spec/blockchain_captured_responses/transactions.json
|
173
|
+
- spec/client_spec.rb
|
174
|
+
- spec/spec_helper.rb
|
59
175
|
homepage: https://github.com/jorge-d/dogecoin
|
60
176
|
licenses:
|
61
177
|
- MIT
|
@@ -80,4 +196,31 @@ rubygems_version: 2.2.0
|
|
80
196
|
signing_key:
|
81
197
|
specification_version: 4
|
82
198
|
summary: A simple wrapper for dogechain.info api calls
|
83
|
-
test_files:
|
199
|
+
test_files:
|
200
|
+
- spec/blockchain_captured_responses/addressbalance/.json
|
201
|
+
- spec/blockchain_captured_responses/addressbalance/DFrwT5zteXdvfgz3vjhWNcpXMXDiVPmkXN.json
|
202
|
+
- spec/blockchain_captured_responses/addressbalance/DMP2WQ1pjCqSNCdvn4HMFztmLG7an9hNWT.json
|
203
|
+
- spec/blockchain_captured_responses/addressbalance/DMP2WQ1pjCqSNCdvn4HMFztmLG7an9hNWT_---.json
|
204
|
+
- spec/blockchain_captured_responses/addressbalance/abcdef.json
|
205
|
+
- spec/blockchain_captured_responses/addresstohash/DMP2WQ1pjCqSNCdvn4HMFztmLG7an9hNWT.json
|
206
|
+
- spec/blockchain_captured_responses/checkaddress/DMP2WQ1pjCqSNCdvn4HMFztmLG7an9hNWT.json
|
207
|
+
- spec/blockchain_captured_responses/checkaddress/DMP2WQ1pjCqSNCdvn4HMFztmLG7an9hNWTBB.json
|
208
|
+
- spec/blockchain_captured_responses/checkaddress/lol.json
|
209
|
+
- spec/blockchain_captured_responses/decode_address/DMP2WQ1pjCqSNCdvn4HMFztmLG7an9hNWT.json
|
210
|
+
- spec/blockchain_captured_responses/getblockcount.json
|
211
|
+
- spec/blockchain_captured_responses/getdifficulty.json
|
212
|
+
- spec/blockchain_captured_responses/getreceivedbyaddress/.json
|
213
|
+
- spec/blockchain_captured_responses/getreceivedbyaddress/DFrwT5zteXdvfgz3vjhWNcpXMXDiVPmkXN.json
|
214
|
+
- spec/blockchain_captured_responses/getreceivedbyaddress/DMP2WQ1pjCqSNCdvn4HMFztmLG7an9hNWT.json
|
215
|
+
- spec/blockchain_captured_responses/getreceivedbyaddress/DMP2WQ1pjCqSNCdvn4HMFztmLG7an9hNWT_---.json
|
216
|
+
- spec/blockchain_captured_responses/getreceivedbyaddress/abcdef.json
|
217
|
+
- spec/blockchain_captured_responses/getsentbyaddress/.json
|
218
|
+
- spec/blockchain_captured_responses/getsentbyaddress/DABmu1j1hD2HeFEiMGUByuc1HwwZguQvWg.json
|
219
|
+
- spec/blockchain_captured_responses/getsentbyaddress/DMP2WQ1pjCqSNCdvn4HMFztmLG7an9hNWT.json
|
220
|
+
- spec/blockchain_captured_responses/getsentbyaddress/DMP2WQ1pjCqSNCdvn4HMFztmLG7an9hNWT_---.json
|
221
|
+
- spec/blockchain_captured_responses/getsentbyaddress/abcdef.json
|
222
|
+
- spec/blockchain_captured_responses/hashtoaddress/B224785E7F7D213AF75AB440DB1108C07ED38D80.json
|
223
|
+
- spec/blockchain_captured_responses/totalbc.json
|
224
|
+
- spec/blockchain_captured_responses/transactions.json
|
225
|
+
- spec/client_spec.rb
|
226
|
+
- spec/spec_helper.rb
|