cryptowatch-ruby 0.0.3
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 +7 -0
- data/Gemfile +8 -0
- data/Gemfile.lock +73 -0
- data/README.md +45 -0
- data/cryptowatch.gemspec +31 -0
- data/lib/cryptowatch.rb +26 -0
- data/lib/cryptowatch/adapter/rest_client_adapter.rb +47 -0
- data/lib/cryptowatch/api/api.rb +19 -0
- data/lib/cryptowatch/business/assets.rb +22 -0
- data/lib/cryptowatch/business/exchanges.rb +22 -0
- data/lib/cryptowatch/business/markets.rb +57 -0
- data/lib/cryptowatch/business/pairs.rb +22 -0
- data/lib/cryptowatch/messages.rb +19 -0
- data/lib/cryptowatch/utils.rb +13 -0
- data/lib/cryptowatch/version.rb +13 -0
- data/lib/cryptowatch/wrapper.rb +31 -0
- data/spec/cryptowatch/client_spec.rb +12 -0
- data/spec/cryptowatch_spec.rb +14 -0
- data/spec/spec_helper.rb +36 -0
- data/unit_tests/.DS_Store +0 -0
- metadata +186 -0
checksums.yaml
ADDED
@@ -0,0 +1,7 @@
|
|
1
|
+
---
|
2
|
+
SHA1:
|
3
|
+
metadata.gz: bec614044574bff8ea8dc1ef818229835de2ad12
|
4
|
+
data.tar.gz: be69208fe6490326dbaef3a24976ef371830c494
|
5
|
+
SHA512:
|
6
|
+
metadata.gz: 8c87090794ece37cbc5427a088a63b1f7c2cdfda3f648ac5d3697bca67679975d3608360c6ad7d9429dd1bd7075d625fd349fad2068a78115307588aa4ec63c1
|
7
|
+
data.tar.gz: 39f14c696f1425878f88d0432c07fb1a14a30a2feac4e9faa3d3c2e20d1fd0dfc95788cf96620d5deff1fd64d985049c6e4585bcd32ce27435416698ec5b83f3
|
data/Gemfile
ADDED
data/Gemfile.lock
ADDED
@@ -0,0 +1,73 @@
|
|
1
|
+
PATH
|
2
|
+
remote: .
|
3
|
+
specs:
|
4
|
+
cryptowatch-ruby (0.0.3)
|
5
|
+
|
6
|
+
GEM
|
7
|
+
remote: https://rubygems.org/
|
8
|
+
specs:
|
9
|
+
addressable (2.5.2)
|
10
|
+
public_suffix (>= 2.0.2, < 4.0)
|
11
|
+
byebug (10.0.1)
|
12
|
+
concurrent-ruby (1.0.5)
|
13
|
+
crack (0.4.3)
|
14
|
+
safe_yaml (~> 1.0.0)
|
15
|
+
diff-lcs (1.3)
|
16
|
+
domain_name (0.5.20170404)
|
17
|
+
unf (>= 0.0.5, < 1.0.0)
|
18
|
+
faker (1.8.7)
|
19
|
+
i18n (>= 0.7)
|
20
|
+
hashdiff (0.3.7)
|
21
|
+
http-cookie (1.0.3)
|
22
|
+
domain_name (~> 0.5)
|
23
|
+
i18n (1.0.0)
|
24
|
+
concurrent-ruby (~> 1.0)
|
25
|
+
mime-types (3.1)
|
26
|
+
mime-types-data (~> 3.2015)
|
27
|
+
mime-types-data (3.2016.0521)
|
28
|
+
netrc (0.11.0)
|
29
|
+
public_suffix (3.0.2)
|
30
|
+
rake (10.5.0)
|
31
|
+
rest-client (2.0.2)
|
32
|
+
http-cookie (>= 1.0.2, < 2.0)
|
33
|
+
mime-types (>= 1.16, < 4.0)
|
34
|
+
netrc (~> 0.8)
|
35
|
+
rspec (3.7.0)
|
36
|
+
rspec-core (~> 3.7.0)
|
37
|
+
rspec-expectations (~> 3.7.0)
|
38
|
+
rspec-mocks (~> 3.7.0)
|
39
|
+
rspec-core (3.7.1)
|
40
|
+
rspec-support (~> 3.7.0)
|
41
|
+
rspec-expectations (3.7.0)
|
42
|
+
diff-lcs (>= 1.2.0, < 2.0)
|
43
|
+
rspec-support (~> 3.7.0)
|
44
|
+
rspec-mocks (3.7.0)
|
45
|
+
diff-lcs (>= 1.2.0, < 2.0)
|
46
|
+
rspec-support (~> 3.7.0)
|
47
|
+
rspec-support (3.7.1)
|
48
|
+
safe_yaml (1.0.4)
|
49
|
+
unf (0.1.4)
|
50
|
+
unf_ext
|
51
|
+
unf_ext (0.0.7.5)
|
52
|
+
vcr (3.0.3)
|
53
|
+
webmock (3.3.0)
|
54
|
+
addressable (>= 2.3.6)
|
55
|
+
crack (>= 0.3.2)
|
56
|
+
hashdiff
|
57
|
+
|
58
|
+
PLATFORMS
|
59
|
+
ruby
|
60
|
+
|
61
|
+
DEPENDENCIES
|
62
|
+
bundler (~> 1)
|
63
|
+
byebug
|
64
|
+
cryptowatch-ruby!
|
65
|
+
faker (~> 1.8.7)
|
66
|
+
rake (~> 10.0)
|
67
|
+
rest-client (~> 2.0)
|
68
|
+
rspec (~> 3.7.0)
|
69
|
+
vcr (~> 3.0)
|
70
|
+
webmock
|
71
|
+
|
72
|
+
BUNDLED WITH
|
73
|
+
1.16.1
|
data/README.md
ADDED
@@ -0,0 +1,45 @@
|
|
1
|
+
# Cryptowatch Wrapper in Ruby
|
2
|
+
|
3
|
+
A simple API wrapper for Cryptowatch written in Ruby.
|
4
|
+
|
5
|
+
Cryptowat.ch API documentation: https://cryptowat.ch/docs/
|
6
|
+
|
7
|
+
## Get started
|
8
|
+
|
9
|
+
### Installation
|
10
|
+
|
11
|
+
```
|
12
|
+
gem install 'cryptowatch'
|
13
|
+
```
|
14
|
+
|
15
|
+
Require the gem into your project with:
|
16
|
+
```
|
17
|
+
require 'cryptowatch'
|
18
|
+
```
|
19
|
+
|
20
|
+
## An example
|
21
|
+
|
22
|
+
```ruby
|
23
|
+
require 'cryptowatch'
|
24
|
+
|
25
|
+
class MyApplication
|
26
|
+
wrapper = Cryptowatch::Wrapper.new
|
27
|
+
|
28
|
+
wrapper.get(Assets::index)
|
29
|
+
wrapper.get(Assets::asset(:btc))
|
30
|
+
|
31
|
+
wrapper.get(Exchanges::index)
|
32
|
+
wrapper.get(Exchanges::exchange(:kraken))
|
33
|
+
|
34
|
+
wrapper.get(Markets::index)
|
35
|
+
wrapper.get(Markets::price(:kraken, :btcusd))
|
36
|
+
wrapper.get(Markets::summary(:gdax, :btceur))
|
37
|
+
wrapper.get(Markets::trades(:poloniex, :ethbtc))
|
38
|
+
wrapper.get(Markets::orderbook(:kraken, :xrpbtc))
|
39
|
+
wrapper.get(Markets::ohlc(:kraken, :xrpbtc))
|
40
|
+
|
41
|
+
wrapper.get(Pairs::index)
|
42
|
+
wrapper.get(Pairs::pair(:btcusd))
|
43
|
+
end
|
44
|
+
```
|
45
|
+
|
data/cryptowatch.gemspec
ADDED
@@ -0,0 +1,31 @@
|
|
1
|
+
# -*- encoding: utf-8 -*-
|
2
|
+
lib = File.expand_path('../lib', __FILE__)
|
3
|
+
$LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
|
4
|
+
require 'cryptowatch/version'
|
5
|
+
|
6
|
+
Gem::Specification.new do |gem|
|
7
|
+
gem.name = 'cryptowatch-ruby'
|
8
|
+
gem.version = Cryptowatch::Api::VERSION_FORMAT
|
9
|
+
gem.date = '2018-03-27'
|
10
|
+
gem.authors = ["Abdelkader K"]
|
11
|
+
gem.summary = 'Cryptowat.ch API wrapper written in Ruby.'
|
12
|
+
gem.description = 'A simple API wrapper in Ruby to facilite the use of Cryptowat.ch'
|
13
|
+
gem.email = 'akettal@users.noreply.github.com'
|
14
|
+
gem.homepage = 'https://github.com/akettal/cryptowatch-ruby'
|
15
|
+
gem.require_paths = ['lib/cryptowatch']
|
16
|
+
gem.licenses = ['MIT']
|
17
|
+
|
18
|
+
gem.files = `git ls-files`.split($/)
|
19
|
+
gem.executables = gem.files.grep(%r{^bin/}).map{ |f| File.basename(f) }
|
20
|
+
gem.test_files = gem.files.grep(%r{^(test|gem|features)/})
|
21
|
+
gem.require_paths = ["lib"]
|
22
|
+
|
23
|
+
gem.add_development_dependency "bundler", "~> 1"
|
24
|
+
gem.add_development_dependency "rest-client", '~> 2.0'
|
25
|
+
gem.add_development_dependency "rspec", '~> 3.7', '>= 3.7.0'
|
26
|
+
gem.add_development_dependency "faker", '~> 1.8', '>= 1.8.7'
|
27
|
+
gem.add_development_dependency "vcr", "~> 3.0"
|
28
|
+
gem.add_development_dependency "rake", "~> 10.0"
|
29
|
+
gem.add_development_dependency "webmock", '~> 0'
|
30
|
+
gem.add_development_dependency "byebug", '~> 0'
|
31
|
+
end
|
data/lib/cryptowatch.rb
ADDED
@@ -0,0 +1,26 @@
|
|
1
|
+
# @Author: Esteban GONZALEZ <Esteban>
|
2
|
+
# @Date: Tuesday, October 17th 2017, 8:39:43 pm
|
3
|
+
# @Email: gonzal_e@etna-alternance.net
|
4
|
+
# @Project: RubyCryptowatch
|
5
|
+
# @Last modified by: esteban
|
6
|
+
# @Last modified time: Sunday, November 5th 2017, 6:49:39 pm
|
7
|
+
|
8
|
+
require "rubygems"
|
9
|
+
|
10
|
+
require "cryptowatch/version"
|
11
|
+
require "cryptowatch/api/api"
|
12
|
+
require "cryptowatch/messages"
|
13
|
+
require "cryptowatch/utils"
|
14
|
+
require "cryptowatch/wrapper"
|
15
|
+
require "cryptowatch/adapter/rest_client_adapter"
|
16
|
+
|
17
|
+
|
18
|
+
require "cryptowatch/business/assets"
|
19
|
+
require "cryptowatch/business/exchanges"
|
20
|
+
require "cryptowatch/business/markets"
|
21
|
+
require "cryptowatch/business/pairs"
|
22
|
+
|
23
|
+
module Cryptowatch
|
24
|
+
module Api
|
25
|
+
end
|
26
|
+
end
|
@@ -0,0 +1,47 @@
|
|
1
|
+
# @Author: Esteban GONZALEZ <esteban>
|
2
|
+
# @Date: Wednesday, November 1st 2017, 9:26:19 am
|
3
|
+
# @Email: gonzal_e@etna-alternance.net
|
4
|
+
# @Project: RubyCryptowatch
|
5
|
+
# @Last modified by: esteban
|
6
|
+
# @Last modified time: Sunday, November 5th 2017, 7:11:00 pm
|
7
|
+
|
8
|
+
require 'rest-client'
|
9
|
+
require 'logger'
|
10
|
+
require 'json'
|
11
|
+
|
12
|
+
module Cryptowatch
|
13
|
+
class RestClientAdapter
|
14
|
+
|
15
|
+
attr_accessor :options
|
16
|
+
|
17
|
+
def initialize (options)
|
18
|
+
@options = options
|
19
|
+
end
|
20
|
+
|
21
|
+
def get (*elements)
|
22
|
+
|
23
|
+
if (elements.size == 0)
|
24
|
+
Messages::LOG.error(Messages::ERROR_NO_URL)
|
25
|
+
return nil
|
26
|
+
end
|
27
|
+
|
28
|
+
url = Api::format_url(*elements)
|
29
|
+
|
30
|
+
begin
|
31
|
+
milli_start = Time.now
|
32
|
+
answer = JSON.parse(RestClient::Request.execute(
|
33
|
+
method: :get,
|
34
|
+
url: url,
|
35
|
+
timeout: @options[:timeout]),
|
36
|
+
accept: :json
|
37
|
+
)
|
38
|
+
milli_end = Time.now
|
39
|
+
elapsed = Utils::time_elapsed(milli_start, milli_end)
|
40
|
+
Messages::LOG.info("[#{elapsed.round} ms] #{Messages::GET}'#{url}'")
|
41
|
+
return answer
|
42
|
+
rescue SocketError, RestClient::ExceptionWithResponse => e
|
43
|
+
Messages::LOG.error("'#{e.message}' on => #{url}")
|
44
|
+
end
|
45
|
+
end
|
46
|
+
end
|
47
|
+
end
|
@@ -0,0 +1,19 @@
|
|
1
|
+
# @Author: Esteban GONZALEZ <Esteban>
|
2
|
+
# @Date: Tuesday, October 17th 2017, 9:32:56 pm
|
3
|
+
# @Email: gonzal_e@etna-alternance.net
|
4
|
+
# @Project: RubyCryptowatch
|
5
|
+
# @Last modified by: esteban
|
6
|
+
# @Last modified time: Sunday, November 5th 2017, 6:42:01 pm
|
7
|
+
|
8
|
+
module Cryptowatch
|
9
|
+
module Api
|
10
|
+
|
11
|
+
API_BASE_URL = "https://api.cryptowat.ch"
|
12
|
+
|
13
|
+
def self.format_url(*args)
|
14
|
+
args -= [nil]
|
15
|
+
return args.join'/'
|
16
|
+
end
|
17
|
+
|
18
|
+
end
|
19
|
+
end
|
@@ -0,0 +1,22 @@
|
|
1
|
+
# @Author: Esteban GONZALEZ <esteban>
|
2
|
+
# @Date: Sunday, November 5th 2017, 12:31:59 pm
|
3
|
+
# @Email: gonzal_e@etna-alternance.net
|
4
|
+
# @Project: RubyCryptowatch
|
5
|
+
# @Last modified by: esteban
|
6
|
+
# @Last modified time: Sunday, November 5th 2017, 2:29:23 pm
|
7
|
+
|
8
|
+
module Cryptowatch
|
9
|
+
module Assets
|
10
|
+
|
11
|
+
API_URL = "#{Api::API_BASE_URL}/assets"
|
12
|
+
|
13
|
+
def self.index
|
14
|
+
return API_URL
|
15
|
+
end
|
16
|
+
|
17
|
+
def self.asset(asset)
|
18
|
+
return Api::format_url(API_URL, asset)
|
19
|
+
end
|
20
|
+
|
21
|
+
end
|
22
|
+
end
|
@@ -0,0 +1,22 @@
|
|
1
|
+
# @Author: Esteban GONZALEZ <esteban>
|
2
|
+
# @Date: Sunday, November 5th 2017, 12:55:04 pm
|
3
|
+
# @Email: gonzal_e@etna-alternance.net
|
4
|
+
# @Project: RubyCryptowatch
|
5
|
+
# @Last modified by: esteban
|
6
|
+
# @Last modified time: Sunday, November 5th 2017, 2:44:21 pm
|
7
|
+
|
8
|
+
module Cryptowatch
|
9
|
+
module Exchanges
|
10
|
+
|
11
|
+
API_URL = "#{Api::API_BASE_URL}/exchanges"
|
12
|
+
|
13
|
+
def self.index
|
14
|
+
return API_URL
|
15
|
+
end
|
16
|
+
|
17
|
+
def self.exchange(exchange)
|
18
|
+
return Api::format_url(API_URL, exchange)
|
19
|
+
end
|
20
|
+
|
21
|
+
end
|
22
|
+
end
|
@@ -0,0 +1,57 @@
|
|
1
|
+
# @Author: Esteban GONZALEZ <esteban>
|
2
|
+
# @Date: Sunday, November 5th 2017, 1:39:50 pm
|
3
|
+
# @Email: gonzal_e@etna-alternance.net
|
4
|
+
# @Project: RubyCryptowatch
|
5
|
+
# @Last modified by: esteban
|
6
|
+
# @Last modified time: Sunday, November 5th 2017, 6:40:33 pm
|
7
|
+
|
8
|
+
module Cryptowatch
|
9
|
+
module Markets
|
10
|
+
|
11
|
+
API_URL = "#{Api::API_BASE_URL}/markets"
|
12
|
+
ROUTES = [
|
13
|
+
:price, #Returns a market’s last price.
|
14
|
+
:summary, #Other stats based on a 24-hour sliding window.
|
15
|
+
:orderbook, #Returns a market’s order book.
|
16
|
+
:trades, #Returns a market’s most recent trades, incrementing chronologically.
|
17
|
+
:ohlc #Returns a market’s OHLC candlestick data.
|
18
|
+
]
|
19
|
+
|
20
|
+
def self.index
|
21
|
+
return API_URL
|
22
|
+
end
|
23
|
+
|
24
|
+
def self.market(exchange)
|
25
|
+
return Api::format_url(API_URL, exchange)
|
26
|
+
end
|
27
|
+
|
28
|
+
def self.market(exchange, asset, route = nil)
|
29
|
+
if (route != nil && !ROUTES.include?(route))
|
30
|
+
Messages::LOG.error(Messages::ERROR_UNKNOW_MARKET_ROUTE)
|
31
|
+
else
|
32
|
+
return Api::format_url(API_URL, exchange, asset, route)
|
33
|
+
end
|
34
|
+
end
|
35
|
+
|
36
|
+
def self.price(exchange, asset)
|
37
|
+
return self.market(exchange, asset, :price)
|
38
|
+
end
|
39
|
+
|
40
|
+
def self.summary(exchange, asset)
|
41
|
+
return self.market(exchange, asset, :summary)
|
42
|
+
end
|
43
|
+
|
44
|
+
def self.orderbook(exchange, asset)
|
45
|
+
return self.market(exchange, asset, :orderbook)
|
46
|
+
end
|
47
|
+
|
48
|
+
def self.trades(exchange, asset)
|
49
|
+
return self.market(exchange, asset, :trades)
|
50
|
+
end
|
51
|
+
|
52
|
+
def self.ohlc(exchange, asset)
|
53
|
+
return self.market(exchange, asset, :ohlc)
|
54
|
+
end
|
55
|
+
|
56
|
+
end
|
57
|
+
end
|
@@ -0,0 +1,22 @@
|
|
1
|
+
# @Author: Esteban GONZALEZ <esteban>
|
2
|
+
# @Date: Sunday, November 5th 2017, 12:45:58 pm
|
3
|
+
# @Email: gonzal_e@etna-alternance.net
|
4
|
+
# @Project: RubyCryptowatch
|
5
|
+
# @Last modified by: esteban
|
6
|
+
# @Last modified time: Sunday, November 5th 2017, 2:29:20 pm
|
7
|
+
|
8
|
+
module Cryptowatch
|
9
|
+
module Pairs
|
10
|
+
|
11
|
+
API_URL = "#{Api::API_BASE_URL}/pairs"
|
12
|
+
|
13
|
+
def self.index
|
14
|
+
return API_URL
|
15
|
+
end
|
16
|
+
|
17
|
+
def self.pair(pair)
|
18
|
+
return Api::format_url(API_URL, pair)
|
19
|
+
end
|
20
|
+
|
21
|
+
end
|
22
|
+
end
|
@@ -0,0 +1,19 @@
|
|
1
|
+
# @Author: Esteban GONZALEZ <esteban>
|
2
|
+
# @Date: Sunday, November 5th 2017, 2:26:39 pm
|
3
|
+
# @Email: gonzal_e@etna-alternance.net
|
4
|
+
# @Project: RubyCryptowatch
|
5
|
+
# @Last modified by: esteban
|
6
|
+
# @Last modified time: Sunday, November 5th 2017, 7:39:39 pm
|
7
|
+
require 'logger'
|
8
|
+
|
9
|
+
module Cryptowatch
|
10
|
+
module Messages
|
11
|
+
|
12
|
+
LOG = Logger.new(STDOUT)
|
13
|
+
|
14
|
+
GET = "GET => "
|
15
|
+
ERROR_NO_URL = "Can not execute a 'GET' request without url."
|
16
|
+
ERROR_UNKNOW_MARKET_ROUTE = "Unknow route: "
|
17
|
+
|
18
|
+
end
|
19
|
+
end
|
@@ -0,0 +1,13 @@
|
|
1
|
+
# @Author: Esteban GONZALEZ <esteban>
|
2
|
+
# @Date: Sunday, November 5th 2017, 6:44:18 pm
|
3
|
+
# @Email: gonzal_e@etna-alternance.net
|
4
|
+
# @Project: RubyCryptowatch
|
5
|
+
# @Last modified by: esteban
|
6
|
+
# @Last modified time: Sunday, November 5th 2017, 7:05:20 pm
|
7
|
+
module Cryptowatch
|
8
|
+
module Utils
|
9
|
+
def self.time_elapsed(start, finish)
|
10
|
+
return ((finish - start) * 1000.0)
|
11
|
+
end
|
12
|
+
end
|
13
|
+
end
|
@@ -0,0 +1,13 @@
|
|
1
|
+
# @Author: Esteban GONZALEZ <Esteban
|
2
|
+
# @Date: Tuesday, October 17th 2017, 9:38:57 pm
|
3
|
+
# @Email: gonzal_e@etna-alternance.net
|
4
|
+
# @Project: RubyCryptowatch
|
5
|
+
# @Last modified by: esteban
|
6
|
+
# @Last modified time: Sunday, November 5th 2017, 7:39:23 pm
|
7
|
+
|
8
|
+
module Cryptowatch
|
9
|
+
module Api
|
10
|
+
VERSION = [0, 0, 3]
|
11
|
+
VERSION_FORMAT = VERSION.join('.')
|
12
|
+
end
|
13
|
+
end
|
@@ -0,0 +1,31 @@
|
|
1
|
+
# @Author: Esteban GONZALEZ <esteban>
|
2
|
+
# @Date: Thursday, November 2nd 2017, 9:48:46 am
|
3
|
+
# @Email: gonzal_e@etna-alternance.net
|
4
|
+
# @Project: RubyCryptowatch
|
5
|
+
# @Last modified by: esteban
|
6
|
+
# @Last modified time: Monday, November 6th 2017, 1:07:49 pm
|
7
|
+
|
8
|
+
require 'cryptowatch'
|
9
|
+
|
10
|
+
module Cryptowatch
|
11
|
+
class Wrapper
|
12
|
+
|
13
|
+
attr_accessor :rest_adapter
|
14
|
+
|
15
|
+
def initialize(options = nil)
|
16
|
+
if options == nil
|
17
|
+
options = {
|
18
|
+
:timeout => 5,
|
19
|
+
:display_infos => true,
|
20
|
+
:display_errors => true
|
21
|
+
}
|
22
|
+
end
|
23
|
+
@rest_adapter = RestClientAdapter.new(options)
|
24
|
+
end
|
25
|
+
|
26
|
+
def get(url)
|
27
|
+
return @rest_adapter.get(url)
|
28
|
+
end
|
29
|
+
|
30
|
+
end
|
31
|
+
end
|
@@ -0,0 +1,14 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
RSpec.describe Cryptowatch do
|
4
|
+
describe 'Cryptowatch gem' do
|
5
|
+
it 'has an API version number' do
|
6
|
+
expect(Cryptowatch::Api::VERSION).not_to be nil
|
7
|
+
end
|
8
|
+
|
9
|
+
it 'has a wrapper module' do
|
10
|
+
expect(Cryptowatch::Wrapper).not_to be nil
|
11
|
+
end
|
12
|
+
end
|
13
|
+
|
14
|
+
end
|
data/spec/spec_helper.rb
ADDED
@@ -0,0 +1,36 @@
|
|
1
|
+
$LOAD_PATH.unshift File.expand_path('../../lib', __FILE__)
|
2
|
+
|
3
|
+
require_relative '../lib/cryptowatch'
|
4
|
+
require 'bundler/setup'
|
5
|
+
|
6
|
+
require 'ostruct'
|
7
|
+
require 'faker'
|
8
|
+
require 'webmock/rspec'
|
9
|
+
require 'vcr'
|
10
|
+
|
11
|
+
Bundler.setup
|
12
|
+
|
13
|
+
VCR.configure do |c|
|
14
|
+
c.cassette_library_dir = 'spec/fixtures/cassettes'
|
15
|
+
c.hook_into :webmock
|
16
|
+
c.configure_rspec_metadata!
|
17
|
+
end
|
18
|
+
|
19
|
+
WebMock.allow_net_connect!
|
20
|
+
|
21
|
+
RSpec.configure do |config|
|
22
|
+
config.around(:each) do |ex|
|
23
|
+
if ex.metadata.key?(:vcr)
|
24
|
+
ex.run
|
25
|
+
else
|
26
|
+
VCR.turned_off { ex.run }
|
27
|
+
end
|
28
|
+
end
|
29
|
+
end
|
30
|
+
|
31
|
+
RSpec::Matchers.define :a_hash_with_keys do |expected|
|
32
|
+
match do |actual|
|
33
|
+
return false unless actual.is_a?(Hash)
|
34
|
+
expected.all?{|key| actual.key?(key) }
|
35
|
+
end
|
36
|
+
end
|
Binary file
|
metadata
ADDED
@@ -0,0 +1,186 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: cryptowatch-ruby
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 0.0.3
|
5
|
+
platform: ruby
|
6
|
+
authors:
|
7
|
+
- Abdelkader K
|
8
|
+
autorequire:
|
9
|
+
bindir: bin
|
10
|
+
cert_chain: []
|
11
|
+
date: 2018-03-27 00:00:00.000000000 Z
|
12
|
+
dependencies:
|
13
|
+
- !ruby/object:Gem::Dependency
|
14
|
+
name: bundler
|
15
|
+
requirement: !ruby/object:Gem::Requirement
|
16
|
+
requirements:
|
17
|
+
- - "~>"
|
18
|
+
- !ruby/object:Gem::Version
|
19
|
+
version: '1'
|
20
|
+
type: :development
|
21
|
+
prerelease: false
|
22
|
+
version_requirements: !ruby/object:Gem::Requirement
|
23
|
+
requirements:
|
24
|
+
- - "~>"
|
25
|
+
- !ruby/object:Gem::Version
|
26
|
+
version: '1'
|
27
|
+
- !ruby/object:Gem::Dependency
|
28
|
+
name: rest-client
|
29
|
+
requirement: !ruby/object:Gem::Requirement
|
30
|
+
requirements:
|
31
|
+
- - "~>"
|
32
|
+
- !ruby/object:Gem::Version
|
33
|
+
version: '2.0'
|
34
|
+
type: :development
|
35
|
+
prerelease: false
|
36
|
+
version_requirements: !ruby/object:Gem::Requirement
|
37
|
+
requirements:
|
38
|
+
- - "~>"
|
39
|
+
- !ruby/object:Gem::Version
|
40
|
+
version: '2.0'
|
41
|
+
- !ruby/object:Gem::Dependency
|
42
|
+
name: rspec
|
43
|
+
requirement: !ruby/object:Gem::Requirement
|
44
|
+
requirements:
|
45
|
+
- - "~>"
|
46
|
+
- !ruby/object:Gem::Version
|
47
|
+
version: '3.7'
|
48
|
+
- - ">="
|
49
|
+
- !ruby/object:Gem::Version
|
50
|
+
version: 3.7.0
|
51
|
+
type: :development
|
52
|
+
prerelease: false
|
53
|
+
version_requirements: !ruby/object:Gem::Requirement
|
54
|
+
requirements:
|
55
|
+
- - "~>"
|
56
|
+
- !ruby/object:Gem::Version
|
57
|
+
version: '3.7'
|
58
|
+
- - ">="
|
59
|
+
- !ruby/object:Gem::Version
|
60
|
+
version: 3.7.0
|
61
|
+
- !ruby/object:Gem::Dependency
|
62
|
+
name: faker
|
63
|
+
requirement: !ruby/object:Gem::Requirement
|
64
|
+
requirements:
|
65
|
+
- - "~>"
|
66
|
+
- !ruby/object:Gem::Version
|
67
|
+
version: '1.8'
|
68
|
+
- - ">="
|
69
|
+
- !ruby/object:Gem::Version
|
70
|
+
version: 1.8.7
|
71
|
+
type: :development
|
72
|
+
prerelease: false
|
73
|
+
version_requirements: !ruby/object:Gem::Requirement
|
74
|
+
requirements:
|
75
|
+
- - "~>"
|
76
|
+
- !ruby/object:Gem::Version
|
77
|
+
version: '1.8'
|
78
|
+
- - ">="
|
79
|
+
- !ruby/object:Gem::Version
|
80
|
+
version: 1.8.7
|
81
|
+
- !ruby/object:Gem::Dependency
|
82
|
+
name: vcr
|
83
|
+
requirement: !ruby/object:Gem::Requirement
|
84
|
+
requirements:
|
85
|
+
- - "~>"
|
86
|
+
- !ruby/object:Gem::Version
|
87
|
+
version: '3.0'
|
88
|
+
type: :development
|
89
|
+
prerelease: false
|
90
|
+
version_requirements: !ruby/object:Gem::Requirement
|
91
|
+
requirements:
|
92
|
+
- - "~>"
|
93
|
+
- !ruby/object:Gem::Version
|
94
|
+
version: '3.0'
|
95
|
+
- !ruby/object:Gem::Dependency
|
96
|
+
name: rake
|
97
|
+
requirement: !ruby/object:Gem::Requirement
|
98
|
+
requirements:
|
99
|
+
- - "~>"
|
100
|
+
- !ruby/object:Gem::Version
|
101
|
+
version: '10.0'
|
102
|
+
type: :development
|
103
|
+
prerelease: false
|
104
|
+
version_requirements: !ruby/object:Gem::Requirement
|
105
|
+
requirements:
|
106
|
+
- - "~>"
|
107
|
+
- !ruby/object:Gem::Version
|
108
|
+
version: '10.0'
|
109
|
+
- !ruby/object:Gem::Dependency
|
110
|
+
name: webmock
|
111
|
+
requirement: !ruby/object:Gem::Requirement
|
112
|
+
requirements:
|
113
|
+
- - "~>"
|
114
|
+
- !ruby/object:Gem::Version
|
115
|
+
version: '0'
|
116
|
+
type: :development
|
117
|
+
prerelease: false
|
118
|
+
version_requirements: !ruby/object:Gem::Requirement
|
119
|
+
requirements:
|
120
|
+
- - "~>"
|
121
|
+
- !ruby/object:Gem::Version
|
122
|
+
version: '0'
|
123
|
+
- !ruby/object:Gem::Dependency
|
124
|
+
name: byebug
|
125
|
+
requirement: !ruby/object:Gem::Requirement
|
126
|
+
requirements:
|
127
|
+
- - "~>"
|
128
|
+
- !ruby/object:Gem::Version
|
129
|
+
version: '0'
|
130
|
+
type: :development
|
131
|
+
prerelease: false
|
132
|
+
version_requirements: !ruby/object:Gem::Requirement
|
133
|
+
requirements:
|
134
|
+
- - "~>"
|
135
|
+
- !ruby/object:Gem::Version
|
136
|
+
version: '0'
|
137
|
+
description: A simple API wrapper in Ruby to facilite the use of Cryptowat.ch
|
138
|
+
email: akettal@users.noreply.github.com
|
139
|
+
executables: []
|
140
|
+
extensions: []
|
141
|
+
extra_rdoc_files: []
|
142
|
+
files:
|
143
|
+
- Gemfile
|
144
|
+
- Gemfile.lock
|
145
|
+
- README.md
|
146
|
+
- cryptowatch.gemspec
|
147
|
+
- lib/cryptowatch.rb
|
148
|
+
- lib/cryptowatch/adapter/rest_client_adapter.rb
|
149
|
+
- lib/cryptowatch/api/api.rb
|
150
|
+
- lib/cryptowatch/business/assets.rb
|
151
|
+
- lib/cryptowatch/business/exchanges.rb
|
152
|
+
- lib/cryptowatch/business/markets.rb
|
153
|
+
- lib/cryptowatch/business/pairs.rb
|
154
|
+
- lib/cryptowatch/messages.rb
|
155
|
+
- lib/cryptowatch/utils.rb
|
156
|
+
- lib/cryptowatch/version.rb
|
157
|
+
- lib/cryptowatch/wrapper.rb
|
158
|
+
- spec/cryptowatch/client_spec.rb
|
159
|
+
- spec/cryptowatch_spec.rb
|
160
|
+
- spec/spec_helper.rb
|
161
|
+
- unit_tests/.DS_Store
|
162
|
+
homepage: https://github.com/akettal/cryptowatch-ruby
|
163
|
+
licenses:
|
164
|
+
- MIT
|
165
|
+
metadata: {}
|
166
|
+
post_install_message:
|
167
|
+
rdoc_options: []
|
168
|
+
require_paths:
|
169
|
+
- lib
|
170
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
171
|
+
requirements:
|
172
|
+
- - ">="
|
173
|
+
- !ruby/object:Gem::Version
|
174
|
+
version: '0'
|
175
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
176
|
+
requirements:
|
177
|
+
- - ">="
|
178
|
+
- !ruby/object:Gem::Version
|
179
|
+
version: '0'
|
180
|
+
requirements: []
|
181
|
+
rubyforge_project:
|
182
|
+
rubygems_version: 2.5.1
|
183
|
+
signing_key:
|
184
|
+
specification_version: 4
|
185
|
+
summary: Cryptowat.ch API wrapper written in Ruby.
|
186
|
+
test_files: []
|