currency-rate 1.6.1 → 2.0.5

Sign up to get free protection for your applications and to get access to all the features.
Files changed (42) hide show
  1. checksums.yaml +4 -4
  2. metadata +8 -121
  3. data/.document +0 -5
  4. data/.gitignore +0 -20
  5. data/.rspec +0 -1
  6. data/Gemfile +0 -6
  7. data/Gemfile.lock +0 -68
  8. data/LICENSE.txt +0 -20
  9. data/README.md +0 -73
  10. data/Rakefile +0 -43
  11. data/api_keys.yml.sample +0 -4
  12. data/currency-rate.gemspec +0 -41
  13. data/lib/adapter.rb +0 -71
  14. data/lib/adapters/crypto/binance_adapter.rb +0 -42
  15. data/lib/adapters/crypto/bitfinex_adapter.rb +0 -40
  16. data/lib/adapters/crypto/bitpay_adapter.rb +0 -29
  17. data/lib/adapters/crypto/bitstamp_adapter.rb +0 -26
  18. data/lib/adapters/crypto/btc_china_adapter.rb +0 -11
  19. data/lib/adapters/crypto/btc_e_adapter.rb +0 -18
  20. data/lib/adapters/crypto/coin_market_cap_adapter.rb +0 -31
  21. data/lib/adapters/crypto/coinbase_adapter.rb +0 -30
  22. data/lib/adapters/crypto/exmo_adapter.rb +0 -27
  23. data/lib/adapters/crypto/huobi_adapter.rb +0 -17
  24. data/lib/adapters/crypto/kraken_adapter.rb +0 -46
  25. data/lib/adapters/crypto/localbitcoins_adapter.rb +0 -25
  26. data/lib/adapters/crypto/okcoin_adapter.rb +0 -19
  27. data/lib/adapters/crypto/paxful_adapter.rb +0 -18
  28. data/lib/adapters/crypto/yadio_adapter.rb +0 -19
  29. data/lib/adapters/fiat/bonbast_adapter.rb +0 -25
  30. data/lib/adapters/fiat/coinmonitor_adapter.rb +0 -14
  31. data/lib/adapters/fiat/currency_layer_adapter.rb +0 -32
  32. data/lib/adapters/fiat/fixer_adapter.rb +0 -18
  33. data/lib/adapters/fiat/forge_adapter.rb +0 -25
  34. data/lib/adapters/fiat/free_forex_adapter.rb +0 -32
  35. data/lib/adapters/fiat/yahoo_adapter.rb +0 -35
  36. data/lib/configuration.rb +0 -29
  37. data/lib/currency_rate.rb +0 -84
  38. data/lib/currency_rate/version.rb +0 -3
  39. data/lib/fetcher.rb +0 -78
  40. data/lib/storage/file_storage.rb +0 -29
  41. data/lib/storage/serializers/yaml_serializer.rb +0 -15
  42. data/lib/synchronizer.rb +0 -51
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: b21eccbd3d6865daf9b36cd06dd060d8d5ee37269dd89285fd4d6b7a78e1690d
4
- data.tar.gz: e0a1391e9ac90a5f0d5a95bd2b6246cb18a89bd63e6494e3fb7761781837f9fd
3
+ metadata.gz: 9a7f14e30da81a12be7834d23f4665634d0dca5d8d19cf66e9670f5eb266be79
4
+ data.tar.gz: b2550c25e40d4ce22816204cf627afd1dd0d68b1f727f937d91bc14a2eb164ee
5
5
  SHA512:
6
- metadata.gz: 6794a647cf5ccb998214f89b981036a671a786f0469845cd1482434200dec6e144eee707bf18fe1f830d5b522b491aa4a48b4169baf83e119c3be713957aabce
7
- data.tar.gz: b2df8f2c40ba376cb3154d100afc73bae6c11e51deb6060438e08dc5bc9573832580dc107c57aee9ad78f5c58f5ba353b1352548a05afca4f39b889108296ab9
6
+ metadata.gz: 4de1cd86dc74233d31b0a5603972998a7952c4415d2aad2d6d7cd0a1ea25b7c8c3ff9acfa9bdabbb4cba361884d94a0ed66da5e65c6a025de3ce4f76d7253a98
7
+ data.tar.gz: 69a64c0052e51524fee1f328a2f1b2b4b88d9409a6abcb7c7bda20ac52c38fe2d1e516a42b3f6cb295275019616496b0eaa939569c971ccbf54b629a80c58a0f
metadata CHANGED
@@ -1,137 +1,24 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: currency-rate
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.6.1
4
+ version: 2.0.5
5
5
  platform: ruby
6
6
  authors:
7
- - Roman Snitko
7
+ - romanitup
8
8
  autorequire:
9
- bindir: exe
9
+ bindir: bin
10
10
  cert_chain: []
11
- date: 2020-04-15 00:00:00.000000000 Z
12
- dependencies:
13
- - !ruby/object:Gem::Dependency
14
- name: http
15
- requirement: !ruby/object:Gem::Requirement
16
- requirements:
17
- - - ">="
18
- - !ruby/object:Gem::Version
19
- version: '4.3'
20
- type: :runtime
21
- prerelease: false
22
- version_requirements: !ruby/object:Gem::Requirement
23
- requirements:
24
- - - ">="
25
- - !ruby/object:Gem::Version
26
- version: '4.3'
27
- - !ruby/object:Gem::Dependency
28
- name: byebug
29
- requirement: !ruby/object:Gem::Requirement
30
- requirements:
31
- - - ">="
32
- - !ruby/object:Gem::Version
33
- version: '0'
34
- type: :development
35
- prerelease: false
36
- version_requirements: !ruby/object:Gem::Requirement
37
- requirements:
38
- - - ">="
39
- - !ruby/object:Gem::Version
40
- version: '0'
41
- - !ruby/object:Gem::Dependency
42
- name: rake
43
- requirement: !ruby/object:Gem::Requirement
44
- requirements:
45
- - - "~>"
46
- - !ruby/object:Gem::Version
47
- version: '10.0'
48
- type: :development
49
- prerelease: false
50
- version_requirements: !ruby/object:Gem::Requirement
51
- requirements:
52
- - - "~>"
53
- - !ruby/object:Gem::Version
54
- version: '10.0'
55
- - !ruby/object:Gem::Dependency
56
- name: rspec
57
- requirement: !ruby/object:Gem::Requirement
58
- requirements:
59
- - - "~>"
60
- - !ruby/object:Gem::Version
61
- version: '3.0'
62
- type: :development
63
- prerelease: false
64
- version_requirements: !ruby/object:Gem::Requirement
65
- requirements:
66
- - - "~>"
67
- - !ruby/object:Gem::Version
68
- version: '3.0'
69
- - !ruby/object:Gem::Dependency
70
- name: webmock
71
- requirement: !ruby/object:Gem::Requirement
72
- requirements:
73
- - - ">="
74
- - !ruby/object:Gem::Version
75
- version: '0'
76
- type: :development
77
- prerelease: false
78
- version_requirements: !ruby/object:Gem::Requirement
79
- requirements:
80
- - - ">="
81
- - !ruby/object:Gem::Version
82
- version: '0'
11
+ date: 2021-07-16 00:00:00.000000000 Z
12
+ dependencies: []
83
13
  description: Fetches exchange rates from various sources and does the conversion
84
- email: roman.snitko@gmail.com
14
+ email: romanitup@protonmail.com
85
15
  executables: []
86
16
  extensions: []
87
17
  extra_rdoc_files: []
88
- files:
89
- - ".document"
90
- - ".gitignore"
91
- - ".rspec"
92
- - Gemfile
93
- - Gemfile.lock
94
- - LICENSE.txt
95
- - README.md
96
- - Rakefile
97
- - api_keys.yml.sample
98
- - currency-rate.gemspec
99
- - lib/adapter.rb
100
- - lib/adapters/crypto/binance_adapter.rb
101
- - lib/adapters/crypto/bitfinex_adapter.rb
102
- - lib/adapters/crypto/bitpay_adapter.rb
103
- - lib/adapters/crypto/bitstamp_adapter.rb
104
- - lib/adapters/crypto/btc_china_adapter.rb
105
- - lib/adapters/crypto/btc_e_adapter.rb
106
- - lib/adapters/crypto/coin_market_cap_adapter.rb
107
- - lib/adapters/crypto/coinbase_adapter.rb
108
- - lib/adapters/crypto/exmo_adapter.rb
109
- - lib/adapters/crypto/huobi_adapter.rb
110
- - lib/adapters/crypto/kraken_adapter.rb
111
- - lib/adapters/crypto/localbitcoins_adapter.rb
112
- - lib/adapters/crypto/okcoin_adapter.rb
113
- - lib/adapters/crypto/paxful_adapter.rb
114
- - lib/adapters/crypto/yadio_adapter.rb
115
- - lib/adapters/fiat/bonbast_adapter.rb
116
- - lib/adapters/fiat/coinmonitor_adapter.rb
117
- - lib/adapters/fiat/currency_layer_adapter.rb
118
- - lib/adapters/fiat/fixer_adapter.rb
119
- - lib/adapters/fiat/forge_adapter.rb
120
- - lib/adapters/fiat/free_forex_adapter.rb
121
- - lib/adapters/fiat/yahoo_adapter.rb
122
- - lib/configuration.rb
123
- - lib/currency_rate.rb
124
- - lib/currency_rate/version.rb
125
- - lib/fetcher.rb
126
- - lib/storage/file_storage.rb
127
- - lib/storage/serializers/yaml_serializer.rb
128
- - lib/synchronizer.rb
18
+ files: []
129
19
  homepage: https://gitlab.com/hodlhodl-public/currency-rate
130
20
  licenses: []
131
- metadata:
132
- allowed_push_host: https://rubygems.org
133
- homepage_uri: https://gitlab.com/hodlhodl-public/currency-rate
134
- source_code_uri: https://gitlab.com/hodlhodl-public/currency-rate
21
+ metadata: {}
135
22
  post_install_message:
136
23
  rdoc_options: []
137
24
  require_paths:
data/.document DELETED
@@ -1,5 +0,0 @@
1
- lib/**/*.rb
2
- bin/*
3
- -
4
- features/**/*.feature
5
- LICENSE.txt
data/.gitignore DELETED
@@ -1,20 +0,0 @@
1
- # rcov generated
2
- coverage
3
- coverage.data
4
-
5
- # rdoc generated
6
- rdoc
7
-
8
- # yard generated
9
- doc
10
- .yardoc
11
-
12
- # bundler
13
- .bundle
14
-
15
- pkg
16
-
17
- .byebug_history
18
-
19
- # Private API keys for adapters
20
- api_keys.yml
data/.rspec DELETED
@@ -1 +0,0 @@
1
- --color
data/Gemfile DELETED
@@ -1,6 +0,0 @@
1
- source "https://rubygems.org"
2
-
3
- git_source(:github) {|repo_name| "https://github.com/#{repo_name}" }
4
-
5
- # Specify your gem's dependencies in currency-rate.gemspec
6
- gemspec
data/Gemfile.lock DELETED
@@ -1,68 +0,0 @@
1
- PATH
2
- remote: .
3
- specs:
4
- currency-rate (1.6.1)
5
- http (>= 4.3)
6
-
7
- GEM
8
- remote: https://rubygems.org/
9
- specs:
10
- addressable (2.7.0)
11
- public_suffix (>= 2.0.2, < 5.0)
12
- byebug (11.0.1)
13
- crack (0.4.3)
14
- safe_yaml (~> 1.0.0)
15
- diff-lcs (1.3)
16
- domain_name (0.5.20190701)
17
- unf (>= 0.0.5, < 1.0.0)
18
- ffi (1.12.2)
19
- ffi-compiler (1.0.1)
20
- ffi (>= 1.0.0)
21
- rake
22
- hashdiff (1.0.0)
23
- http (4.4.1)
24
- addressable (~> 2.3)
25
- http-cookie (~> 1.0)
26
- http-form_data (~> 2.2)
27
- http-parser (~> 1.2.0)
28
- http-cookie (1.0.3)
29
- domain_name (~> 0.5)
30
- http-form_data (2.3.0)
31
- http-parser (1.2.1)
32
- ffi-compiler (>= 1.0, < 2.0)
33
- public_suffix (4.0.1)
34
- rake (10.5.0)
35
- rspec (3.9.0)
36
- rspec-core (~> 3.9.0)
37
- rspec-expectations (~> 3.9.0)
38
- rspec-mocks (~> 3.9.0)
39
- rspec-core (3.9.0)
40
- rspec-support (~> 3.9.0)
41
- rspec-expectations (3.9.0)
42
- diff-lcs (>= 1.2.0, < 2.0)
43
- rspec-support (~> 3.9.0)
44
- rspec-mocks (3.9.0)
45
- diff-lcs (>= 1.2.0, < 2.0)
46
- rspec-support (~> 3.9.0)
47
- rspec-support (3.9.0)
48
- safe_yaml (1.0.5)
49
- unf (0.1.4)
50
- unf_ext
51
- unf_ext (0.0.7.7)
52
- webmock (3.7.6)
53
- addressable (>= 2.3.6)
54
- crack (>= 0.3.2)
55
- hashdiff (>= 0.4.0, < 2.0.0)
56
-
57
- PLATFORMS
58
- ruby
59
-
60
- DEPENDENCIES
61
- byebug
62
- currency-rate!
63
- rake (~> 10.0)
64
- rspec (~> 3.0)
65
- webmock
66
-
67
- BUNDLED WITH
68
- 2.1.2
data/LICENSE.txt DELETED
@@ -1,20 +0,0 @@
1
- Copyright (c) 2016 Roman Snitko
2
-
3
- Permission is hereby granted, free of charge, to any person obtaining
4
- a copy of this software and associated documentation files (the
5
- "Software"), to deal in the Software without restriction, including
6
- without limitation the rights to use, copy, modify, merge, publish,
7
- distribute, sublicense, and/or sell copies of the Software, and to
8
- permit persons to whom the Software is furnished to do so, subject to
9
- the following conditions:
10
-
11
- The above copyright notice and this permission notice shall be
12
- included in all copies or substantial portions of the Software.
13
-
14
- THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
15
- EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
16
- MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
17
- NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
18
- LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
19
- OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
20
- WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
data/README.md DELETED
@@ -1,73 +0,0 @@
1
- currency-rate
2
- =============
3
-
4
- Converter for fiat and crypto currencies. Currently supports BTC and LTC.
5
-
6
- Installation
7
- ------------
8
-
9
- gem install currency-rate
10
-
11
- or in Gemfile
12
-
13
- gem "currency-rate"
14
-
15
- Configuration
16
- -------------
17
- ```ruby
18
- CurrencyRate.configure do |config|
19
- # Now only ForgeAdapter requires api key to fetch rates
20
- # Empty array by default
21
- config.api_keys["ForgeAdapter"] = "forge_api_key"
22
-
23
- # CurrencyRate::FileStorage configuration has only 'path' attribute
24
- config.file_storage[:path] = "/home/user/data" # default: ""
25
-
26
- # CurrencyRate uses default Logger from Ruby core library
27
- # It can be replaced with any compatible object
28
- # All logger values listed below are default
29
- config.logger[:device] = $stdout
30
- config.logger[:level] = :info
31
- config.logger[:formatter] = nil
32
-
33
- # Cryptocurrency exchange adapters to fetch
34
- config.crypto_adapters = ["Kraken", "Localbitcoins"]
35
-
36
- # Fiat exchange adapters to fetch
37
- config.fiat_adapters = ["Yahoo"]
38
- end
39
- ```
40
-
41
- Usage
42
- -----
43
-
44
- To fetch rates from exchanges into file storage (the only supported at this moment):
45
- ```ruby
46
- CurrencyRate.sync!
47
- ```
48
- This method will load all available data from exchanges and put into `yml` files. Failed exchanges will not create new / update exsisting files.
49
-
50
- To get rates for Crypto/Fiat currency pair use:
51
- ```ruby
52
- CurrencyRate.fetch_crypto("Bitstamp", "BTC", "USD")
53
- ```
54
-
55
- For fetching Fiat/Fiat pair:
56
- ```ruby
57
- CurrencyRate.fetch_fiat("CNY", "USD")
58
- ```
59
-
60
- Details
61
- -------
62
-
63
- `CurrencyRate` contains two parts that can work independently: Synchronizer and Fetcher.
64
- `CurrencyRate::Synchronizer` loads data from selected exchanges using adapters and saves it into FileStorage in normalized format.
65
- `CurrencyRate::Fetch` reads data from FileStorage and returns rate for requested pair and exchange.
66
-
67
- Development
68
- -----------
69
- When adapter's output format changes you can replace fixtures by running `bin/rake update_rates['ExchangeName']`.
70
- For example `bin/rake update_rates['Fixer']` will update fixtures for the FixerAdapter.
71
-
72
- Some of adapters require API keys so the task searches for 'api_keys.yml` file in project root.
73
- You can copy it from `api_keys.yml.sample` and set up your values.
data/Rakefile DELETED
@@ -1,43 +0,0 @@
1
- require 'byebug'
2
- require 'yaml'
3
- require "bundler/gem_tasks"
4
- require "rspec/core/rake_task"
5
- require_relative "lib/currency_rate"
6
-
7
- RSpec::Core::RakeTask.new(:spec)
8
-
9
- task :default => :spec
10
-
11
- desc "Update rates for specified adapter"
12
- task :update_rates, [:exchange] do |_, args|
13
- api_keys = YAML.load_file("api_keys.yml")
14
-
15
- CurrencyRate.configure do |config|
16
- api_keys.each { |name, key| config.api_keys[name] = key }
17
- end
18
-
19
- adapter = CurrencyRate::const_get("#{args.exchange}Adapter").instance
20
-
21
- print "Loading data for #{args.exchange}... "
22
- exchange_data = adapter.exchange_data
23
- raw_storage = CurrencyRate::FileStorage.new(File.expand_path("spec/fixtures/adapters", __dir__))
24
- raw_storage.write(args.exchange, exchange_data)
25
- puts "Success!"
26
-
27
- print "Normalizing data for #{args.exchange}..."
28
- normalized_data = adapter.normalize exchange_data
29
- normalized_storage = CurrencyRate::FileStorage.new(File.expand_path("spec/fixtures/adapters/normalized", __dir__))
30
- normalized_storage.write(args.exchange, normalized_data)
31
- puts "Success!"
32
-
33
- puts "#{args.exchange} fixtures update finished!"
34
- end
35
-
36
- desc "Update rates for all defined adapters"
37
- task :update_all_rates do |_, _|
38
- CurrencyRate.constants.grep(/.Adapter$/).each do |name|
39
- short_name = name.to_s.sub("Adapter", "")
40
- Rake::Task[:update_rates].invoke(short_name)
41
- Rake::Task[:update_rates].reenable
42
- end
43
- end
data/api_keys.yml.sample DELETED
@@ -1,4 +0,0 @@
1
- ForgeAdapter: "<your_key>"
2
- CurrencyLayerAdapter: "<your_key>"
3
- FixerAdapter: "<your_key>"
4
- CoinMarketCapAdapter: "<your_key>"
@@ -1,41 +0,0 @@
1
- lib = File.expand_path("../lib", __FILE__)
2
- $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
3
- require "currency_rate/version"
4
-
5
- Gem::Specification.new do |spec|
6
- spec.name = "currency-rate"
7
- spec.version = CurrencyRate::VERSION
8
- spec.authors = ["Roman Snitko"]
9
- spec.email = "roman.snitko@gmail.com"
10
-
11
- spec.summary = "Converter for fiat and crypto currencies"
12
- spec.description = "Fetches exchange rates from various sources and does the conversion"
13
- spec.homepage = "https://gitlab.com/hodlhodl-public/currency-rate"
14
-
15
- # Prevent pushing this gem to RubyGems.org. To allow pushes either set the 'allowed_push_host'
16
- # to allow pushing to a single host or delete this section to allow pushing to any host.
17
- if spec.respond_to?(:metadata)
18
- spec.metadata["allowed_push_host"] = "https://rubygems.org"
19
-
20
- spec.metadata["homepage_uri"] = spec.homepage
21
- spec.metadata["source_code_uri"] = "https://gitlab.com/hodlhodl-public/currency-rate"
22
- else
23
- raise "RubyGems 2.0 or newer is required to protect against " \
24
- "public gem pushes."
25
- end
26
-
27
- spec.files = Dir.chdir(File.expand_path('..', __FILE__)) do
28
- `git ls-files -z`.split("\x0").reject { |f| f.match(%r{^(test|spec|features)/}) }
29
- end
30
- spec.bindir = "exe"
31
- spec.executables = spec.files.grep(%r{^exe/}) { |f| File.basename(f) }
32
- spec.require_paths = ["lib"]
33
-
34
- spec.add_dependency "http", ">= 4.3"
35
-
36
- spec.add_development_dependency "byebug"
37
- spec.add_development_dependency "rake", "~> 10.0"
38
- spec.add_development_dependency "rspec", "~> 3.0"
39
- spec.add_development_dependency "webmock"
40
- end
41
-