crypto_val 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/.travis.yml +4 -2
- data/CHANGELOG.md +8 -0
- data/README.md +16 -1
- data/lib/crypto_val.rb +3 -0
- data/lib/crypto_val/list.rb +27 -0
- data/lib/crypto_val/list/crypto_coin_charts.rb +52 -0
- data/lib/crypto_val/list/crypto_compare.rb +56 -0
- data/lib/crypto_val/version.rb +1 -1
- metadata +6 -2
    
        checksums.yaml
    CHANGED
    
    | @@ -1,7 +1,7 @@ | |
| 1 1 | 
             
            ---
         | 
| 2 2 | 
             
            SHA1:
         | 
| 3 | 
            -
              metadata.gz:  | 
| 4 | 
            -
              data.tar.gz:  | 
| 3 | 
            +
              metadata.gz: f46af8c596ff1f4c7d2325e7a49c7a86337ccd70
         | 
| 4 | 
            +
              data.tar.gz: 9378b6951a07107ef657dd105297dcc183339e08
         | 
| 5 5 | 
             
            SHA512:
         | 
| 6 | 
            -
              metadata.gz:  | 
| 7 | 
            -
              data.tar.gz:  | 
| 6 | 
            +
              metadata.gz: f125f6a1774759aafd676241a5ad1a9f4b67dfc00533d93b78145bfef584712a4a0aa6bc8fc0c3e635e0cd68f49b2d9de65b1bb81f2ce1a08440a3108553ef6c
         | 
| 7 | 
            +
              data.tar.gz: 91dcd006fc8ea805b4626b2791f8a0e19f3414388b4413f8ce962f050f7bc535bf50612d3233743d919bf8234efd643f6a7e6829aa6e8c5f2366334a8a7df08d
         | 
    
        data/.travis.yml
    CHANGED
    
    
    
        data/CHANGELOG.md
    ADDED
    
    
    
        data/README.md
    CHANGED
    
    | @@ -2,7 +2,7 @@ | |
| 2 2 |  | 
| 3 3 | 
             
            CryptoVal is a Ruby gem that fetches the latest value of a Cryptocurrency. In addition, it also provides exchange rate conversion for several currencies.
         | 
| 4 4 |  | 
| 5 | 
            -
            [](https://badge.fury.io/rb/crypto_val)
         | 
| 6 6 | 
             
            [](https://travis-ci.org/marvs/cryptoval)
         | 
| 7 7 |  | 
| 8 8 | 
             
            ## Installation
         | 
| @@ -59,6 +59,21 @@ This returns the date and the current exchange rate: | |
| 59 59 |  | 
| 60 60 | 
             
            `{:source_currency=>"USD", :target_currency=>"PHP", :date=>#<Date: 2017-08-24 ((2457990j,0s,0n),+0s,2299161j)>, :rate=>51.08}`
         | 
| 61 61 |  | 
| 62 | 
            +
            ### List All Cryptocurrencies
         | 
| 63 | 
            +
             | 
| 64 | 
            +
            You can also fetch a list of cryptocurrencies and get their symbol and name.
         | 
| 65 | 
            +
             | 
| 66 | 
            +
            `CryptoVal::List.fetch`
         | 
| 67 | 
            +
             | 
| 68 | 
            +
            This returns an array of hashes, like the following:
         | 
| 69 | 
            +
             | 
| 70 | 
            +
            `[{:symbol=>"IND", :name=>"Indorse"}, {:symbol=>"PGL", :name=>"Prospectors"}]`
         | 
| 71 | 
            +
             | 
| 72 | 
            +
            Each hash contains the following data:
         | 
| 73 | 
            +
             | 
| 74 | 
            +
            * symbol - the coin symbol of the Cryptocurrency
         | 
| 75 | 
            +
            * name - the name of the Cryptocurrency
         | 
| 76 | 
            +
             | 
| 62 77 | 
             
            ## Development
         | 
| 63 78 |  | 
| 64 79 | 
             
            After checking out the repo, run `bin/setup` to install dependencies. Then, run `rake test` to run the tests. You can also run `bin/console` for an interactive prompt that will allow you to experiment.
         | 
    
        data/lib/crypto_val.rb
    CHANGED
    
    | @@ -6,6 +6,9 @@ require "crypto_val/crypto_exchange/cryptonator" | |
| 6 6 | 
             
            require "crypto_val/fiat_exchange"
         | 
| 7 7 | 
             
            require "crypto_val/fiat_exchange/fixer"
         | 
| 8 8 | 
             
            require "crypto_val/latest"
         | 
| 9 | 
            +
            require "crypto_val/list"
         | 
| 10 | 
            +
            require "crypto_val/list/crypto_compare"
         | 
| 11 | 
            +
            require "crypto_val/list/crypto_coin_charts"
         | 
| 9 12 |  | 
| 10 13 | 
             
            module CryptoVal
         | 
| 11 14 | 
             
            end
         | 
| @@ -0,0 +1,27 @@ | |
| 1 | 
            +
            module CryptoVal
         | 
| 2 | 
            +
              class List
         | 
| 3 | 
            +
                # Gets all cryptocurrency name and symbols
         | 
| 4 | 
            +
                
         | 
| 5 | 
            +
                def initialize opts={}
         | 
| 6 | 
            +
                  @list_klass = opts[:list_klass] || CryptoVal::List::CryptoCompare
         | 
| 7 | 
            +
                end
         | 
| 8 | 
            +
                
         | 
| 9 | 
            +
                def fetch
         | 
| 10 | 
            +
                  formatted
         | 
| 11 | 
            +
                end
         | 
| 12 | 
            +
                
         | 
| 13 | 
            +
                def self.fetch opts={}
         | 
| 14 | 
            +
                  new(opts).fetch
         | 
| 15 | 
            +
                end
         | 
| 16 | 
            +
              
         | 
| 17 | 
            +
                private
         | 
| 18 | 
            +
                
         | 
| 19 | 
            +
                def default_data
         | 
| 20 | 
            +
                  @default_data ||= @list_klass.fetch
         | 
| 21 | 
            +
                end
         | 
| 22 | 
            +
                
         | 
| 23 | 
            +
                def formatted
         | 
| 24 | 
            +
                  @formatted ||= default_data.map{|d| { symbol: d[:symbol], name: d[:name] } }
         | 
| 25 | 
            +
                end
         | 
| 26 | 
            +
              end
         | 
| 27 | 
            +
            end
         | 
| @@ -0,0 +1,52 @@ | |
| 1 | 
            +
            module CryptoVal
         | 
| 2 | 
            +
              class List::CryptoCoinCharts
         | 
| 3 | 
            +
                
         | 
| 4 | 
            +
                def fetch
         | 
| 5 | 
            +
                  format_response
         | 
| 6 | 
            +
                end
         | 
| 7 | 
            +
                
         | 
| 8 | 
            +
                def self.fetch
         | 
| 9 | 
            +
                  new.fetch
         | 
| 10 | 
            +
                end
         | 
| 11 | 
            +
                
         | 
| 12 | 
            +
                private
         | 
| 13 | 
            +
                
         | 
| 14 | 
            +
                def base_url
         | 
| 15 | 
            +
                  "https://api.cryptocoincharts.info"
         | 
| 16 | 
            +
                end
         | 
| 17 | 
            +
                
         | 
| 18 | 
            +
                def url
         | 
| 19 | 
            +
                  "#{base_url}/listCoins"
         | 
| 20 | 
            +
                end
         | 
| 21 | 
            +
                
         | 
| 22 | 
            +
                def response
         | 
| 23 | 
            +
                  @response ||= get_response
         | 
| 24 | 
            +
                end
         | 
| 25 | 
            +
                
         | 
| 26 | 
            +
                def get_response
         | 
| 27 | 
            +
                  uri = URI.parse(url)
         | 
| 28 | 
            +
                  http = Net::HTTP.new(uri.host, uri.port)
         | 
| 29 | 
            +
                  http.use_ssl = true
         | 
| 30 | 
            +
                  request = Net::HTTP::Get.new(uri.request_uri)
         | 
| 31 | 
            +
                  http.request(request).body
         | 
| 32 | 
            +
                end
         | 
| 33 | 
            +
                
         | 
| 34 | 
            +
                def parsed
         | 
| 35 | 
            +
                  @parsed ||= JSON.parse(response)
         | 
| 36 | 
            +
                end
         | 
| 37 | 
            +
                
         | 
| 38 | 
            +
                def format_response
         | 
| 39 | 
            +
                  list = []
         | 
| 40 | 
            +
                  parsed.each do |data|
         | 
| 41 | 
            +
                    if data.is_a?(Hash)
         | 
| 42 | 
            +
                      list << { 
         | 
| 43 | 
            +
                                symbol: data["id"].upcase, 
         | 
| 44 | 
            +
                                name: data["name"] 
         | 
| 45 | 
            +
                              }
         | 
| 46 | 
            +
                    end
         | 
| 47 | 
            +
                  end
         | 
| 48 | 
            +
                  list
         | 
| 49 | 
            +
                end
         | 
| 50 | 
            +
             | 
| 51 | 
            +
              end
         | 
| 52 | 
            +
            end
         | 
| @@ -0,0 +1,56 @@ | |
| 1 | 
            +
            module CryptoVal
         | 
| 2 | 
            +
              class List::CryptoCompare
         | 
| 3 | 
            +
                
         | 
| 4 | 
            +
                def fetch
         | 
| 5 | 
            +
                  format_response
         | 
| 6 | 
            +
                end
         | 
| 7 | 
            +
                
         | 
| 8 | 
            +
                def self.fetch
         | 
| 9 | 
            +
                  new.fetch
         | 
| 10 | 
            +
                end
         | 
| 11 | 
            +
                
         | 
| 12 | 
            +
                private
         | 
| 13 | 
            +
                
         | 
| 14 | 
            +
                def base_url
         | 
| 15 | 
            +
                  "https://www.cryptocompare.com"
         | 
| 16 | 
            +
                end
         | 
| 17 | 
            +
                
         | 
| 18 | 
            +
                def url
         | 
| 19 | 
            +
                  "#{base_url}/api/data/coinlist"
         | 
| 20 | 
            +
                end
         | 
| 21 | 
            +
                
         | 
| 22 | 
            +
                def response
         | 
| 23 | 
            +
                  @response ||= get_response
         | 
| 24 | 
            +
                end
         | 
| 25 | 
            +
                
         | 
| 26 | 
            +
                def get_response
         | 
| 27 | 
            +
                  uri = URI.parse(url)
         | 
| 28 | 
            +
                  http = Net::HTTP.new(uri.host, uri.port)
         | 
| 29 | 
            +
                  http.use_ssl = true
         | 
| 30 | 
            +
                  request = Net::HTTP::Get.new(uri.request_uri)
         | 
| 31 | 
            +
                  http.request(request).body
         | 
| 32 | 
            +
                end
         | 
| 33 | 
            +
                
         | 
| 34 | 
            +
                def parsed
         | 
| 35 | 
            +
                  @parsed ||= JSON.parse(response)
         | 
| 36 | 
            +
                end
         | 
| 37 | 
            +
                
         | 
| 38 | 
            +
                def format_response
         | 
| 39 | 
            +
                  list = []
         | 
| 40 | 
            +
                  parsed["Data"].keys.each do |key|
         | 
| 41 | 
            +
                    data = parsed["Data"][key]
         | 
| 42 | 
            +
                    if data.is_a?(Hash)
         | 
| 43 | 
            +
                      logo = data["ImageUrl"].to_s.empty? ? "" : "#{base_url}#{data["ImageUrl"]}"
         | 
| 44 | 
            +
                      list << { 
         | 
| 45 | 
            +
                                symbol: data["Name"], 
         | 
| 46 | 
            +
                                name: data["CoinName"],
         | 
| 47 | 
            +
                                logo: logo,
         | 
| 48 | 
            +
                                algorithm: data["Algorithm"] 
         | 
| 49 | 
            +
                              }
         | 
| 50 | 
            +
                    end
         | 
| 51 | 
            +
                  end
         | 
| 52 | 
            +
                  list
         | 
| 53 | 
            +
                end
         | 
| 54 | 
            +
             | 
| 55 | 
            +
              end
         | 
| 56 | 
            +
            end
         | 
    
        data/lib/crypto_val/version.rb
    CHANGED
    
    
    
        metadata
    CHANGED
    
    | @@ -1,14 +1,14 @@ | |
| 1 1 | 
             
            --- !ruby/object:Gem::Specification
         | 
| 2 2 | 
             
            name: crypto_val
         | 
| 3 3 | 
             
            version: !ruby/object:Gem::Version
         | 
| 4 | 
            -
              version: 0. | 
| 4 | 
            +
              version: 0.2.0
         | 
| 5 5 | 
             
            platform: ruby
         | 
| 6 6 | 
             
            authors:
         | 
| 7 7 | 
             
            - Marvin Baltazar
         | 
| 8 8 | 
             
            autorequire: 
         | 
| 9 9 | 
             
            bindir: exe
         | 
| 10 10 | 
             
            cert_chain: []
         | 
| 11 | 
            -
            date: 2017-09- | 
| 11 | 
            +
            date: 2017-09-08 00:00:00.000000000 Z
         | 
| 12 12 | 
             
            dependencies:
         | 
| 13 13 | 
             
            - !ruby/object:Gem::Dependency
         | 
| 14 14 | 
             
              name: bundler
         | 
| @@ -60,6 +60,7 @@ extensions: [] | |
| 60 60 | 
             
            extra_rdoc_files: []
         | 
| 61 61 | 
             
            files:
         | 
| 62 62 | 
             
            - ".travis.yml"
         | 
| 63 | 
            +
            - CHANGELOG.md
         | 
| 63 64 | 
             
            - CODE_OF_CONDUCT.md
         | 
| 64 65 | 
             
            - Gemfile
         | 
| 65 66 | 
             
            - Gemfile.lock
         | 
| @@ -74,6 +75,9 @@ files: | |
| 74 75 | 
             
            - lib/crypto_val/fiat_exchange.rb
         | 
| 75 76 | 
             
            - lib/crypto_val/fiat_exchange/fixer.rb
         | 
| 76 77 | 
             
            - lib/crypto_val/latest.rb
         | 
| 78 | 
            +
            - lib/crypto_val/list.rb
         | 
| 79 | 
            +
            - lib/crypto_val/list/crypto_coin_charts.rb
         | 
| 80 | 
            +
            - lib/crypto_val/list/crypto_compare.rb
         | 
| 77 81 | 
             
            - lib/crypto_val/version.rb
         | 
| 78 82 | 
             
            homepage: https://github.com/marvs/cryptoval
         | 
| 79 83 | 
             
            licenses:
         |