deribit-api 2.0.1 → 2.0.2

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
  SHA256:
3
- metadata.gz: 11f76e8a99154e3e620008c524704c74cf01c0cf3303352ed22981f403cd0912
4
- data.tar.gz: 149ef6954294ee435ce56097b4e79fbdcd162df1f05b3efa3a698e87c5094c47
3
+ metadata.gz: 9190274b8e9a8685d94a7795e36e5d02824acdfe97417923dcf12e0c2685caf2
4
+ data.tar.gz: a7dcd9a94ce0f80627f100b27f79e6f03cd0e4d07655c16837f3c444c6d516dc
5
5
  SHA512:
6
- metadata.gz: c373baa7adac07baeb5b820cadbebb83b72d7c15d962e17b4b83d736df9cfcb03235379400858a6f3aeae118c40648010f2d5a03396b793614c0aa1e8a9c6e23
7
- data.tar.gz: c981a53a4f1a28196f5a8fbd1bbee2448509c6d9e6fb74f9ffc7eda47371c76c9da8fdf8d40d16ba9546949ef688fb2bd9befe9025f3973c911f8c0bd7190cd3
6
+ metadata.gz: cbb94007ede87a6c332ff98e0628084598a0c9ae06aa23482ab8a49ac309e2c87fce4f82b664bf390765d6bb0fc62be90f1fec0ae51ff59111be3674c6dcb089
7
+ data.tar.gz: 375beeb4e635832e442074b6f97a79d1abb7af72cfb81be16b5fb699039ae9df5c2d0a4768772f3975bbb298d7de7bf042772428949899daa127930116e56502
@@ -0,0 +1 @@
1
+ 2.7.1
@@ -5,6 +5,12 @@
5
5
  The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
6
6
  and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
7
7
 
8
+ ## [2.0.2] - 2020-06-10
9
+ ### Changed
10
+ - update all gems
11
+ - update Ruby to 2.7.1
12
+ - refactor Naming module
13
+
8
14
  ## [2.0.1] - 2020-05-13
9
15
  ### Added
10
16
  - client#orders supports filtering by both currency and instrument name
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- deribit-api (2.0.1)
4
+ deribit-api (2.0.2)
5
5
  faraday
6
6
  faraday-detailed_logger
7
7
  faraday_middleware
@@ -15,7 +15,7 @@ GEM
15
15
  backport (1.1.2)
16
16
  benchmark (0.1.0)
17
17
  bump (0.9.0)
18
- coderay (1.1.2)
18
+ coderay (1.1.3)
19
19
  docile (1.3.2)
20
20
  dotenv (2.7.5)
21
21
  e2mmap (0.1.0)
@@ -35,12 +35,12 @@ GEM
35
35
  maruku (0.7.3)
36
36
  method_source (1.0.0)
37
37
  mini_portile2 (2.4.0)
38
- minitest (5.14.0)
38
+ minitest (5.14.1)
39
39
  multipart-post (2.1.1)
40
40
  nokogiri (1.10.9)
41
41
  mini_portile2 (~> 2.4.0)
42
42
  parallel (1.19.1)
43
- parser (2.7.1.2)
43
+ parser (2.7.1.3)
44
44
  ast (~> 2.4.0)
45
45
  pry (0.13.1)
46
46
  coderay (~> 1.1)
@@ -51,29 +51,34 @@ GEM
51
51
  psych (3.1.0)
52
52
  rainbow (3.0.0)
53
53
  rake (13.0.1)
54
- reek (6.0.0)
54
+ reek (6.0.1)
55
55
  kwalify (~> 0.7.0)
56
56
  parser (>= 2.5.0.0, < 2.8, != 2.5.1.1)
57
57
  psych (~> 3.1.0)
58
58
  rainbow (>= 2.0, < 4.0)
59
+ regexp_parser (1.7.1)
59
60
  reline (0.1.4)
60
61
  io-console (~> 0.5)
61
- reverse_markdown (1.4.0)
62
+ reverse_markdown (2.0.0)
62
63
  nokogiri
63
64
  rexml (3.2.4)
64
- rubocop (0.83.0)
65
+ rubocop (0.85.1)
65
66
  parallel (~> 1.10)
66
67
  parser (>= 2.7.0.1)
67
68
  rainbow (>= 2.2.2, < 4.0)
69
+ regexp_parser (>= 1.7)
68
70
  rexml
71
+ rubocop-ast (>= 0.0.3)
69
72
  ruby-progressbar (~> 1.7)
70
73
  unicode-display_width (>= 1.4.0, < 2.0)
74
+ rubocop-ast (0.0.3)
75
+ parser (>= 2.7.0.1)
71
76
  ruby-progressbar (1.10.1)
72
77
  simplecov (0.18.5)
73
78
  docile (~> 1.1)
74
79
  simplecov-html (~> 0.11)
75
80
  simplecov-html (0.12.2)
76
- solargraph (0.39.7)
81
+ solargraph (0.39.8)
77
82
  backport (~> 1.1)
78
83
  benchmark
79
84
  bundler (>= 1.17.2)
@@ -82,7 +87,7 @@ GEM
82
87
  maruku (~> 0.7, >= 0.7.3)
83
88
  nokogiri (~> 1.9, >= 1.9.1)
84
89
  parser (~> 2.3)
85
- reverse_markdown (~> 1.0, >= 1.0.5)
90
+ reverse_markdown (>= 1.0.5, < 3)
86
91
  rubocop (~> 0.52)
87
92
  thor (~> 1.0)
88
93
  tilt (~> 2.0)
data/TODOs.org CHANGED
@@ -37,12 +37,13 @@
37
37
  ** cleanup 'params' for both http and websocket
38
38
  ** DONE update buy/sell endpoints with new params
39
39
  ** DONE initial 2.0 API implementaion
40
- ** refactor Naming module
40
+ ** DONE refactor Naming module
41
41
  ** TODO deribit-api-ruby maintenance
42
- SCHEDULED: <2020-06-09 Tue +3m>
42
+ SCHEDULED: <2020-12-09 Wed +6m>
43
43
  :PROPERTIES:
44
- :LAST_REPEAT: [2020-05-13 Wed 14:14]
44
+ :LAST_REPEAT: [2020-06-10 Wed 07:36]
45
45
  :END:
46
+ - State "DONE" from "TODO" [2020-06-10 Wed 07:36]
46
47
  - State "DONE" from "TODO" [2020-05-13 Wed 14:14]
47
48
  - State "DONE" from "TODO" [2020-04-23 Thu 13:25]
48
49
  - State "DONE" from "TODO" [2020-01-09 Thu 18:00]
@@ -1,12 +1,14 @@
1
1
  # frozen_string_literal: true
2
+ require 'deribit/naming'
2
3
 
3
4
  module Deribit
4
- TESTNET_HOST = 'test.deribit.com'.freeze
5
- MAINNET_HOST = 'www.deribit.com'.freeze
5
+ TESTNET_HOST = 'test.deribit.com'
6
+ MAINNET_HOST = 'www.deribit.com'
6
7
 
7
8
  # Deribit API 2.0 client implementation
8
9
  # @author Iulian Costan (deribit-api@iuliancostan.com)
9
10
  class Client
11
+ include Naming
10
12
  attr_reader :http, :websocket
11
13
 
12
14
  # Create new instance
@@ -71,7 +73,7 @@ module Deribit
71
73
  end
72
74
 
73
75
  if block_given?
74
- channel = Naming.book_channel options
76
+ channel = book_channel options
75
77
  websocket.subscribe channel, params: {}, &blk
76
78
  else
77
79
  http.get '/public/get_order_book', options
@@ -116,10 +118,10 @@ module Deribit
116
118
  end
117
119
 
118
120
  if block_given?
119
- channel = Naming.trades_channel filters
121
+ channel = trades_channel filters
120
122
  websocket.subscribe channel, params: {}, &blk
121
123
  else
122
- uri = Naming.trades_uri filters
124
+ uri = trades_uri filters
123
125
  response = http.get uri, filters
124
126
  response.trades
125
127
  end
@@ -261,7 +263,7 @@ module Deribit
261
263
  # @see https://docs.deribit.com/#private-cancel_all_by_currency
262
264
  # @see https://docs.deribit.com/#private-cancel_all_by_instrument
263
265
  def cancel_all(options = {})
264
- uri = Naming.cancel_uri options
266
+ uri = cancel_uri options
265
267
  http.get uri, options
266
268
  end
267
269
 
@@ -274,7 +276,7 @@ module Deribit
274
276
  raise 'block is missing, HTTP-RPC not supported for this endpoint'
275
277
  end
276
278
 
277
- channel = Naming.channel_for_instrument 'quote', options
279
+ channel = channel_for_instrument 'quote', options
278
280
  websocket.subscribe channel, params: options, &blk
279
281
  end
280
282
 
@@ -285,7 +287,7 @@ module Deribit
285
287
  # @see https://docs.deribit.com/#ticker-instrument_name-interval
286
288
  def ticker(options = { instrument_name: 'BTC-PERPETUAL' }, &blk)
287
289
  if block_given?
288
- channel = Naming.channel 'ticker', options
290
+ channel = channel 'ticker', options
289
291
  websocket.subscribe channel, params: options, &blk
290
292
  else
291
293
  http.get '/public/ticker', options
@@ -307,10 +309,10 @@ module Deribit
307
309
  raise ArgumentError, 'either :instrument_name or :currency is required' unless options[:instrument_name] || options[:currency]
308
310
 
309
311
  if block_given?
310
- channel = Naming.channel 'user.orders', options
312
+ channel = channel 'user.orders', options
311
313
  websocket.subscribe channel, params: options, &blk
312
314
  else
313
- uri = Naming.orders_uri options
315
+ uri = orders_uri options
314
316
  http.get uri, options
315
317
  end
316
318
  end
@@ -2,15 +2,14 @@
2
2
 
3
3
  module Deribit
4
4
  # @author Iulian Costan (deribit-api@iuliancostan.com)
5
- # TODO: refactor and clean this up
6
5
  module Naming
7
- def self.trades_channel(options)
6
+ def trades_channel(options)
8
7
  private = options.delete :private
9
8
  trades = private ? 'user.trades' : 'trades'
10
9
  channel trades, options
11
10
  end
12
11
 
13
- def self.trades_uri(options)
12
+ def trades_uri(options)
14
13
  private = options.delete :private
15
14
  uri = private ? 'private/get_user_trades' : 'public/get_last_trades'
16
15
  uri += by_instrument(options) + by_currency(options)
@@ -18,50 +17,61 @@ module Deribit
18
17
  uri
19
18
  end
20
19
 
21
- def self.book_channel(options)
20
+ def book_channel(options)
22
21
  'book' + for_instrument(options) + with_group_and_depth(options) + with_interval(options)
23
22
  end
24
23
 
25
- def self.channel(prefix, options)
26
- prefix + channel_suffix(options)
24
+ def channel(prefix, options)
25
+ channel = prefix
26
+ channel += for_instrument(options) if options[:instrument_name]
27
+ channel += for_currency(options) if options[:currency]
28
+ channel += with_interval(options)
29
+ channel
27
30
  end
28
31
 
29
- def self.channel_for_instrument(prefix, options)
32
+ def channel_for_instrument(prefix, options)
30
33
  prefix + for_instrument(options)
31
34
  end
32
35
 
33
- def self.instrument_with_interval(prefix, options)
36
+ def instrument_with_interval(prefix, options)
34
37
  prefix + for_instrument(options) + with_interval(options)
35
38
  end
36
39
 
37
- def self.cancel_uri(options)
40
+ def cancel_uri(options)
38
41
  '/private/cancel_all' + by_instrument(options) + by_currency(options)
39
42
  end
40
43
 
41
- def self.orders_uri(options)
44
+ def orders_uri(options)
42
45
  '/private/get_open_orders' + by_instrument(options) + by_currency(options)
43
46
  end
44
47
 
45
- def self.by_instrument(options)
48
+ def by_instrument(options)
46
49
  options[:instrument_name] ? '_by_instrument' : ''
47
50
  end
48
51
 
49
- def self.by_currency(options)
52
+ def by_currency(options)
50
53
  options[:currency] ? '_by_currency' : ''
51
54
  end
52
55
 
53
- def self.for_instrument(options)
56
+ def for_instrument(options)
54
57
  raise 'instrument_name param is required' unless options[:instrument_name]
55
58
 
56
59
  ".#{options[:instrument_name]}"
57
60
  end
58
61
 
59
- def self.with_interval(options)
62
+ def for_currency(options)
63
+ raise 'currency param is required' unless options[:currency]
64
+
65
+ kind = options[:kind] || 'any'
66
+ ".#{kind}.#{options[:currency]}"
67
+ end
68
+
69
+ def with_interval(options)
60
70
  interval = options[:interval] || '100ms'
61
71
  ".#{interval}"
62
72
  end
63
73
 
64
- def self.with_group_and_depth(options)
74
+ def with_group_and_depth(options)
65
75
  if options[:group] || options[:depth]
66
76
  group = options[:group] || '5'
67
77
  depth = options[:depth] || '10'
@@ -70,19 +80,5 @@ module Deribit
70
80
  ''
71
81
  end
72
82
  end
73
-
74
- def self.channel_suffix(options)
75
- currency = options[:currency]
76
- instrument_name = options[:instrument_name]
77
- kind = options[:kind] || 'any'
78
- interval = options[:interval] || 'raw'
79
- if instrument_name
80
- ".#{instrument_name}.#{interval}"
81
- elsif currency
82
- ".#{kind}.#{currency}.#{interval}"
83
- else
84
- raise 'invalid args'
85
- end
86
- end
87
83
  end
88
84
  end
@@ -1,3 +1,3 @@
1
1
  module Deribit
2
- VERSION = '2.0.1'
2
+ VERSION = '2.0.2'
3
3
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: deribit-api
3
3
  version: !ruby/object:Gem::Version
4
- version: 2.0.1
4
+ version: 2.0.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - Iulian Costan
8
- autorequire:
8
+ autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2020-05-13 00:00:00.000000000 Z
11
+ date: 2020-06-10 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: faraday
@@ -256,6 +256,7 @@ extensions: []
256
256
  extra_rdoc_files: []
257
257
  files:
258
258
  - ".gitignore"
259
+ - ".ruby-version"
259
260
  - ".travis.yml"
260
261
  - CHANGELOG.md
261
262
  - CODE_OF_CONDUCT.md
@@ -287,7 +288,7 @@ metadata:
287
288
  homepage_uri: https://github.com/icostan/deribit-api-ruby
288
289
  source_code_uri: https://github.com/icostan/deribit-api-ruby.git
289
290
  changelog_uri: https://github.com/icostan/deribit-api-ruby/blob/master/CHANGELOG.md
290
- post_install_message:
291
+ post_install_message:
291
292
  rdoc_options: []
292
293
  require_paths:
293
294
  - lib
@@ -303,7 +304,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
303
304
  version: '0'
304
305
  requirements: []
305
306
  rubygems_version: 3.1.2
306
- signing_key:
307
+ signing_key:
307
308
  specification_version: 4
308
309
  summary: Idiomatic Ruby library for Deribit API 2.0
309
310
  test_files: []