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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: ee8a33596a410979938953c43cb35519687c57c4
4
- data.tar.gz: 27971c6f560959267e362c294d1e84cd68a5dca9
3
+ metadata.gz: 329ab9a46a9034fc82a8d609d2ba0da467a36ed0
4
+ data.tar.gz: de1b0e32ef0e30b82e5674518d9cb7e370b5127d
5
5
  SHA512:
6
- metadata.gz: 33ad5128666f959cf7464e8446f0c10bc4c2de61f029693dbcde89c9bed5212f15dc506ebed844d89debd650af78c0c3fbed1ccc2086a27b701374e9fb85c4ff
7
- data.tar.gz: 1d4161a3388cda316dcd59c93ba9b18e9214858d4e016015e5ed1b67a2468f95b88c411af78436d300022dbec58e52602368ac11c416f555017401ed5a907204
6
+ metadata.gz: fe199e557a10e1c1e834b8cb68aa2e856d1dd093a819fb8ed8fc260d3cf5b5725a3bcc61f65afbc966d471e6fee0d3dc449c633941e61549bd16fec655e281b5
7
+ data.tar.gz: 6ec816c3041e58f4562c817adb6e1ce4c6c916bbc578512b782905a6d8113cc06399366aac4d89d7d2be5c1e7992d0cdff33e04aed6b684a7cdd6ffdfc21e6cf
data/Gemfile CHANGED
@@ -4,5 +4,3 @@ git_source(:github) {|repo_name| "https://github.com/#{repo_name}" }
4
4
 
5
5
  # Specify your gem's dependencies in coinmarketcap-wrapper.gemspec
6
6
  gemspec
7
-
8
- gem 'pry'
@@ -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
- Welcome to your new gem! In this directory, you'll find the files you need to be able to package up your Ruby library into a gem. Put your Ruby code in the file `lib/coinmarketcap/wrapper`. To experiment with that code, run `bin/console` for an interactive prompt.
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
 
@@ -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
- # spec.homepage =
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 = `git ls-files -z`.split("\x0").reject do |f|
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
@@ -1,5 +1,5 @@
1
1
  module Coinmarketcap
2
2
  module Wrapper
3
- VERSION = "0.1.0"
3
+ VERSION = "0.2.0"
4
4
  end
5
5
  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.1.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-30 00:00:00.000000000 Z
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: faraday
96
+ name: json
97
97
  requirement: !ruby/object:Gem::Requirement
98
98
  requirements:
99
99
  - - "~>"
100
100
  - !ruby/object:Gem::Version
101
- version: 0.13.1
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: 0.13.1
108
+ version: '2.1'
109
109
  - !ruby/object:Gem::Dependency
110
- name: json
110
+ name: api_cache
111
111
  requirement: !ruby/object:Gem::Requirement
112
112
  requirements:
113
113
  - - "~>"
114
114
  - !ruby/object:Gem::Version
115
- version: '2.1'
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: '2.1'
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: {}