cryptoexchange 0.20.0 → 0.21.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/README.md +9 -1
- data/cryptoexchange.gemspec +4 -4
- data/lib/cryptoexchange/client.rb +3 -0
- data/lib/cryptoexchange/error.rb +6 -0
- data/lib/cryptoexchange/exchanges/anx/services/market.rb +4 -7
- data/lib/cryptoexchange/exchanges/bancor/market.rb +8 -0
- data/lib/cryptoexchange/exchanges/bancor/services/market.rb +36 -0
- data/lib/cryptoexchange/exchanges/bancor/services/pair.rb +24 -0
- data/lib/cryptoexchange/exchanges/bigone/market.rb +8 -0
- data/lib/cryptoexchange/exchanges/bigone/services/market.rb +49 -0
- data/lib/cryptoexchange/exchanges/bigone/services/order_book.rb +44 -0
- data/lib/cryptoexchange/exchanges/bigone/services/pairs.rb +23 -0
- data/lib/cryptoexchange/exchanges/bigone/services/trades.rb +32 -0
- data/lib/cryptoexchange/exchanges/bitflyer/services/market.rb +4 -5
- data/lib/cryptoexchange/exchanges/bittrex/services/market.rb +7 -0
- data/lib/cryptoexchange/exchanges/coinbene/market.rb +8 -0
- data/lib/cryptoexchange/exchanges/coinbene/services/market.rb +52 -0
- data/lib/cryptoexchange/exchanges/coinbene/services/order_book.rb +43 -0
- data/lib/cryptoexchange/exchanges/coinbene/services/pairs.rb +27 -0
- data/lib/cryptoexchange/exchanges/coinbene/services/trades.rb +32 -0
- data/lib/cryptoexchange/exchanges/cryptopia/services/market.rb +7 -0
- data/lib/cryptoexchange/exchanges/ethfinex/market.rb +8 -0
- data/lib/cryptoexchange/exchanges/ethfinex/services/market.rb +52 -0
- data/lib/cryptoexchange/exchanges/ethfinex/services/order_book.rb +52 -0
- data/lib/cryptoexchange/exchanges/ethfinex/services/pairs.rb +26 -0
- data/lib/cryptoexchange/exchanges/ethfinex/services/trades.rb +33 -0
- data/lib/cryptoexchange/exchanges/koinex/market.rb +8 -0
- data/lib/cryptoexchange/exchanges/koinex/services/market.rb +49 -0
- data/lib/cryptoexchange/exchanges/koinex/services/pairs.rb +26 -0
- data/lib/cryptoexchange/exchanges/liqui/services/market.rb +7 -0
- data/lib/cryptoexchange/exchanges/novaexchange/services/market.rb +7 -0
- data/lib/cryptoexchange/exchanges/radar_relay/market.rb +8 -0
- data/lib/cryptoexchange/exchanges/radar_relay/radar_relay.yml +409 -0
- data/lib/cryptoexchange/exchanges/radar_relay/services/market.rb +44 -0
- data/lib/cryptoexchange/exchanges/radar_relay/services/pairs.rb +22 -0
- data/lib/cryptoexchange/exchanges/trade_ogre/market.rb +8 -0
- data/lib/cryptoexchange/exchanges/trade_ogre/services/market.rb +48 -0
- data/lib/cryptoexchange/exchanges/trade_ogre/services/order_book.rb +46 -0
- data/lib/cryptoexchange/exchanges/trade_ogre/services/pairs.rb +25 -0
- data/lib/cryptoexchange/exchanges/trade_ogre/services/trades.rb +31 -0
- data/lib/cryptoexchange/exchanges/zb/market.rb +8 -0
- data/lib/cryptoexchange/exchanges/zb/services/market.rb +39 -0
- data/lib/cryptoexchange/exchanges/zb/services/order_book.rb +44 -0
- data/lib/cryptoexchange/exchanges/zb/services/pairs.rb +24 -0
- data/lib/cryptoexchange/exchanges/zb/services/trades.rb +32 -0
- data/lib/cryptoexchange/helpers/numeric_helper.rb +2 -0
- data/lib/cryptoexchange/services/market.rb +2 -0
- data/lib/cryptoexchange/services/pairs.rb +7 -1
- data/lib/cryptoexchange/version.rb +1 -1
- metadata +45 -10
    
        checksums.yaml
    CHANGED
    
    | @@ -1,7 +1,7 @@ | |
| 1 1 | 
             
            ---
         | 
| 2 2 | 
             
            SHA1:
         | 
| 3 | 
            -
              metadata.gz:  | 
| 4 | 
            -
              data.tar.gz:  | 
| 3 | 
            +
              metadata.gz: 1c054b25d99833ec0d63d8ebc81eb3d8b2c2827b
         | 
| 4 | 
            +
              data.tar.gz: 9221b11da94fd846c3860f169dc741c356298f72
         | 
| 5 5 | 
             
            SHA512:
         | 
| 6 | 
            -
              metadata.gz:  | 
| 7 | 
            -
              data.tar.gz:  | 
| 6 | 
            +
              metadata.gz: f3e4ef7744e1763799bbc363646fbad893c22a314d32d383e727119fc72ad1059264825beee26fbc03ff3c0aebc6f1a7d20166070e145478338d6b0e5098dcee
         | 
| 7 | 
            +
              data.tar.gz: 72f18cfd2ab6805997dc9be5a2e1cdc2b69cbe8ea1436190334578c49d38e44f24e0160883b5fa8903bb3d61cc8cd796ffe6a28df5d55cb2d598ebfe945d0561
         | 
    
        data/README.md
    CHANGED
    
    | @@ -28,7 +28,9 @@ Or install it yourself as: | |
| 28 28 | 
             
            | ACX               | Y       | Y          | Y       |         | Y           |
         | 
| 29 29 | 
             
            | Allcoin           | Y       | Y          |         |         | User-Defined|
         | 
| 30 30 | 
             
            | ANX               | Y       |            |         |         | User-Defined|
         | 
| 31 | 
            +
            | Bancor            | Y       | N          | N       |         | Y           |
         | 
| 31 32 | 
             
            | Bibox             | Y       | Y          | Y       |         | Y           |
         | 
| 33 | 
            +
            | BigONE            | Y       | Y          | Y       |         | Y           |
         | 
| 32 34 | 
             
            | Bit-Z             | Y       |            |         |         | Y           |
         | 
| 33 35 | 
             
            | Binance           | Y       | Y          |         |         | Y           |
         | 
| 34 36 | 
             
            | Bitbay            | Y       |            |         |         | User-Defined|
         | 
| @@ -54,6 +56,7 @@ Or install it yourself as: | |
| 54 56 | 
             
            | Cobinhood         | Y       | Y          |         |         | Y           |
         | 
| 55 57 | 
             
            | Coincheck         | Y       |            |         |         | User-Defined|
         | 
| 56 58 | 
             
            | CoinExchange      | Y       |            |         |         | Y           |
         | 
| 59 | 
            +
            | Coinbene          | Y       | Y          | Y       |         | Y           |
         | 
| 57 60 | 
             
            | Coinmate          | Y       | Y          |         |         | User-Defined|
         | 
| 58 61 | 
             
            | Coinnest          | Y       | Y          | Y       |         | User-Defined|
         | 
| 59 62 | 
             
            | Coinone           | Y       |            |         |         | Y           |
         | 
| @@ -62,6 +65,7 @@ Or install it yourself as: | |
| 62 65 | 
             
            | CryptoBridge      | Y       |            |         |         | Y           |
         | 
| 63 66 | 
             
            | Cryptopia         | Y       | Y          | Y       |         | Y           |
         | 
| 64 67 | 
             
            | EtherDelta        | Y       |            |         |         | Y           |
         | 
| 68 | 
            +
            | Ethfinex          | Y       | Y          | Y       |         | Y           |
         | 
| 65 69 | 
             
            | Exmo              | Y       | Y          | Y       |         | Y           |
         | 
| 66 70 | 
             
            | Gate              | Y       | Y          | Y       |         | Y           |
         | 
| 67 71 | 
             
            | Gatecoin          | Y       |            |         |         | Y           |
         | 
| @@ -73,6 +77,7 @@ Or install it yourself as: | |
| 73 77 | 
             
            | Itbit             | Y       |            |         |         | User-Defined|
         | 
| 74 78 | 
             
            | KKex              | Y       | Y          | Y       |         | Y           |
         | 
| 75 79 | 
             
            | Jubi              | Y       |            |         |         | Y           |
         | 
| 80 | 
            +
            | Koinex            | Y       |            |         |         | Y           |
         | 
| 76 81 | 
             
            | Korbit            | Y       |            |         |         | User-Defined|
         | 
| 77 82 | 
             
            | Kraken            | Y       |            |         |         | Y           |
         | 
| 78 83 | 
             
            | Kucoin            | Y       |            |         |         | Y           |
         | 
| @@ -93,19 +98,22 @@ Or install it yourself as: | |
| 93 98 | 
             
            | Qryptos           | Y       |            |         |         | Y           |
         | 
| 94 99 | 
             
            | QuadrigaCX        | Y       |            |         |         | User-Defined|
         | 
| 95 100 | 
             
            | Quoine            | Y       |            |         |         | Y           |
         | 
| 101 | 
            +
            | RadarRelay        | Y       |            |         |         | User-Defined|
         | 
| 96 102 | 
             
            | Stocks Exchange   | Y       |            |         |         | Y           |
         | 
| 97 103 | 
             
            | SZZC              | Y       |            |         |         | Y           |
         | 
| 98 104 | 
             
            | The Rock Trading  | Y       |            |         |         | Y           |
         | 
| 99 105 | 
             
            | Tidex             | Y       |            |         |         | Y           |
         | 
| 106 | 
            +
            | TradeOgre         | Y       | Y          | Y       |         | Y           |
         | 
| 100 107 | 
             
            | Trade Satoshi     | Y       |            |         |         | Y           |
         | 
| 101 108 | 
             
            | TuxExchange       | Y       |            |         |         | Y           |
         | 
| 102 109 | 
             
            | Unocoin           |         |            |         |         |             |
         | 
| 103 110 | 
             
            | Viabtc            | Y       |            |         |         | User-Defined|
         | 
| 104 | 
            -
            | Wex               | Y       | Y          | | 
| 111 | 
            +
            | Wex               | Y       | Y          | Y       |         | Y           |
         | 
| 105 112 | 
             
            | Yobit             | Y       |            |         |         | Y           |
         | 
| 106 113 | 
             
            | Yuanbao           | Y       |            |         |         | User-Defined|
         | 
| 107 114 | 
             
            | Yunbi             | Y       |            |         |         | Y           |
         | 
| 108 115 | 
             
            | Zaif              | Y       | Y          | Y       |         | Y           |
         | 
| 116 | 
            +
            | ZB                | Y       | Y          | Y       |         | Y           |
         | 
| 109 117 |  | 
| 110 118 | 
             
            ## Usage
         | 
| 111 119 |  | 
    
        data/cryptoexchange.gemspec
    CHANGED
    
    | @@ -26,9 +26,9 @@ Gem::Specification.new do |spec| | |
| 26 26 | 
             
              spec.add_development_dependency "rspec", "~> 3.0"
         | 
| 27 27 | 
             
              spec.add_development_dependency "pry"
         | 
| 28 28 | 
             
              spec.add_development_dependency "rb-readline"
         | 
| 29 | 
            -
              spec.add_development_dependency "vcr", "~>  | 
| 30 | 
            -
              spec.add_development_dependency "webmock"
         | 
| 31 | 
            -
             | 
| 32 | 
            -
              spec.add_dependency "http", '~>  | 
| 29 | 
            +
              spec.add_development_dependency "vcr", "~> 4.0.0"
         | 
| 30 | 
            +
              spec.add_development_dependency "webmock", '~> 3.3.0'
         | 
| 31 | 
            +
             | 
| 32 | 
            +
              spec.add_dependency "http", '~> 3.0.0'
         | 
| 33 33 | 
             
              spec.add_dependency "lru_redux"
         | 
| 34 34 | 
             
            end
         | 
    
        data/lib/cryptoexchange/error.rb
    CHANGED
    
    | @@ -5,6 +5,9 @@ module Cryptoexchange | |
| 5 5 | 
             
              class HttpResponseError < Error
         | 
| 6 6 | 
             
              end
         | 
| 7 7 |  | 
| 8 | 
            +
              class HttpBadRequestError < Error
         | 
| 9 | 
            +
              end
         | 
| 10 | 
            +
             | 
| 8 11 | 
             
              class HttpConnectionError < Error
         | 
| 9 12 | 
             
              end
         | 
| 10 13 |  | 
| @@ -16,4 +19,7 @@ module Cryptoexchange | |
| 16 19 |  | 
| 17 20 | 
             
              class TypeFormatError < Error
         | 
| 18 21 | 
             
              end
         | 
| 22 | 
            +
             | 
| 23 | 
            +
              class ResultParseError < Error
         | 
| 24 | 
            +
              end
         | 
| 19 25 | 
             
            end
         | 
| @@ -10,20 +10,17 @@ module Cryptoexchange::Exchanges | |
| 10 10 |  | 
| 11 11 | 
             
                    def fetch(market_pair)
         | 
| 12 12 | 
             
                      output = super(ticker_url(market_pair))
         | 
| 13 | 
            -
                      adapt(output)
         | 
| 13 | 
            +
                      adapt(output, market_pair)
         | 
| 14 14 | 
             
                    end
         | 
| 15 15 |  | 
| 16 16 | 
             
                    def ticker_url(market_pair)
         | 
| 17 17 | 
             
                      "#{Cryptoexchange::Exchanges::Anx::Market::API_URL}/#{market_pair.base}#{market_pair.target}/money/ticker"
         | 
| 18 18 | 
             
                    end
         | 
| 19 19 |  | 
| 20 | 
            -
                    def adapt(output)
         | 
| 20 | 
            +
                    def adapt(output, market_pair)
         | 
| 21 21 | 
             
                      ticker = Cryptoexchange::Models::Ticker.new
         | 
| 22 | 
            -
                      base | 
| 23 | 
            -
                      target | 
| 24 | 
            -
             | 
| 25 | 
            -
                      ticker.base      = base
         | 
| 26 | 
            -
                      ticker.target    = target
         | 
| 22 | 
            +
                      ticker.base      = market_pair.base
         | 
| 23 | 
            +
                      ticker.target    = market_pair.target
         | 
| 27 24 | 
             
                      ticker.market    = Anx::Market::NAME
         | 
| 28 25 | 
             
                      ticker.ask       = NumericHelper.to_d(output['data']['sell']['value'])
         | 
| 29 26 | 
             
                      ticker.bid       = NumericHelper.to_d(output['data']['buy']['value'])
         | 
| @@ -0,0 +1,36 @@ | |
| 1 | 
            +
            module Cryptoexchange::Exchanges
         | 
| 2 | 
            +
              module Bancor
         | 
| 3 | 
            +
                module Services
         | 
| 4 | 
            +
                  class Market < Cryptoexchange::Services::Market
         | 
| 5 | 
            +
                    class << self
         | 
| 6 | 
            +
                      def supports_individual_ticker_query?
         | 
| 7 | 
            +
                        true
         | 
| 8 | 
            +
                      end
         | 
| 9 | 
            +
                    end
         | 
| 10 | 
            +
             | 
| 11 | 
            +
                    def fetch(market_pair)
         | 
| 12 | 
            +
                      output = super(ticker_url(market_pair))
         | 
| 13 | 
            +
                      adapt(output, market_pair)
         | 
| 14 | 
            +
                    end
         | 
| 15 | 
            +
             | 
| 16 | 
            +
                    def ticker_url(market_pair)
         | 
| 17 | 
            +
                      "#{Cryptoexchange::Exchanges::Bancor::Market::API_URL}/currencies/#{market_pair.base}/ticker?fromCurrencyCode=#{market_pair.target}"
         | 
| 18 | 
            +
                    end
         | 
| 19 | 
            +
             | 
| 20 | 
            +
                    def adapt(output, market_pair)
         | 
| 21 | 
            +
                      ticker = Cryptoexchange::Models::Ticker.new
         | 
| 22 | 
            +
                      ticker.base      = market_pair.base
         | 
| 23 | 
            +
                      ticker.target    = market_pair.target
         | 
| 24 | 
            +
                      ticker.market    = Bancor::Market::NAME
         | 
| 25 | 
            +
                      ticker.last      = NumericHelper.to_d(output['data']['price'])
         | 
| 26 | 
            +
                      ticker.high      = NumericHelper.to_d(output['data']['price24hLow'])
         | 
| 27 | 
            +
                      ticker.low       = NumericHelper.to_d(output['data']['price24hLow'])
         | 
| 28 | 
            +
                      ticker.volume    = NumericHelper.divide(NumericHelper.to_d(output['data']['volume24h'].to_f / 10 ** 18), ticker.last)
         | 
| 29 | 
            +
                      ticker.timestamp = Time.now.to_i
         | 
| 30 | 
            +
                      ticker.payload   = output
         | 
| 31 | 
            +
                      ticker
         | 
| 32 | 
            +
                    end
         | 
| 33 | 
            +
                  end
         | 
| 34 | 
            +
                end
         | 
| 35 | 
            +
              end
         | 
| 36 | 
            +
            end
         | 
| @@ -0,0 +1,24 @@ | |
| 1 | 
            +
            module Cryptoexchange::Exchanges
         | 
| 2 | 
            +
              module Bancor
         | 
| 3 | 
            +
                module Services
         | 
| 4 | 
            +
                  class Pairs < Cryptoexchange::Services::Pairs
         | 
| 5 | 
            +
                    PAIRS_URL = "#{Cryptoexchange::Exchanges::Bancor::Market::API_URL}/currencies/convertiblePairs"
         | 
| 6 | 
            +
             | 
| 7 | 
            +
                    def fetch
         | 
| 8 | 
            +
                      output = super
         | 
| 9 | 
            +
                      adapt(output)
         | 
| 10 | 
            +
                    end
         | 
| 11 | 
            +
             | 
| 12 | 
            +
                    def adapt(output)
         | 
| 13 | 
            +
                      output['data'].map do |base, target|
         | 
| 14 | 
            +
                        Cryptoexchange::Models::MarketPair.new(
         | 
| 15 | 
            +
                          base: base,
         | 
| 16 | 
            +
                          target: target,
         | 
| 17 | 
            +
                          market: Bancor::Market::NAME
         | 
| 18 | 
            +
                        )
         | 
| 19 | 
            +
                      end
         | 
| 20 | 
            +
                    end
         | 
| 21 | 
            +
                  end
         | 
| 22 | 
            +
                end
         | 
| 23 | 
            +
              end
         | 
| 24 | 
            +
            end
         | 
| @@ -0,0 +1,49 @@ | |
| 1 | 
            +
            module Cryptoexchange::Exchanges
         | 
| 2 | 
            +
              module Bigone
         | 
| 3 | 
            +
                module Services
         | 
| 4 | 
            +
                  class Market < Cryptoexchange::Services::Market
         | 
| 5 | 
            +
                    class << self
         | 
| 6 | 
            +
                      def supports_individual_ticker_query?
         | 
| 7 | 
            +
                        false
         | 
| 8 | 
            +
                      end
         | 
| 9 | 
            +
                    end
         | 
| 10 | 
            +
             | 
| 11 | 
            +
                    def fetch
         | 
| 12 | 
            +
                      output = super(ticker_url)
         | 
| 13 | 
            +
                      adapt_all(output)
         | 
| 14 | 
            +
                    end
         | 
| 15 | 
            +
             | 
| 16 | 
            +
                    def ticker_url
         | 
| 17 | 
            +
                      "#{Cryptoexchange::Exchanges::Bigone::Market::API_URL}/markets"
         | 
| 18 | 
            +
                    end
         | 
| 19 | 
            +
             | 
| 20 | 
            +
                    def adapt_all(output)
         | 
| 21 | 
            +
                      output['data'].map do |pair|
         | 
| 22 | 
            +
                        base = pair['quote']
         | 
| 23 | 
            +
                        target = pair['base']
         | 
| 24 | 
            +
                        market_pair = Cryptoexchange::Models::MarketPair.new(
         | 
| 25 | 
            +
                                        base: base,
         | 
| 26 | 
            +
                                        target: target,
         | 
| 27 | 
            +
                                        market: Bigone::Market::NAME
         | 
| 28 | 
            +
                                      )
         | 
| 29 | 
            +
                        adapt(market_pair, pair['ticker'])
         | 
| 30 | 
            +
                      end
         | 
| 31 | 
            +
                    end
         | 
| 32 | 
            +
             | 
| 33 | 
            +
                    def adapt(market_pair, output)
         | 
| 34 | 
            +
                      ticker = Cryptoexchange::Models::Ticker.new
         | 
| 35 | 
            +
                      ticker.base = market_pair.base
         | 
| 36 | 
            +
                      ticker.target = market_pair.target
         | 
| 37 | 
            +
                      ticker.market = Bigone::Market::NAME
         | 
| 38 | 
            +
                      ticker.last = NumericHelper.to_d(output['price'].to_f)
         | 
| 39 | 
            +
                      ticker.high = NumericHelper.to_d(output['high'].to_f)
         | 
| 40 | 
            +
                      ticker.low = NumericHelper.to_d(output['low'].to_f)
         | 
| 41 | 
            +
                      ticker.volume = NumericHelper.to_d(output['volume'].to_f)
         | 
| 42 | 
            +
                      ticker.timestamp = Time.now.to_i
         | 
| 43 | 
            +
                      ticker.payload = output
         | 
| 44 | 
            +
                      ticker
         | 
| 45 | 
            +
                    end
         | 
| 46 | 
            +
                  end
         | 
| 47 | 
            +
                end
         | 
| 48 | 
            +
              end
         | 
| 49 | 
            +
            end
         | 
| @@ -0,0 +1,44 @@ | |
| 1 | 
            +
            module Cryptoexchange::Exchanges
         | 
| 2 | 
            +
              module Bigone
         | 
| 3 | 
            +
                module Services
         | 
| 4 | 
            +
                  class OrderBook < Cryptoexchange::Services::Market
         | 
| 5 | 
            +
                    class << self
         | 
| 6 | 
            +
                      def supports_individual_ticker_query?
         | 
| 7 | 
            +
                        true
         | 
| 8 | 
            +
                      end
         | 
| 9 | 
            +
                    end
         | 
| 10 | 
            +
             | 
| 11 | 
            +
                    def fetch(market_pair)
         | 
| 12 | 
            +
                      output = super(ticker_url(market_pair))
         | 
| 13 | 
            +
                      adapt(output, market_pair)
         | 
| 14 | 
            +
                    end
         | 
| 15 | 
            +
             | 
| 16 | 
            +
                    def ticker_url(market_pair)
         | 
| 17 | 
            +
                      "#{Cryptoexchange::Exchanges::Bigone::Market::API_URL}/markets/#{market_pair.base}-#{market_pair.target}/book"
         | 
| 18 | 
            +
                    end
         | 
| 19 | 
            +
             | 
| 20 | 
            +
                    def adapt(output, market_pair)
         | 
| 21 | 
            +
                      order_book = Cryptoexchange::Models::OrderBook.new
         | 
| 22 | 
            +
                      timestamp = Time.now.to_i
         | 
| 23 | 
            +
             | 
| 24 | 
            +
                      order_book.base      = market_pair.base
         | 
| 25 | 
            +
                      order_book.target    = market_pair.target
         | 
| 26 | 
            +
                      order_book.market    = Bigone::Market::NAME
         | 
| 27 | 
            +
                      order_book.asks      = adapt_orders(output["data"]["asks"])
         | 
| 28 | 
            +
                      order_book.bids      = adapt_orders(output["data"]["bids"])
         | 
| 29 | 
            +
                      order_book.timestamp = timestamp
         | 
| 30 | 
            +
                      order_book.payload   = output
         | 
| 31 | 
            +
                      order_book
         | 
| 32 | 
            +
                    end
         | 
| 33 | 
            +
             | 
| 34 | 
            +
                    def adapt_orders(orders)
         | 
| 35 | 
            +
                      orders.collect do |order_entry|
         | 
| 36 | 
            +
                        Cryptoexchange::Models::Order.new(price: order_entry["price"],
         | 
| 37 | 
            +
                                                          amount: order_entry["amount"],
         | 
| 38 | 
            +
                                                          timestamp: nil)
         | 
| 39 | 
            +
                      end
         | 
| 40 | 
            +
                    end
         | 
| 41 | 
            +
                  end
         | 
| 42 | 
            +
                end
         | 
| 43 | 
            +
              end
         | 
| 44 | 
            +
            end
         | 
| @@ -0,0 +1,23 @@ | |
| 1 | 
            +
            module Cryptoexchange::Exchanges
         | 
| 2 | 
            +
              module Bigone
         | 
| 3 | 
            +
                module Services
         | 
| 4 | 
            +
                  class Pairs < Cryptoexchange::Services::Pairs
         | 
| 5 | 
            +
                    PAIRS_URL = "#{Cryptoexchange::Exchanges::Bigone::Market::API_URL}/markets"
         | 
| 6 | 
            +
             | 
| 7 | 
            +
                    def fetch
         | 
| 8 | 
            +
                      output = super
         | 
| 9 | 
            +
                      market_pairs = []
         | 
| 10 | 
            +
                      output['data'].each do |pair|
         | 
| 11 | 
            +
                        market_pairs << Cryptoexchange::Models::MarketPair.new(
         | 
| 12 | 
            +
                                          base: pair['quote'],
         | 
| 13 | 
            +
                                          target: pair['base'],
         | 
| 14 | 
            +
                                          market: Bigone::Market::NAME
         | 
| 15 | 
            +
                                        )
         | 
| 16 | 
            +
                      end
         | 
| 17 | 
            +
                      market_pairs
         | 
| 18 | 
            +
                    end
         | 
| 19 | 
            +
             | 
| 20 | 
            +
                  end
         | 
| 21 | 
            +
                end
         | 
| 22 | 
            +
              end
         | 
| 23 | 
            +
            end
         | 
| @@ -0,0 +1,32 @@ | |
| 1 | 
            +
            module Cryptoexchange::Exchanges
         | 
| 2 | 
            +
              module Bigone
         | 
| 3 | 
            +
                module Services
         | 
| 4 | 
            +
                  class Trades < Cryptoexchange::Services::Market
         | 
| 5 | 
            +
                    def fetch(market_pair)
         | 
| 6 | 
            +
                      output = super(ticker_url(market_pair))
         | 
| 7 | 
            +
                      adapt(output, market_pair)
         | 
| 8 | 
            +
                    end
         | 
| 9 | 
            +
             | 
| 10 | 
            +
                    def ticker_url(market_pair)
         | 
| 11 | 
            +
                      "#{Cryptoexchange::Exchanges::Bigone::Market::API_URL}/markets/#{market_pair.base}-#{market_pair.target}/trades"
         | 
| 12 | 
            +
                    end
         | 
| 13 | 
            +
             | 
| 14 | 
            +
                    def adapt(output, market_pair)
         | 
| 15 | 
            +
                      output["data"].collect do |trade|
         | 
| 16 | 
            +
                        tr = Cryptoexchange::Models::Trade.new
         | 
| 17 | 
            +
                        tr.trade_id  = trade["trade_id"]
         | 
| 18 | 
            +
                        tr.base      = market_pair.base
         | 
| 19 | 
            +
                        tr.target    = market_pair.target
         | 
| 20 | 
            +
                        tr.market    = Bigone::Market::NAME
         | 
| 21 | 
            +
                        tr.type      = trade["trade_side"] == "ASK" ? "sell" : "buy"
         | 
| 22 | 
            +
                        tr.price     = trade["price"]
         | 
| 23 | 
            +
                        tr.amount    = trade["amount"]
         | 
| 24 | 
            +
                        tr.timestamp = trade["created_at"].to_i
         | 
| 25 | 
            +
                        tr.payload   = trade
         | 
| 26 | 
            +
                        tr
         | 
| 27 | 
            +
                      end
         | 
| 28 | 
            +
                    end
         | 
| 29 | 
            +
                  end
         | 
| 30 | 
            +
                end
         | 
| 31 | 
            +
              end
         | 
| 32 | 
            +
            end
         | 
| @@ -10,18 +10,17 @@ module Cryptoexchange::Exchanges | |
| 10 10 |  | 
| 11 11 | 
             
                    def fetch(market_pair)
         | 
| 12 12 | 
             
                      output = super(ticker_url(market_pair))
         | 
| 13 | 
            -
                      adapt(output)
         | 
| 13 | 
            +
                      adapt(output, market_pair)
         | 
| 14 14 | 
             
                    end
         | 
| 15 15 |  | 
| 16 16 | 
             
                    def ticker_url(market_pair)
         | 
| 17 17 | 
             
                      "#{Cryptoexchange::Exchanges::Bitflyer::Market::API_URL}/ticker?product_code=#{market_pair.base}_#{market_pair.target}"
         | 
| 18 18 | 
             
                    end
         | 
| 19 19 |  | 
| 20 | 
            -
                    def adapt(output)
         | 
| 20 | 
            +
                    def adapt(output, market_pair)
         | 
| 21 21 | 
             
                      ticker           = Cryptoexchange::Models::Ticker.new
         | 
| 22 | 
            -
                      base | 
| 23 | 
            -
                      ticker. | 
| 24 | 
            -
                      ticker.target    = target
         | 
| 22 | 
            +
                      ticker.base      = market_pair.base
         | 
| 23 | 
            +
                      ticker.target    = market_pair.target
         | 
| 25 24 | 
             
                      ticker.market    = Bitflyer::Market::NAME
         | 
| 26 25 | 
             
                      ticker.ask       = NumericHelper.to_d(output['best_ask'])
         | 
| 27 26 | 
             
                      ticker.bid       = NumericHelper.to_d(output['best_bid'])
         | 
| @@ -21,6 +21,7 @@ module Cryptoexchange::Exchanges | |
| 21 21 | 
             
                    end
         | 
| 22 22 |  | 
| 23 23 | 
             
                    def adapt(output, market_pair)
         | 
| 24 | 
            +
                      handle_invalid(output)
         | 
| 24 25 | 
             
                      ticker = Cryptoexchange::Models::Ticker.new
         | 
| 25 26 | 
             
                      market = output['result'][0]
         | 
| 26 27 |  | 
| @@ -37,6 +38,12 @@ module Cryptoexchange::Exchanges | |
| 37 38 | 
             
                      ticker.payload   = market
         | 
| 38 39 | 
             
                      ticker
         | 
| 39 40 | 
             
                    end
         | 
| 41 | 
            +
             | 
| 42 | 
            +
                    def handle_invalid(output)
         | 
| 43 | 
            +
                      if output['message'] == 'INVALID_MARKET'
         | 
| 44 | 
            +
                        raise Cryptoexchange::ResultParseError, { response: output }
         | 
| 45 | 
            +
                      end
         | 
| 46 | 
            +
                    end
         | 
| 40 47 | 
             
                  end
         | 
| 41 48 | 
             
                end
         | 
| 42 49 | 
             
              end
         | 
| @@ -0,0 +1,52 @@ | |
| 1 | 
            +
            module Cryptoexchange::Exchanges
         | 
| 2 | 
            +
              module Coinbene
         | 
| 3 | 
            +
                module Services
         | 
| 4 | 
            +
                  class Market < Cryptoexchange::Services::Market
         | 
| 5 | 
            +
                    class << self
         | 
| 6 | 
            +
                      def supports_individual_ticker_query?
         | 
| 7 | 
            +
                        false
         | 
| 8 | 
            +
                      end
         | 
| 9 | 
            +
                    end
         | 
| 10 | 
            +
             | 
| 11 | 
            +
                    def fetch
         | 
| 12 | 
            +
                      output = super(ticker_url)
         | 
| 13 | 
            +
                      adapt_all(output)
         | 
| 14 | 
            +
                    end
         | 
| 15 | 
            +
             | 
| 16 | 
            +
                    def ticker_url
         | 
| 17 | 
            +
                      "#{Cryptoexchange::Exchanges::Coinbene::Market::API_URL}/market/ticker?symbol=all"
         | 
| 18 | 
            +
                    end
         | 
| 19 | 
            +
             | 
| 20 | 
            +
                    def adapt_all(output)
         | 
| 21 | 
            +
                      output['ticker'].map do |ticker|
         | 
| 22 | 
            +
                        separator = /(USDT|BTC|ETH)\z/ =~ ticker['symbol']
         | 
| 23 | 
            +
                        base = ticker['symbol'][0..separator - 1]
         | 
| 24 | 
            +
                        target   = ticker['symbol'][separator..-1]
         | 
| 25 | 
            +
                        market_pair = Cryptoexchange::Models::MarketPair.new(
         | 
| 26 | 
            +
                                        base: base,
         | 
| 27 | 
            +
                                        target: target,
         | 
| 28 | 
            +
                                        market: Coinbene::Market::NAME
         | 
| 29 | 
            +
                                      )
         | 
| 30 | 
            +
                        adapt(ticker, market_pair)
         | 
| 31 | 
            +
                      end
         | 
| 32 | 
            +
                    end
         | 
| 33 | 
            +
             | 
| 34 | 
            +
                    def adapt(output, market_pair)
         | 
| 35 | 
            +
                      ticker           = Cryptoexchange::Models::Ticker.new
         | 
| 36 | 
            +
                      ticker.base      = market_pair.base
         | 
| 37 | 
            +
                      ticker.target    = market_pair.target
         | 
| 38 | 
            +
                      ticker.market    = Coinbene::Market::NAME
         | 
| 39 | 
            +
                      ticker.last      = NumericHelper.to_d(output['last'])
         | 
| 40 | 
            +
                      ticker.bid       = NumericHelper.to_d(output['bid'])
         | 
| 41 | 
            +
                      ticker.ask       = NumericHelper.to_d(output['ask'])
         | 
| 42 | 
            +
                      ticker.high      = NumericHelper.to_d(output['24hrHigh'])
         | 
| 43 | 
            +
                      ticker.low       = NumericHelper.to_d(output['24hrLow'])
         | 
| 44 | 
            +
                      ticker.volume    = NumericHelper.to_d(output['24hrVol'])
         | 
| 45 | 
            +
                      ticker.timestamp = Time.now.to_i
         | 
| 46 | 
            +
                      ticker.payload = output
         | 
| 47 | 
            +
                      ticker
         | 
| 48 | 
            +
                    end
         | 
| 49 | 
            +
                  end
         | 
| 50 | 
            +
                end
         | 
| 51 | 
            +
              end
         | 
| 52 | 
            +
            end
         |