coinmarketcap-wrapper 0.1.0 → 0.2.0
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 +4 -4
- data/Gemfile +0 -2
- data/Gemfile.lock +44 -0
- data/README.md +1 -3
- data/bin/console +2 -2
- data/coinmarketcap-wrapper.gemspec +5 -4
- data/lib/coinmarketcap/wrapper.rb +6 -1
- data/lib/coinmarketcap/wrapper/api_client.rb +47 -0
- data/lib/coinmarketcap/wrapper/coin.rb +17 -0
- data/lib/coinmarketcap/wrapper/market_data.rb +13 -0
- data/lib/coinmarketcap/wrapper/version.rb +1 -1
- metadata +41 -9
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 329ab9a46a9034fc82a8d609d2ba0da467a36ed0
|
4
|
+
data.tar.gz: de1b0e32ef0e30b82e5674518d9cb7e370b5127d
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: fe199e557a10e1c1e834b8cb68aa2e856d1dd093a819fb8ed8fc260d3cf5b5725a3bcc61f65afbc966d471e6fee0d3dc449c633941e61549bd16fec655e281b5
|
7
|
+
data.tar.gz: 6ec816c3041e58f4562c817adb6e1ce4c6c916bbc578512b782905a6d8113cc06399366aac4d89d7d2be5c1e7992d0cdff33e04aed6b684a7cdd6ffdfc21e6cf
|
data/Gemfile
CHANGED
data/Gemfile.lock
ADDED
@@ -0,0 +1,44 @@
|
|
1
|
+
PATH
|
2
|
+
remote: .
|
3
|
+
specs:
|
4
|
+
coinmarketcap-wrapper (0.2.0)
|
5
|
+
api_cache (~> 0.3.0)
|
6
|
+
json (~> 2.1)
|
7
|
+
memcached (~> 1.8)
|
8
|
+
moneta (~> 1.0)
|
9
|
+
|
10
|
+
GEM
|
11
|
+
remote: https://rubygems.org/
|
12
|
+
specs:
|
13
|
+
addressable (2.5.2)
|
14
|
+
public_suffix (>= 2.0.2, < 4.0)
|
15
|
+
api_cache (0.3.0)
|
16
|
+
crack (0.4.3)
|
17
|
+
safe_yaml (~> 1.0.0)
|
18
|
+
hashdiff (0.3.7)
|
19
|
+
json (2.1.0)
|
20
|
+
memcached (1.8.0)
|
21
|
+
minitest (5.10.3)
|
22
|
+
moneta (1.0.0)
|
23
|
+
public_suffix (3.0.1)
|
24
|
+
rake (10.5.0)
|
25
|
+
safe_yaml (1.0.4)
|
26
|
+
vcr (3.0.3)
|
27
|
+
webmock (3.1.1)
|
28
|
+
addressable (>= 2.3.6)
|
29
|
+
crack (>= 0.3.2)
|
30
|
+
hashdiff
|
31
|
+
|
32
|
+
PLATFORMS
|
33
|
+
ruby
|
34
|
+
|
35
|
+
DEPENDENCIES
|
36
|
+
bundler (~> 1.16)
|
37
|
+
coinmarketcap-wrapper!
|
38
|
+
minitest (~> 5.0)
|
39
|
+
rake (~> 10.0)
|
40
|
+
vcr (~> 3.0, >= 3.0.3)
|
41
|
+
webmock (~> 3.1, >= 3.1.1)
|
42
|
+
|
43
|
+
BUNDLED WITH
|
44
|
+
1.16.0
|
data/README.md
CHANGED
@@ -1,8 +1,6 @@
|
|
1
1
|
# Coinmarketcap::Wrapper
|
2
2
|
|
3
|
-
|
4
|
-
|
5
|
-
TODO: Delete this and the text above, and describe your gem
|
3
|
+
Api wrapper for the coinmarketcap platform.
|
6
4
|
|
7
5
|
## Installation
|
8
6
|
|
data/bin/console
CHANGED
@@ -7,8 +7,8 @@ require "coinmarketcap/wrapper"
|
|
7
7
|
# with your gem easier. You can also use a different console, if you like.
|
8
8
|
|
9
9
|
# (If you use this, don't forget to add pry to your Gemfile!)
|
10
|
-
require "pry"
|
11
|
-
Pry.start
|
10
|
+
# require "pry"
|
11
|
+
# Pry.start
|
12
12
|
|
13
13
|
require "irb"
|
14
14
|
IRB.start(__FILE__)
|
@@ -1,4 +1,3 @@
|
|
1
|
-
|
2
1
|
lib = File.expand_path("../lib", __FILE__)
|
3
2
|
$LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
|
4
3
|
require "coinmarketcap/wrapper/version"
|
@@ -11,7 +10,7 @@ Gem::Specification.new do |spec|
|
|
11
10
|
|
12
11
|
spec.summary = %q{API wrapper for coinmarketcap.com}
|
13
12
|
spec.description = %q{Get's ticker data from Coinmarketcap}
|
14
|
-
|
13
|
+
spec.homepage = "https://github.com/cyzanfar/Coinmarketcap-API-wrapper"
|
15
14
|
spec.license = "MIT"
|
16
15
|
|
17
16
|
# Prevent pushing this gem to RubyGems.org. To allow pushes either set the 'allowed_push_host'
|
@@ -23,7 +22,7 @@ Gem::Specification.new do |spec|
|
|
23
22
|
# "public gem pushes."
|
24
23
|
# end
|
25
24
|
|
26
|
-
spec.files
|
25
|
+
spec.files = `git ls-files -z`.split("\x0").reject do |f|
|
27
26
|
f.match(%r{^(test|spec|features)/})
|
28
27
|
end
|
29
28
|
spec.bindir = "exe"
|
@@ -36,6 +35,8 @@ Gem::Specification.new do |spec|
|
|
36
35
|
spec.add_development_dependency "vcr", '~> 3.0', '>= 3.0.3'
|
37
36
|
spec.add_development_dependency "webmock", '~> 3.1', '>= 3.1.1'
|
38
37
|
|
39
|
-
spec.add_dependency "faraday", '~> 0.13.1'
|
40
38
|
spec.add_dependency "json", '~> 2.1'
|
39
|
+
spec.add_dependency "api_cache", '~> 0.3.0'
|
40
|
+
spec.add_dependency "moneta", '~> 1.0'
|
41
|
+
spec.add_dependency "memcached", '~> 1.8'
|
41
42
|
end
|
@@ -2,11 +2,16 @@ require "coinmarketcap/wrapper/version"
|
|
2
2
|
require "coinmarketcap/wrapper/api_client"
|
3
3
|
require "coinmarketcap/wrapper/coin"
|
4
4
|
require "coinmarketcap/wrapper/market_data"
|
5
|
-
require 'faraday'
|
6
5
|
require 'json'
|
6
|
+
require 'api_cache'
|
7
|
+
require "moneta"
|
8
|
+
require "memcached"
|
9
|
+
# require 'dalli'
|
7
10
|
|
8
11
|
module Coinmarketcap
|
9
12
|
module Wrapper
|
10
13
|
BASE_API_URL = "https://api.coinmarketcap.com/v1"
|
14
|
+
|
15
|
+
APICache.store = Moneta.new(:Memcached)
|
11
16
|
end
|
12
17
|
end
|
@@ -0,0 +1,47 @@
|
|
1
|
+
module Coinmarketcap
|
2
|
+
module Wrapper
|
3
|
+
class ApiClient
|
4
|
+
|
5
|
+
def initialize(attributes)
|
6
|
+
attributes.each do |attribute, value|
|
7
|
+
singleton_class.class_eval { attr_accessor "#{attribute}"}
|
8
|
+
send("#{attribute}=", value)
|
9
|
+
end
|
10
|
+
end
|
11
|
+
|
12
|
+
class << self
|
13
|
+
def clean_data(attributes, **opts)
|
14
|
+
attributes.each do |attribute|
|
15
|
+
attribute['day_volume_usd'] = attribute.delete '24h_volume_usd'
|
16
|
+
if opts[:convert]
|
17
|
+
attribute["day_volume_#{opts[:convert].downcase}"] =
|
18
|
+
attribute.delete "24h_volume_#{opts[:convert].downcase}" if opts[:convert]
|
19
|
+
end
|
20
|
+
end
|
21
|
+
attributes
|
22
|
+
end
|
23
|
+
|
24
|
+
def fetch_single(id, opts={})
|
25
|
+
uri = URI("#{BASE_API_URL}/ticker/#{id}/")
|
26
|
+
uri.query = URI.encode_www_form(opts)
|
27
|
+
res = Net::HTTP.get_response(uri)
|
28
|
+
res.body
|
29
|
+
end
|
30
|
+
|
31
|
+
def fetch_all(opts={}, cache_time=100)
|
32
|
+
APICache.get('coinmarketcap_data', :cache => cache_time) do
|
33
|
+
uri = URI("#{BASE_API_URL}/ticker/")
|
34
|
+
uri.query = URI.encode_www_form(opts)
|
35
|
+
res = Net::HTTP.get_response(uri)
|
36
|
+
case res
|
37
|
+
when Net::HTTPSuccess
|
38
|
+
res.body
|
39
|
+
else
|
40
|
+
raise APICache::InvalidResponse
|
41
|
+
end
|
42
|
+
end
|
43
|
+
end
|
44
|
+
end
|
45
|
+
end
|
46
|
+
end
|
47
|
+
end
|
@@ -0,0 +1,17 @@
|
|
1
|
+
module Coinmarketcap
|
2
|
+
module Wrapper
|
3
|
+
class Coin < ApiClient
|
4
|
+
def self.all(**opts)
|
5
|
+
attributes = JSON.parse(fetch_all(opts))
|
6
|
+
clean_data(attributes, **opts)
|
7
|
+
attributes.map { |attribute| new(attribute)}
|
8
|
+
end
|
9
|
+
|
10
|
+
def self.find(id, **opts)
|
11
|
+
attributes = JSON.parse(fetch_single(id, opts))
|
12
|
+
clean_data(attributes, **opts)
|
13
|
+
new(attributes.first)
|
14
|
+
end
|
15
|
+
end
|
16
|
+
end
|
17
|
+
end
|
@@ -0,0 +1,13 @@
|
|
1
|
+
module Coinmarketcap
|
2
|
+
module Wrapper
|
3
|
+
GLOBAL_DATA_PATH = 'global'
|
4
|
+
class MarketData < ApiClient
|
5
|
+
|
6
|
+
def self.global(**opts)
|
7
|
+
response = Faraday.get "#{BASE_API_URL}/#{GLOBAL_DATA_PATH}/", opts
|
8
|
+
attributes = JSON.parse(response.body)
|
9
|
+
new(attributes)
|
10
|
+
end
|
11
|
+
end
|
12
|
+
end
|
13
|
+
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: coinmarketcap-wrapper
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.2.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Cyrus Ghazanfar
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date: 2017-
|
11
|
+
date: 2017-12-01 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bundler
|
@@ -93,33 +93,61 @@ dependencies:
|
|
93
93
|
- !ruby/object:Gem::Version
|
94
94
|
version: 3.1.1
|
95
95
|
- !ruby/object:Gem::Dependency
|
96
|
-
name:
|
96
|
+
name: json
|
97
97
|
requirement: !ruby/object:Gem::Requirement
|
98
98
|
requirements:
|
99
99
|
- - "~>"
|
100
100
|
- !ruby/object:Gem::Version
|
101
|
-
version:
|
101
|
+
version: '2.1'
|
102
102
|
type: :runtime
|
103
103
|
prerelease: false
|
104
104
|
version_requirements: !ruby/object:Gem::Requirement
|
105
105
|
requirements:
|
106
106
|
- - "~>"
|
107
107
|
- !ruby/object:Gem::Version
|
108
|
-
version:
|
108
|
+
version: '2.1'
|
109
109
|
- !ruby/object:Gem::Dependency
|
110
|
-
name:
|
110
|
+
name: api_cache
|
111
111
|
requirement: !ruby/object:Gem::Requirement
|
112
112
|
requirements:
|
113
113
|
- - "~>"
|
114
114
|
- !ruby/object:Gem::Version
|
115
|
-
version:
|
115
|
+
version: 0.3.0
|
116
116
|
type: :runtime
|
117
117
|
prerelease: false
|
118
118
|
version_requirements: !ruby/object:Gem::Requirement
|
119
119
|
requirements:
|
120
120
|
- - "~>"
|
121
121
|
- !ruby/object:Gem::Version
|
122
|
-
version:
|
122
|
+
version: 0.3.0
|
123
|
+
- !ruby/object:Gem::Dependency
|
124
|
+
name: moneta
|
125
|
+
requirement: !ruby/object:Gem::Requirement
|
126
|
+
requirements:
|
127
|
+
- - "~>"
|
128
|
+
- !ruby/object:Gem::Version
|
129
|
+
version: '1.0'
|
130
|
+
type: :runtime
|
131
|
+
prerelease: false
|
132
|
+
version_requirements: !ruby/object:Gem::Requirement
|
133
|
+
requirements:
|
134
|
+
- - "~>"
|
135
|
+
- !ruby/object:Gem::Version
|
136
|
+
version: '1.0'
|
137
|
+
- !ruby/object:Gem::Dependency
|
138
|
+
name: memcached
|
139
|
+
requirement: !ruby/object:Gem::Requirement
|
140
|
+
requirements:
|
141
|
+
- - "~>"
|
142
|
+
- !ruby/object:Gem::Version
|
143
|
+
version: '1.8'
|
144
|
+
type: :runtime
|
145
|
+
prerelease: false
|
146
|
+
version_requirements: !ruby/object:Gem::Requirement
|
147
|
+
requirements:
|
148
|
+
- - "~>"
|
149
|
+
- !ruby/object:Gem::Version
|
150
|
+
version: '1.8'
|
123
151
|
description: Get's ticker data from Coinmarketcap
|
124
152
|
email:
|
125
153
|
- cghazanfar10@gmail.com
|
@@ -131,6 +159,7 @@ files:
|
|
131
159
|
- ".travis.yml"
|
132
160
|
- CODE_OF_CONDUCT.md
|
133
161
|
- Gemfile
|
162
|
+
- Gemfile.lock
|
134
163
|
- LICENSE.txt
|
135
164
|
- README.md
|
136
165
|
- Rakefile
|
@@ -138,8 +167,11 @@ files:
|
|
138
167
|
- bin/setup
|
139
168
|
- coinmarketcap-wrapper.gemspec
|
140
169
|
- lib/coinmarketcap/wrapper.rb
|
170
|
+
- lib/coinmarketcap/wrapper/api_client.rb
|
171
|
+
- lib/coinmarketcap/wrapper/coin.rb
|
172
|
+
- lib/coinmarketcap/wrapper/market_data.rb
|
141
173
|
- lib/coinmarketcap/wrapper/version.rb
|
142
|
-
homepage:
|
174
|
+
homepage: https://github.com/cyzanfar/Coinmarketcap-API-wrapper
|
143
175
|
licenses:
|
144
176
|
- MIT
|
145
177
|
metadata: {}
|