cryptoexchange 0.18.0 → 0.18.1

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: 079d7cc6d1ecec984fa116728c6d16ea1c38e324
4
- data.tar.gz: 9e0a28207e677861b05fe2c627256f2c83ed104a
3
+ metadata.gz: 0fbe71828cb0f838eede94383a66ca96287d673d
4
+ data.tar.gz: ebe336b986d5e116b72be8594e4552b9459c2132
5
5
  SHA512:
6
- metadata.gz: f9292a34278274f11f700fecdae91884fedf17eedb69f9d8bc69160f42874503b5e30ba26b341ec53e4d6065b4555f468abf447a5218379fe8a3717b6d87ab5d
7
- data.tar.gz: a8c0f4ad0c43c2f2465809fb7ced1971818135580e4f10a26e05737947389b1ac6aa0b40c912aecb311a54b12e338cbc03b0c5e5023390d9df52afc9a38c6a03
6
+ metadata.gz: a050b4ee6c3345d1e9a30697032850e3a838a71dbd81c40211149e97fdf227d3c00dbeadfb7096f8a86ee324068391e5652607e77ea09eadc1c0b5dfd10e9876
7
+ data.tar.gz: 3897a27ac966ac6c19cdc6a662f67df781b7181ace0a6c8b05fc664cb2d1347fb6faf26f7e1e5cd9dab9f454b190732e7ce7a7e511f7b5247dae1eef201968ef
data/README.md CHANGED
@@ -77,6 +77,7 @@ Or install it yourself as:
77
77
  | Livecoin | Y | | | | Y |
78
78
  | LocalBitcoins | Y | Y | Y | | Y |
79
79
  | Luno | Y | | | | Y |
80
+ | Lykke | Y | Y | N | | Y |
80
81
  | MercadoBitcoin | Y | | | | User-Defined|
81
82
  | Mercatox | Y | N | N | N | Y |
82
83
  | Nova Exchange | Y | | | | Y |
@@ -28,7 +28,7 @@ Gem::Specification.new do |spec|
28
28
  spec.add_development_dependency "rb-readline"
29
29
  spec.add_development_dependency "vcr", "~> 3.0.3"
30
30
  spec.add_development_dependency "webmock"
31
-
31
+
32
32
  spec.add_dependency "http", '~> 1.0.0'
33
33
  spec.add_dependency "lru_redux"
34
34
  end
@@ -1,6 +1,5 @@
1
1
  module Cryptoexchange
2
2
  class Client
3
-
4
3
  def initialize(ticker_ttl: 3)
5
4
  LruTtlCache.ticker_cache(ticker_ttl)
6
5
  end
@@ -37,7 +37,7 @@ module Cryptoexchange::Exchanges
37
37
  ticker.ask = NumericHelper.to_d(output['ask'])
38
38
  ticker.bid = NumericHelper.to_d(output['bid'])
39
39
  ticker.last = NumericHelper.to_d(output['last'])
40
- ticker.volume = NumericHelper.to_d(output['volume']) / ticker.last
40
+ ticker.volume = NumericHelper.divide(NumericHelper.to_d(output['volume']), ticker.last)
41
41
  ticker.timestamp = Time.now.to_i
42
42
  ticker.payload = output
43
43
  ticker
@@ -0,0 +1,8 @@
1
+ module Cryptoexchange::Exchanges
2
+ module Lykke
3
+ class Market
4
+ NAME = 'lykke'
5
+ API_URL = 'https://public-api.lykke.com/api'
6
+ end
7
+ end
8
+ end
@@ -0,0 +1,57 @@
1
+ module Cryptoexchange::Exchanges
2
+ module Lykke
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
+ pairs_output = HTTP.get(dictionary_url)
14
+ pairs_dictionary = JSON.parse(pairs_output.to_s)
15
+ adapt_all(output, pairs_dictionary)
16
+ end
17
+
18
+ def ticker_url
19
+ "#{Cryptoexchange::Exchanges::Lykke::Market::API_URL}/Market"
20
+ end
21
+
22
+ def dictionary_url
23
+ "#{Cryptoexchange::Exchanges::Lykke::Market::API_URL}/AssetPairs/dictionary"
24
+ end
25
+
26
+ def adapt_all(output, pairs_dictionary)
27
+ output.map do |ticker|
28
+ next unless pairs_dictionary.any?{|match| match["id"] == ticker["assetPair"]}
29
+ pair_object = pairs_dictionary.select{|pair| pair["id"] == ticker["assetPair"]}
30
+ base = pair_object[0]["baseAssetId"]
31
+ target = pair_object[0]["quotingAssetId"]
32
+ market_pair = Cryptoexchange::Models::MarketPair.new(
33
+ base: base,
34
+ target: target,
35
+ market: Lykke::Market::NAME
36
+ )
37
+ adapt(ticker, market_pair)
38
+ end
39
+ end
40
+
41
+ def adapt(ticker_output, market_pair)
42
+ ticker = Cryptoexchange::Models::Ticker.new
43
+ ticker.base = market_pair.base
44
+ ticker.target = market_pair.target
45
+ ticker.market = Lykke::Market::NAME
46
+ ticker.bid = NumericHelper.to_d(ticker_output['bid'])
47
+ ticker.ask = NumericHelper.to_d(ticker_output['ask'])
48
+ ticker.last = NumericHelper.to_d(ticker_output['lastPrice'])
49
+ ticker.volume = NumericHelper.to_d(ticker_output['volume24H'])
50
+ ticker.timestamp = Time.now.to_i
51
+ ticker.payload = ticker_output
52
+ ticker
53
+ end
54
+ end
55
+ end
56
+ end
57
+ end
@@ -0,0 +1,46 @@
1
+ module Cryptoexchange::Exchanges
2
+ module Lykke
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(order_book_url(market_pair))
13
+ adapt(output, market_pair)
14
+ end
15
+
16
+ def order_book_url(market_pair)
17
+ base = market_pair.base
18
+ target = market_pair.target
19
+ "#{Cryptoexchange::Exchanges::Lykke::Market::API_URL}/OrderBook/#{base+target}"
20
+ end
21
+
22
+ def adapt(output, market_pair)
23
+ order_book = Cryptoexchange::Models::OrderBook.new
24
+ timestamp = Time.now.to_i
25
+
26
+ order_book.base = market_pair.base
27
+ order_book.target = market_pair.target
28
+ order_book.market = Lykke::Market::NAME
29
+ order_book.asks = adapt_orders(output[0]["prices"], timestamp)
30
+ order_book.bids = adapt_orders(output[1]["prices"], timestamp)
31
+ order_book.timestamp = timestamp
32
+ order_book.payload = output
33
+ order_book
34
+ end
35
+
36
+ def adapt_orders(orders, timestamp)
37
+ orders.collect do |order_entry|
38
+ Cryptoexchange::Models::Order.new(price: NumericHelper.to_d(order_entry["price"]),
39
+ amount: NumericHelper.to_d(order_entry["volume"]),
40
+ timestamp: timestamp)
41
+ end
42
+ end
43
+ end
44
+ end
45
+ end
46
+ end
@@ -0,0 +1,27 @@
1
+ module Cryptoexchange::Exchanges
2
+ module Lykke
3
+ module Services
4
+ class Pairs < Cryptoexchange::Services::Pairs
5
+ PAIRS_URL = "#{Cryptoexchange::Exchanges::Lykke::Market::API_URL}/AssetPairs/dictionary"
6
+
7
+ def fetch
8
+ output = super
9
+ adapt(output)
10
+ end
11
+
12
+ def adapt(output)
13
+ output.map do |pair|
14
+ base = pair["baseAssetId"]
15
+ target = pair["quotingAssetId"]
16
+ Cryptoexchange::Models::MarketPair.new(
17
+ base: base,
18
+ target: target,
19
+ market: Lykke::Market::NAME
20
+ )
21
+
22
+ end
23
+ end
24
+ end
25
+ end
26
+ end
27
+ end
@@ -1,3 +1,3 @@
1
1
  module Cryptoexchange
2
- VERSION = "0.18.0"
2
+ VERSION = "0.18.1"
3
3
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: cryptoexchange
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.18.0
4
+ version: 0.18.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - TM Lee
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2017-12-20 00:00:00.000000000 Z
11
+ date: 2018-01-02 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler
@@ -334,6 +334,10 @@ files:
334
334
  - lib/cryptoexchange/exchanges/luno/market.rb
335
335
  - lib/cryptoexchange/exchanges/luno/services/market.rb
336
336
  - lib/cryptoexchange/exchanges/luno/services/pairs.rb
337
+ - lib/cryptoexchange/exchanges/lykke/market.rb
338
+ - lib/cryptoexchange/exchanges/lykke/services/market.rb
339
+ - lib/cryptoexchange/exchanges/lykke/services/order_book.rb
340
+ - lib/cryptoexchange/exchanges/lykke/services/pairs.rb
337
341
  - lib/cryptoexchange/exchanges/mercado_bitcoin/market.rb
338
342
  - lib/cryptoexchange/exchanges/mercado_bitcoin/mercado_bitcoin.yml
339
343
  - lib/cryptoexchange/exchanges/mercado_bitcoin/services/market.rb