bitflyer 0.3.0 → 1.0.0

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
- SHA1:
3
- metadata.gz: 02cf9dce44723e91ea75d8f9c705c8bec8040f40
4
- data.tar.gz: 0c359f712a2692685e6e7a504f0c05c70edbc468
2
+ SHA256:
3
+ metadata.gz: e017b1fb5befa1653ab22b3333a94e9d59e2168ea7f0d5dd58acdcb143dd3eea
4
+ data.tar.gz: d06a630e375806601b5cdc0d1d23f0c5d5574bc847d23e5156092e20f101baab
5
5
  SHA512:
6
- metadata.gz: 88b4f42f92fc5e8431011030f28a7195c382903da764c22cdf0a0baf15a3f0f04eac6646fc552433dd1d591e39b21c97f774fca0ba16b521747b9c4da6dffb5e
7
- data.tar.gz: 59d59e03775bb6a074f22115803c16d40c674262b1ca5e73b77f2b0dbedc4d3c90fcec0bfd671045b0dd5e6488c557d61a618bc340b26ca5a05672c722150716
6
+ metadata.gz: 58f8ca8dfe138dd4d0d6a22883bca134ef94f6abef0474f6e3a30dc9c4ae1a123cdd88a67a32daa6b940e814872535f8140472683ac6b8ccf9dcb98f2f3d573a
7
+ data.tar.gz: 675d662fe2f2667c3d733a82a04af407891132d5afd31fadd43a10c95f32d36a65fde231fb45297e5122aba1341c1e4677e2511faf4d44a664aa39e33f7b8369
@@ -21,6 +21,14 @@ jobs:
21
21
  key: cache-bundler-{{ checksum "Gemfile.lock" }}
22
22
  paths:
23
23
  - vendor/bundle
24
+ rubocop:
25
+ docker:
26
+ - image: circleci/ruby
27
+ steps:
28
+ - checkout
29
+ - *restore_bundle_cache
30
+ - *bundle_install
31
+ - run: bundle exec rubocop
24
32
  rspec:
25
33
  docker:
26
34
  - image: circleci/ruby
@@ -34,4 +42,5 @@ workflows:
34
42
  rspec:
35
43
  jobs:
36
44
  - build
45
+ - rubocop
37
46
  - rspec
@@ -0,0 +1,9 @@
1
+ inherit_from: .rubocop_todo.yml
2
+
3
+ AllCops:
4
+ Include:
5
+ - 'lib/**/*.rb'
6
+ Style/Documentation:
7
+ Enabled: false
8
+ Metrics/LineLength:
9
+ Max: 120
@@ -0,0 +1,30 @@
1
+ # This configuration was generated by
2
+ # `rubocop --auto-gen-config`
3
+ # on 2019-07-08 01:59:32 +0900 using RuboCop version 0.72.0.
4
+ # The point is for the user to remove these configuration records
5
+ # one by one as the offenses are removed from the code base.
6
+ # Note that changes in the inspected code, or installation of new
7
+ # versions of RuboCop, may require this file to be generated again.
8
+
9
+ # Offense count: 3
10
+ Metrics/AbcSize:
11
+ Max: 29
12
+
13
+ # Offense count: 2
14
+ # Configuration parameters: CountComments.
15
+ Metrics/ClassLength:
16
+ Max: 150
17
+
18
+ # Offense count: 1
19
+ Metrics/CyclomaticComplexity:
20
+ Max: 7
21
+
22
+ # Offense count: 2
23
+ # Configuration parameters: CountComments, ExcludedMethods.
24
+ Metrics/MethodLength:
25
+ Max: 20
26
+
27
+ # Offense count: 3
28
+ # Configuration parameters: CountKeywordArgs.
29
+ Metrics/ParameterLists:
30
+ Max: 7
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- bitflyer (0.3.0)
4
+ bitflyer (1.0.0)
5
5
  faraday (~> 0.14.0)
6
6
  faraday_middleware (~> 0.12.0)
7
7
  websocket-client-simple (~> 0.3.0)
@@ -9,6 +9,7 @@ PATH
9
9
  GEM
10
10
  remote: https://rubygems.org/
11
11
  specs:
12
+ ast (2.4.0)
12
13
  coderay (1.1.2)
13
14
  diff-lcs (1.3)
14
15
  event_emitter (0.2.6)
@@ -16,11 +17,16 @@ GEM
16
17
  multipart-post (>= 1.2, < 3)
17
18
  faraday_middleware (0.12.2)
18
19
  faraday (>= 0.7.4, < 1.0)
20
+ jaro_winkler (1.5.3)
19
21
  method_source (0.9.2)
20
- multipart-post (2.0.0)
22
+ multipart-post (2.1.1)
23
+ parallel (1.17.0)
24
+ parser (2.6.3.0)
25
+ ast (~> 2.4.0)
21
26
  pry (0.12.2)
22
27
  coderay (~> 1.1.0)
23
28
  method_source (~> 0.9.0)
29
+ rainbow (3.0.0)
24
30
  rake (12.3.0)
25
31
  rspec (3.7.0)
26
32
  rspec-core (~> 3.7.0)
@@ -35,6 +41,15 @@ GEM
35
41
  diff-lcs (>= 1.2.0, < 2.0)
36
42
  rspec-support (~> 3.7.0)
37
43
  rspec-support (3.7.1)
44
+ rubocop (0.72.0)
45
+ jaro_winkler (~> 1.5.1)
46
+ parallel (~> 1.10)
47
+ parser (>= 2.6)
48
+ rainbow (>= 2.2.2, < 4.0)
49
+ ruby-progressbar (~> 1.7)
50
+ unicode-display_width (>= 1.4.0, < 1.7)
51
+ ruby-progressbar (1.10.1)
52
+ unicode-display_width (1.6.0)
38
53
  websocket (1.2.8)
39
54
  websocket-client-simple (0.3.0)
40
55
  event_emitter
@@ -49,6 +64,7 @@ DEPENDENCIES
49
64
  pry
50
65
  rake
51
66
  rspec
67
+ rubocop
52
68
 
53
69
  BUNDLED WITH
54
70
  1.17.3
data/README.md CHANGED
@@ -18,6 +18,8 @@ See https://lightning.bitflyer.jp/docs for details.
18
18
 
19
19
  ### HTTP API
20
20
 
21
+ See [public.rb](./lib/bitflyer/http/public.rb) / [private.rb](./lib/bitflyer/http/private.rb) for method definition.
22
+
21
23
  #### Example
22
24
 
23
25
  ```ruby
@@ -33,17 +35,7 @@ p private_client.positions # will print your positions
33
35
  Accessor format is like `{event_name}_{product_code}`.
34
36
  You can set lambda to get realtime events.
35
37
 
36
- #### `event_name`
37
- - board_snapshot
38
- - board
39
- - ticker
40
- - executions
41
-
42
- #### `product_code`
43
- - btc_jpy
44
- - fx_btc_jpy
45
- - eth_btc
46
- - bch_btc
38
+ `{event_name}` and `{product_code}` is defined at [client.rb](./lib/bitflyer/realtime/client.rb).
47
39
 
48
40
  #### Example
49
41
 
@@ -21,7 +21,8 @@ Gem::Specification.new do |spec|
21
21
  spec.add_dependency 'faraday_middleware', '~> 0.12.0'
22
22
  spec.add_dependency 'websocket-client-simple', '~> 0.3.0'
23
23
  spec.add_development_dependency 'bundler', '~> 1.12'
24
+ spec.add_development_dependency 'pry'
24
25
  spec.add_development_dependency 'rake'
25
26
  spec.add_development_dependency 'rspec'
26
- spec.add_development_dependency 'pry'
27
+ spec.add_development_dependency 'rubocop'
27
28
  end
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require 'bitflyer/version'
2
4
  require 'bitflyer/http'
3
5
  require 'bitflyer/realtime'
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require 'bitflyer'
2
4
  require 'bitflyer/http/public'
3
5
  require 'bitflyer/http/private'
@@ -13,7 +15,7 @@ module Bitflyer
13
15
  def_delegators :@connection, :get, :post
14
16
 
15
17
  def initialize(key, secret)
16
- @connection = Faraday::Connection.new(:url => 'https://api.bitflyer.jp') do |f|
18
+ @connection = Faraday::Connection.new(url: 'https://api.bitflyer.jp') do |f|
17
19
  f.request :json
18
20
  f.response :json
19
21
  f.use Authentication, key, secret
@@ -36,7 +38,7 @@ module Bitflyer
36
38
  method = env[:method].to_s.upcase
37
39
  path = env[:url].path + (env[:url].query ? '?' + env[:url].query : '')
38
40
  body = env[:body] || ''
39
- signature = OpenSSL::HMAC.hexdigest(OpenSSL::Digest.new('sha256'), @secret, timestamp + method + path + body)
41
+ signature = OpenSSL::HMAC.hexdigest(OpenSSL::Digest.new('sha256'), @secret, timestamp + method + path + body)
40
42
  env[:request_headers]['ACCESS-KEY'] = @key if @key
41
43
  env[:request_headers]['ACCESS-TIMESTAMP'] = timestamp
42
44
  env[:request_headers]['ACCESS-SIGN'] = signature
@@ -44,4 +46,4 @@ module Bitflyer
44
46
  end
45
47
  end
46
48
  end
47
- end
49
+ end
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module Bitflyer
2
4
  module HTTP
3
5
  module Private
@@ -40,10 +42,10 @@ module Bitflyer
40
42
 
41
43
  def withdraw(currency_code: 'JPY', bank_account_id: nil, amount: nil, code: nil)
42
44
  body = {
43
- currency_code: currency_code,
44
- bank_account_id: bank_account_id,
45
- amount: amount,
46
- code: code
45
+ currency_code: currency_code,
46
+ bank_account_id: bank_account_id,
47
+ amount: amount,
48
+ code: code
47
49
  }.delete_if { |_, v| v.nil? }
48
50
  @connection.post('/v1/me/withdraw', body).body
49
51
  end
@@ -52,102 +54,124 @@ module Bitflyer
52
54
  @connection.get('/v1/me/getwithdrawals').body
53
55
  end
54
56
 
55
- def send_child_order(product_code: 'BTC_JPY', child_order_type: nil, side: nil, price: nil, size: nil, minute_to_expire: nil, time_in_force: 'GTC')
57
+ def send_child_order(
58
+ product_code: 'BTC_JPY',
59
+ child_order_type: nil,
60
+ side: nil,
61
+ price: nil,
62
+ size: nil,
63
+ minute_to_expire: nil,
64
+ time_in_force: 'GTC'
65
+ )
56
66
  body = {
57
- product_code: product_code,
58
- child_order_type: child_order_type,
59
- side: side,
60
- price: price,
61
- size: size,
62
- minute_to_expire: minute_to_expire,
63
- time_in_force: time_in_force
67
+ product_code: product_code,
68
+ child_order_type: child_order_type,
69
+ side: side,
70
+ price: price,
71
+ size: size,
72
+ minute_to_expire: minute_to_expire,
73
+ time_in_force: time_in_force
64
74
  }.delete_if { |_, v| v.nil? }
65
75
  @connection.post('/v1/me/sendchildorder', body).body
66
76
  end
67
77
 
68
78
  def cancel_child_order(product_code: 'BTC_JPY', child_order_id: nil, child_order_acceptance_id: nil)
69
79
  body = {
70
- product_code: product_code,
71
- child_order_id: child_order_id,
72
- child_order_acceptance_id: child_order_acceptance_id
80
+ product_code: product_code,
81
+ child_order_id: child_order_id,
82
+ child_order_acceptance_id: child_order_acceptance_id
73
83
  }.delete_if { |_, v| v.nil? }
74
84
  @connection.post('/v1/me/cancelchildorder', body).body
75
85
  end
76
86
 
77
87
  def send_parent_order(order_method: nil, minute_to_expire: nil, time_in_force: 'GTC', parameters: {})
78
88
  body = {
79
- order_method: order_method,
80
- minute_to_expire: minute_to_expire,
81
- time_in_force: time_in_force,
82
- parameters: parameters
89
+ order_method: order_method,
90
+ minute_to_expire: minute_to_expire,
91
+ time_in_force: time_in_force,
92
+ parameters: parameters
83
93
  }.delete_if { |_, v| v.nil? }
84
94
  @connection.post('/v1/me/sendparentorder', body).body
85
95
  end
86
96
 
87
97
  def cancel_parent_order(product_code: 'BTC_JPY', parent_order_id: nil, parent_order_acceptance_id: nil)
88
98
  body = {
89
- product_code: product_code,
90
- parent_order_id: parent_order_id,
91
- parent_order_acceptance_id: parent_order_acceptance_id
99
+ product_code: product_code,
100
+ parent_order_id: parent_order_id,
101
+ parent_order_acceptance_id: parent_order_acceptance_id
92
102
  }.delete_if { |_, v| v.nil? }
93
103
  @connection.post('/v1/me/cancelparentorder', body).body
94
104
  end
95
105
 
96
106
  def cancel_all_child_orders(product_code: 'BTC_JPY')
97
- @connection.post('/v1/me/cancelallchildorders', { product_code: product_code }).body
107
+ @connection.post('/v1/me/cancelallchildorders', product_code: product_code).body
98
108
  end
99
109
 
100
- def child_orders(product_code: 'BTC_JPY', count: nil, before: nil, after: nil, child_order_state: nil, parent_order_id: nil)
110
+ def child_orders(
111
+ product_code: 'BTC_JPY',
112
+ count: nil,
113
+ before: nil,
114
+ after: nil,
115
+ child_order_state: nil,
116
+ parent_order_id: nil
117
+ )
101
118
  query = {
102
- product_code: product_code,
103
- count: count,
104
- before: before,
105
- after: after,
106
- child_order_state: child_order_state,
107
- parent_order_id: parent_order_id
119
+ product_code: product_code,
120
+ count: count,
121
+ before: before,
122
+ after: after,
123
+ child_order_state: child_order_state,
124
+ parent_order_id: parent_order_id
108
125
  }.delete_if { |_, v| v.nil? }
109
126
  @connection.get('/v1/me/getchildorders', query).body
110
127
  end
111
128
 
112
129
  def parent_orders(product_code: 'BTC_JPY', count: nil, before: nil, after: nil, parent_order_state: nil)
113
130
  query = {
114
- product_code: product_code,
115
- count: count,
116
- before: before,
117
- after: after,
118
- parent_order_state: parent_order_state
131
+ product_code: product_code,
132
+ count: count,
133
+ before: before,
134
+ after: after,
135
+ parent_order_state: parent_order_state
119
136
  }.delete_if { |_, v| v.nil? }
120
137
  @connection.get('/v1/me/getparentorders', query).body
121
138
  end
122
139
 
123
140
  def parent_order(parent_order_id: nil, parent_order_acceptance_id: nil)
124
141
  query = {
125
- parent_order_id: parent_order_id,
126
- parent_order_acceptance_id: parent_order_acceptance_id
142
+ parent_order_id: parent_order_id,
143
+ parent_order_acceptance_id: parent_order_acceptance_id
127
144
  }.delete_if { |_, v| v.nil? }
128
145
  @connection.get('/v1/me/getparentorder', query).body
129
146
  end
130
147
 
131
- def executions(product_code: 'BTC_JPY', count: nil, before: nil, after: nil, child_order_id: nil, child_order_acceptance_id: nil)
148
+ def executions(
149
+ product_code: 'BTC_JPY',
150
+ count: nil,
151
+ before: nil,
152
+ after: nil,
153
+ child_order_id: nil,
154
+ child_order_acceptance_id: nil
155
+ )
132
156
  query = {
133
- product_code: product_code,
134
- count: count,
135
- before: before,
136
- after: after,
137
- child_order_id: child_order_id,
138
- child_order_acceptance_id: child_order_acceptance_id,
157
+ product_code: product_code,
158
+ count: count,
159
+ before: before,
160
+ after: after,
161
+ child_order_id: child_order_id,
162
+ child_order_acceptance_id: child_order_acceptance_id
139
163
  }.delete_if { |_, v| v.nil? }
140
164
  @connection.get('/v1/me/getexecutions', query).body
141
165
  end
142
166
 
143
167
  def positions(product_code: 'FX_BTC_JPY')
144
- @connection.get('/v1/me/getpositions', { product_code: product_code }).body
168
+ @connection.get('/v1/me/getpositions', product_code: product_code).body
145
169
  end
146
170
 
147
171
  def trading_commission(product_code: 'BTC_JPY')
148
- @connection.get('v1/me/gettradingcommission', { product_code: product_code }).body
172
+ @connection.get('v1/me/gettradingcommission', product_code: product_code).body
149
173
  end
150
174
  end
151
175
  end
152
176
  end
153
- end
177
+ end
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module Bitflyer
2
4
  module HTTP
3
5
  module Public
@@ -14,22 +16,22 @@ module Bitflyer
14
16
  @connection.get('/v1/markets').body
15
17
  end
16
18
 
17
- def board(product_code = 'BTC_JPY')
18
- @connection.get('/v1/board', { product_code: product_code }).body
19
+ def board(product_code: 'BTC_JPY')
20
+ @connection.get('/v1/board', product_code: product_code).body
19
21
  end
20
22
 
21
- def ticker(product_code = 'BTC_JPY')
22
- @connection.get('/v1/ticker', { product_code: product_code }).body
23
+ def ticker(product_code: 'BTC_JPY')
24
+ @connection.get('/v1/ticker', product_code: product_code).body
23
25
  end
24
26
 
25
- def executions(product_code = 'BTC_JPY')
26
- @connection.get('/v1/executions', { product_code: product_code }).body
27
+ def executions(product_code: 'BTC_JPY')
28
+ @connection.get('/v1/executions', product_code: product_code).body
27
29
  end
28
30
 
29
- def chats(from_date = (Time.now - 5 * 24 * 60 * 60))
30
- @connection.get('/v1/getchats', { from_date: from_date }).body
31
+ def chats(from_date: (Time.now - 5 * 24 * 60 * 60))
32
+ @connection.get('/v1/getchats', from_date: from_date).body
31
33
  end
32
34
  end
33
35
  end
34
36
  end
35
- end
37
+ end
@@ -1,7 +1,9 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require 'bitflyer'
2
4
  require 'bitflyer/realtime/client'
3
5
 
4
6
  module Bitflyer
5
7
  module Realtime
6
8
  end
7
- end
9
+ end
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require_relative './websocket'
2
4
 
3
5
  module Bitflyer
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require 'websocket-client-simple'
2
4
  require 'json'
3
5
 
@@ -5,7 +7,7 @@ module Bitflyer
5
7
  module Realtime
6
8
  class WebSocketClient
7
9
  attr_accessor :websocket_client, :channel_name, :channel_callbacks, :ping_interval, :ping_timeout,
8
- :last_ping_at, :last_pong_at, :error
10
+ :last_ping_at, :last_pong_at, :error
9
11
 
10
12
  def initialize(host:, debug: false)
11
13
  @host = host
@@ -30,7 +32,7 @@ module Bitflyer
30
32
  Thread.new do
31
33
  loop do
32
34
  sleep 1
33
- if @websocket_client && @websocket_client.open?
35
+ if @websocket_client&.open?
34
36
  send_ping
35
37
  wait_pong
36
38
  end
@@ -41,6 +43,7 @@ module Bitflyer
41
43
  loop do
42
44
  sleep 1
43
45
  next unless @error
46
+
44
47
  reconnect
45
48
  end
46
49
  end
@@ -54,7 +57,7 @@ module Bitflyer
54
57
  return unless Time.now.to_i - @last_ping_at > @ping_interval / 1000
55
58
 
56
59
  debug_log 'Sent ping'
57
- @websocket_client.send "2"
60
+ @websocket_client.send '2'
58
61
  @last_ping_at = Time.now.to_i
59
62
  end
60
63
 
@@ -68,6 +71,7 @@ module Bitflyer
68
71
 
69
72
  def reconnect
70
73
  return unless @error
74
+
71
75
  debug_log 'Reconnecting...'
72
76
 
73
77
  @error = nil
@@ -81,13 +85,15 @@ module Bitflyer
81
85
 
82
86
  def handle_error(error:)
83
87
  debug_log error
84
- return unless error.kind_of? Errno::ECONNRESET
88
+ return unless error.is_a? Errno::ECONNRESET
89
+
85
90
  reconnect
86
91
  end
87
92
 
88
93
  def handle_message(payload:)
89
94
  debug_log payload.data
90
95
  return unless payload.data =~ /^\d+/
96
+
91
97
  code, body = payload.data.scan(/^(\d+)(.*)$/)[0]
92
98
 
93
99
  case code.to_i
@@ -96,15 +102,15 @@ module Bitflyer
96
102
  when 41 then disconnect
97
103
  when 42 then emit_message(json: body)
98
104
  end
99
- rescue => e
105
+ rescue StandardError => e
100
106
  puts e
101
107
  puts e.backtrace.join("\n")
102
108
  end
103
109
 
104
110
  def setup_by_response(json:)
105
111
  body = JSON.parse json
106
- @ping_interval = body["pingInterval"].to_i || 25000
107
- @ping_timeout = body["pingTimeout"].to_i || 60000
112
+ @ping_interval = body['pingInterval'].to_i || 25_000
113
+ @ping_timeout = body['pingTimeout'].to_i || 60_000
108
114
  @last_ping_at = Time.now.to_i
109
115
  @last_pong_at = Time.now.to_i
110
116
  channel_callbacks.each do |channel_name, _|
@@ -125,11 +131,13 @@ module Bitflyer
125
131
  def emit_message(json:)
126
132
  channel_name, *messages = JSON.parse json
127
133
  return unless channel_name
134
+
128
135
  messages.each { |message| @channel_callbacks[channel_name.to_sym]&.call(message) }
129
136
  end
130
137
 
131
138
  def debug_log(message)
132
139
  return unless @debug
140
+
133
141
  p message
134
142
  end
135
143
  end
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module Bitflyer
2
- VERSION = '0.3.0'
4
+ VERSION = '1.0.0'
3
5
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: bitflyer
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.3.0
4
+ version: 1.0.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Yuji Ueki
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2019-07-07 00:00:00.000000000 Z
11
+ date: 2019-07-11 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: faraday
@@ -66,6 +66,20 @@ dependencies:
66
66
  - - "~>"
67
67
  - !ruby/object:Gem::Version
68
68
  version: '1.12'
69
+ - !ruby/object:Gem::Dependency
70
+ name: pry
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'
69
83
  - !ruby/object:Gem::Dependency
70
84
  name: rake
71
85
  requirement: !ruby/object:Gem::Requirement
@@ -95,7 +109,7 @@ dependencies:
95
109
  - !ruby/object:Gem::Version
96
110
  version: '0'
97
111
  - !ruby/object:Gem::Dependency
98
- name: pry
112
+ name: rubocop
99
113
  requirement: !ruby/object:Gem::Requirement
100
114
  requirements:
101
115
  - - ">="
@@ -116,6 +130,8 @@ extensions: []
116
130
  extra_rdoc_files: []
117
131
  files:
118
132
  - ".circleci/config.yml"
133
+ - ".rubocop.yml"
134
+ - ".rubocop_todo.yml"
119
135
  - CODE_OF_CONDUCT.md
120
136
  - Gemfile
121
137
  - Gemfile.lock
@@ -151,7 +167,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
151
167
  version: '0'
152
168
  requirements: []
153
169
  rubyforge_project:
154
- rubygems_version: 2.6.14
170
+ rubygems_version: 2.7.6
155
171
  signing_key:
156
172
  specification_version: 4
157
173
  summary: Bitflyer API wrapper