bitcoinaverage 0.0.1 → 0.0.2
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.
- data/.gitignore +3 -0
- data/.travis.yml +1 -1
- data/Gemfile +4 -2
- data/README.md +8 -10
- data/Rakefile +7 -0
- data/bitcoinaverage.gemspec +4 -4
- data/lib/bitcoinaverage.rb +7 -6
- data/lib/bitcoinaverage/requester.rb +11 -25
- data/lib/bitcoinaverage/ticker.rb +9 -10
- data/lib/bitcoinaverage/version.rb +1 -1
- data/spec/bitcoinaverage_spec.rb +26 -26
- data/spec/spec_helper.rb +12 -6
- metadata +3 -31
- data/.bitcoinaverage.gemspec.swp +0 -0
data/.gitignore
CHANGED
data/.travis.yml
CHANGED
data/Gemfile
CHANGED
@@ -1,8 +1,10 @@
|
|
1
1
|
# A sample Gemfile
|
2
|
-
source
|
2
|
+
source 'https://rubygems.org'
|
3
3
|
|
4
|
+
gem 'rake'
|
4
5
|
gem 'httparty'
|
5
6
|
gem 'json'
|
7
|
+
|
6
8
|
group :development do
|
7
9
|
gem 'pry'
|
8
10
|
gem 'pry-nav'
|
@@ -10,7 +12,7 @@ end
|
|
10
12
|
|
11
13
|
group :test do
|
12
14
|
gem 'rspec', '>= 2.14'
|
13
|
-
gem 'coveralls', require
|
15
|
+
gem 'coveralls', :require => false
|
14
16
|
gem 'webmock'
|
15
17
|
gem 'simplecov'
|
16
18
|
end
|
data/README.md
CHANGED
@@ -1,15 +1,13 @@
|
|
1
1
|
# Ruby wrapper for the BitcoinAverage API
|
2
2
|
|
3
|
-
[![Gem Version]]
|
3
|
+
[](http://badge.fury.io/rb/bitcoinaverage)
|
4
4
|
[](https://coveralls.io/r/git-toni/bitcoinaverage)
|
5
|
-
[
|
6
|
-
[travis]: https://github.com/git-toni/bitcoinaverage
|
5
|
+
[](https://travis-ci.org/git-toni/bitcoinaverage)
|
7
6
|
|
8
7
|
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
the volume of BTC directly exchangeable through that specific currency.
|
8
|
+
Bitcoinaverage is an independent 'globally averaged bitcoin price' provider. They provide on one hand a **Global** price,
|
9
|
+
which is based on the volume and price of BTC in all currencies. And on the other hand they provide a **Market** price, which only takes into account
|
10
|
+
the volume of BTC directly exchangeable using the chosen specific currency.
|
13
11
|
For more information on the methods BitcoinAverage uses to calculate the price, please refer to their website, in
|
14
12
|
particular [this page](https://bitcoinaverage.com/explain.htm).
|
15
13
|
|
@@ -23,7 +21,7 @@ The development of this gem has been *deeply* inspired by Erik Michaels-Ober's g
|
|
23
21
|
## Documentation
|
24
22
|
TODO
|
25
23
|
|
26
|
-
## Usage
|
24
|
+
## Usage
|
27
25
|
```ruby
|
28
26
|
require 'rubygems'
|
29
27
|
require 'bitcoinaverage'
|
@@ -49,11 +47,11 @@ BitcoinAverage.global.volume_percent
|
|
49
47
|
```
|
50
48
|
|
51
49
|
## Tested Ruby Versions
|
52
|
-
This library aims to support and is [tested against]
|
50
|
+
This library aims to support and is [tested against](https://travis-ci.org/git-toni/bitcoinaverage) the following Ruby
|
53
51
|
implementations:
|
54
52
|
|
55
53
|
* ruby-1.9.3-p374
|
56
|
-
* ruby-2.0.0-
|
54
|
+
* ruby-2.0.0-p353
|
57
55
|
* ruby-2.1.0
|
58
56
|
|
59
57
|
## Contributing
|
data/Rakefile
ADDED
data/bitcoinaverage.gemspec
CHANGED
@@ -1,16 +1,16 @@
|
|
1
|
-
|
1
|
+
$LOAD_PATH.push File.expand_path('../lib', __FILE__)
|
2
2
|
require 'bitcoinaverage/version'
|
3
3
|
|
4
4
|
Gem::Specification.new do |s|
|
5
5
|
s.name = 'bitcoinaverage'
|
6
6
|
s.version = BitcoinAverage::VERSION
|
7
|
-
s.summary =
|
7
|
+
s.summary = 'Ruby Wrapper for the Bitcoinaverage API'
|
8
8
|
s.description = "Ruby wrapper for the Bitcoinaverage API. Bitcoinaverage is an independent 'globally averaged bitcoin price' provider"
|
9
|
-
s.author = [
|
9
|
+
s.author = ['Toni Urcola']
|
10
10
|
s.email = 'unmail.toni@gmail.com'
|
11
11
|
s.files = `git ls-files`.split("\n")
|
12
12
|
s.test_files = `git ls-files -- {test,spec}/*`.split("\n")
|
13
|
-
s.require_paths = [
|
13
|
+
s.require_paths = ['lib']
|
14
14
|
s.required_ruby_version = '>= 1.9.3'
|
15
15
|
s.add_dependency 'httparty'
|
16
16
|
s.add_dependency 'json'
|
data/lib/bitcoinaverage.rb
CHANGED
@@ -2,10 +2,11 @@ require 'bitcoinaverage/market_ticker'
|
|
2
2
|
require 'bitcoinaverage/global_ticker'
|
3
3
|
|
4
4
|
module BitcoinAverage
|
5
|
-
|
6
|
-
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
|
5
|
+
def self.global(currency = 'USD')
|
6
|
+
GlobalTicker.instance.request_info currency
|
7
|
+
end
|
8
|
+
|
9
|
+
def self.market(currency = 'USD')
|
10
|
+
MarketTicker.instance.request_info currency
|
11
|
+
end
|
11
12
|
end
|
@@ -2,36 +2,22 @@ require 'httparty'
|
|
2
2
|
|
3
3
|
module BitcoinAverage
|
4
4
|
module Requester
|
5
|
-
def
|
6
|
-
|
7
|
-
base_url='https://api.bitcoinaverage.com/ticker/'
|
8
|
-
avg_url= average == 'global'? average+'/' : ''
|
9
|
-
ccy_url=currency
|
10
|
-
final_url= base_url+avg_url+ccy_url
|
5
|
+
def get(average, currency = 'USD')
|
6
|
+
fail "#{currency} is not a known currency" unless known_currency?(currency)
|
7
|
+
base_url = 'https://api.bitcoinaverage.com/ticker/'
|
8
|
+
avg_url = average == 'global' ? average + '/' : ''
|
9
|
+
ccy_url = currency
|
10
|
+
final_url = base_url + avg_url + ccy_url
|
11
11
|
|
12
|
-
|
12
|
+
HTTParty.get(final_url)
|
13
13
|
end
|
14
14
|
|
15
15
|
def known_currency?(currency)
|
16
|
-
|
17
|
-
.read
|
18
|
-
.parse_csv
|
19
|
-
true unless !av_currencies.include? currency
|
16
|
+
available_currencies.include?(currency)
|
20
17
|
end
|
21
18
|
|
22
|
-
|
23
|
-
|
24
|
-
|
25
|
-
#was written to a file.
|
26
|
-
#Note 2: "require 'csv' " is necessary for this method
|
27
|
-
#
|
28
|
-
#
|
29
|
-
#def available_currencies
|
30
|
-
# all_ccy=HTTParty.get 'https://api.bitcoinaverage.com/ticker/global/all'
|
31
|
-
# all_ccy.map!{|k,v| k}
|
32
|
-
# file= File.open 'currencies_file.csv','w'
|
33
|
-
# file.write all_ccy[0..-2].to_csv
|
34
|
-
# file.close
|
35
|
-
#end
|
19
|
+
def available_currencies
|
20
|
+
@available_currencies ||= File.open('lib/bitcoinaverage/available_currencies.csv', 'r').read.parse_csv
|
21
|
+
end
|
36
22
|
end
|
37
23
|
end
|
@@ -6,20 +6,19 @@ module BitcoinAverage
|
|
6
6
|
include BitcoinAverage::Requester
|
7
7
|
attr_accessor :avg_24h, :ask, :bid, :last, :timestamp
|
8
8
|
|
9
|
-
def request_info
|
10
|
-
response=
|
9
|
+
def request_info(currency = 'USD')
|
10
|
+
response = get(avg_type, currency)
|
11
11
|
if response.success?
|
12
|
-
#Small patch since an attribute can't be named "24h_avg"
|
13
|
-
response=JSON.load(response.to_s) unless response.is_a?(Hash)
|
14
|
-
self.avg_24h = response[
|
15
|
-
response.delete(
|
16
|
-
|
17
|
-
|
18
|
-
send("#{key}=",value)
|
12
|
+
# Small patch since an attribute can't be named "24h_avg"
|
13
|
+
response = JSON.load(response.to_s) unless response.is_a?(Hash)
|
14
|
+
self.avg_24h = response['24h_avg']
|
15
|
+
response.delete('24h_avg')
|
16
|
+
response.each do |key, value|
|
17
|
+
send("#{key}=", value)
|
19
18
|
end
|
20
19
|
self
|
21
20
|
else
|
22
|
-
|
21
|
+
fail 'Error receiving response' # TODO: extended
|
23
22
|
end
|
24
23
|
end
|
25
24
|
end
|
data/spec/bitcoinaverage_spec.rb
CHANGED
@@ -5,48 +5,48 @@ SimpleCov.start
|
|
5
5
|
describe BitcoinAverage do
|
6
6
|
describe '.global ' do
|
7
7
|
before do
|
8
|
-
stub_request(:get,
|
9
|
-
to_return(status
|
10
|
-
@response=BitcoinAverage.global
|
8
|
+
stub_request(:get, 'https://api.bitcoinaverage.com/ticker/global/USD').
|
9
|
+
to_return(:status => 200, :body => fixture('global_USD.json'), :headers => {})
|
10
|
+
@response = BitcoinAverage.global
|
11
11
|
end
|
12
12
|
it 'returns a GlobalTicker object properly filled' do
|
13
|
-
#binding.pry
|
14
|
-
#expect(BitcoinAverage.global).to be_a BitcoinAverage::GlobalTicker
|
13
|
+
# binding.pry
|
14
|
+
# expect(BitcoinAverage.global).to be_a BitcoinAverage::GlobalTicker
|
15
15
|
expect(@response).to be_a BitcoinAverage::GlobalTicker
|
16
|
-
@response.avg_24h.
|
17
|
-
@response.ask.
|
18
|
-
@response.bid.
|
19
|
-
@response.last.
|
20
|
-
@response.timestamp.
|
21
|
-
@response.volume_btc.
|
22
|
-
@response.volume_percent.
|
16
|
+
expect(@response.avg_24h).to eq(568.44)
|
17
|
+
expect(@response.ask).to eq(566.15)
|
18
|
+
expect(@response.bid).to eq(563.83)
|
19
|
+
expect(@response.last).to eq(564.61)
|
20
|
+
expect(@response.timestamp).to eq('Fri, 21 Feb 2014 16:22:17 -0000')
|
21
|
+
expect(@response.volume_btc).to eq(100496.08)
|
22
|
+
expect(@response.volume_percent).to eq(79.49)
|
23
23
|
end
|
24
24
|
end
|
25
25
|
describe '.market ' do
|
26
26
|
before do
|
27
|
-
stub_request(:get,
|
28
|
-
to_return(status
|
29
|
-
@response=BitcoinAverage.market
|
27
|
+
stub_request(:get, 'https://api.bitcoinaverage.com/ticker/USD').
|
28
|
+
to_return(:status => 200, :body => fixture('market_USD.json'), :headers => {})
|
29
|
+
@response = BitcoinAverage.market
|
30
30
|
end
|
31
31
|
it 'returns a GlobalTicker object properly filled' do
|
32
|
-
#binding.pry
|
33
|
-
#expect(BitcoinAverage.global).to be_a BitcoinAverage::GlobalTicker
|
32
|
+
# binding.pry
|
33
|
+
# expect(BitcoinAverage.global).to be_a BitcoinAverage::GlobalTicker
|
34
34
|
expect(@response).to be_a BitcoinAverage::MarketTicker
|
35
|
-
@response.avg_24h.
|
36
|
-
@response.ask.
|
37
|
-
@response.bid.
|
38
|
-
@response.last.
|
39
|
-
@response.timestamp.
|
40
|
-
@response.total_vol.
|
35
|
+
expect(@response.avg_24h).to eq(565.89)
|
36
|
+
expect(@response.ask).to eq(562.54)
|
37
|
+
expect(@response.bid).to eq(559.7)
|
38
|
+
expect(@response.last).to eq(560.54)
|
39
|
+
expect(@response.timestamp).to eq('Fri, 21 Feb 2014 16:24:27 -0000')
|
40
|
+
expect(@response.total_vol).to eq(100667.13)
|
41
41
|
end
|
42
42
|
end
|
43
43
|
describe 'unknown currency' do
|
44
44
|
before do
|
45
|
-
stub_request(:get,
|
46
|
-
to_return(status
|
45
|
+
stub_request(:get, 'https://api.bitcoinaverage.com/ticker/EEE').
|
46
|
+
to_return(:status => 404, :body => '', :headers => {})
|
47
47
|
end
|
48
48
|
it 'raises an error' do
|
49
|
-
expect{BitcoinAverage.market('EEE')}.to raise_error(
|
49
|
+
expect { BitcoinAverage.market('EEE') }.to raise_error('EEE is not a known currency')
|
50
50
|
end
|
51
51
|
end
|
52
52
|
end
|
data/spec/spec_helper.rb
CHANGED
@@ -1,23 +1,29 @@
|
|
1
|
-
#require 'pry'
|
1
|
+
# require 'pry'
|
2
2
|
require 'simplecov'
|
3
3
|
require 'coveralls'
|
4
4
|
|
5
|
-
SimpleCov.start
|
5
|
+
SimpleCov.start
|
6
6
|
SimpleCov.formatter = SimpleCov::Formatter::MultiFormatter[
|
7
7
|
SimpleCov::Formatter::HTMLFormatter,
|
8
8
|
Coveralls::SimpleCov::Formatter
|
9
9
|
]
|
10
|
-
#Coveralls.wear!
|
10
|
+
# Coveralls.wear!
|
11
11
|
|
12
|
-
|
13
|
-
require 'pry'
|
12
|
+
require 'rubygems'
|
14
13
|
require 'rspec'
|
15
14
|
require 'webmock/rspec'
|
16
|
-
WebMock.disable_net_connect!(allow
|
15
|
+
WebMock.disable_net_connect!(:allow => 'coverwalls.io', :allow_localhost => true)
|
16
|
+
|
17
|
+
RSpec.configure do |config|
|
18
|
+
config.expect_with :rspec do |c|
|
19
|
+
c.syntax = :expect
|
20
|
+
end
|
21
|
+
end
|
17
22
|
|
18
23
|
def fixture_path
|
19
24
|
File.expand_path('../fixtures', __FILE__)
|
20
25
|
end
|
26
|
+
|
21
27
|
def fixture(file)
|
22
28
|
File.new(fixture_path + '/' + file)
|
23
29
|
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: bitcoinaverage
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.2
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -9,7 +9,7 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2014-
|
12
|
+
date: 2014-03-10 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: httparty
|
@@ -82,40 +82,13 @@ executables: []
|
|
82
82
|
extensions: []
|
83
83
|
extra_rdoc_files: []
|
84
84
|
files:
|
85
|
-
- .bitcoinaverage.gemspec.swp
|
86
85
|
- .gitignore
|
87
86
|
- .travis.yml
|
88
87
|
- Gemfile
|
89
88
|
- LICENSE
|
90
89
|
- README.md
|
90
|
+
- Rakefile
|
91
91
|
- bitcoinaverage.gemspec
|
92
|
-
- coverage/.last_run.json
|
93
|
-
- coverage/.resultset.json
|
94
|
-
- coverage/assets/0.8.0/application.css
|
95
|
-
- coverage/assets/0.8.0/application.js
|
96
|
-
- coverage/assets/0.8.0/colorbox/border.png
|
97
|
-
- coverage/assets/0.8.0/colorbox/controls.png
|
98
|
-
- coverage/assets/0.8.0/colorbox/loading.gif
|
99
|
-
- coverage/assets/0.8.0/colorbox/loading_background.png
|
100
|
-
- coverage/assets/0.8.0/favicon_green.png
|
101
|
-
- coverage/assets/0.8.0/favicon_red.png
|
102
|
-
- coverage/assets/0.8.0/favicon_yellow.png
|
103
|
-
- coverage/assets/0.8.0/loading.gif
|
104
|
-
- coverage/assets/0.8.0/magnify.png
|
105
|
-
- coverage/assets/0.8.0/smoothness/images/ui-bg_flat_0_aaaaaa_40x100.png
|
106
|
-
- coverage/assets/0.8.0/smoothness/images/ui-bg_flat_75_ffffff_40x100.png
|
107
|
-
- coverage/assets/0.8.0/smoothness/images/ui-bg_glass_55_fbf9ee_1x400.png
|
108
|
-
- coverage/assets/0.8.0/smoothness/images/ui-bg_glass_65_ffffff_1x400.png
|
109
|
-
- coverage/assets/0.8.0/smoothness/images/ui-bg_glass_75_dadada_1x400.png
|
110
|
-
- coverage/assets/0.8.0/smoothness/images/ui-bg_glass_75_e6e6e6_1x400.png
|
111
|
-
- coverage/assets/0.8.0/smoothness/images/ui-bg_glass_95_fef1ec_1x400.png
|
112
|
-
- coverage/assets/0.8.0/smoothness/images/ui-bg_highlight-soft_75_cccccc_1x100.png
|
113
|
-
- coverage/assets/0.8.0/smoothness/images/ui-icons_222222_256x240.png
|
114
|
-
- coverage/assets/0.8.0/smoothness/images/ui-icons_2e83ff_256x240.png
|
115
|
-
- coverage/assets/0.8.0/smoothness/images/ui-icons_454545_256x240.png
|
116
|
-
- coverage/assets/0.8.0/smoothness/images/ui-icons_888888_256x240.png
|
117
|
-
- coverage/assets/0.8.0/smoothness/images/ui-icons_cd0a0a_256x240.png
|
118
|
-
- coverage/index.html
|
119
92
|
- lib/bitcoinaverage.rb
|
120
93
|
- lib/bitcoinaverage/available_currencies.csv
|
121
94
|
- lib/bitcoinaverage/global_ticker.rb
|
@@ -123,7 +96,6 @@ files:
|
|
123
96
|
- lib/bitcoinaverage/requester.rb
|
124
97
|
- lib/bitcoinaverage/ticker.rb
|
125
98
|
- lib/bitcoinaverage/version.rb
|
126
|
-
- mysession
|
127
99
|
- spec/bitcoinaverage_spec.rb
|
128
100
|
- spec/fixtures/global_EUR.json
|
129
101
|
- spec/fixtures/global_USD.json
|
data/.bitcoinaverage.gemspec.swp
DELETED
Binary file
|