bitflyer 2.0.1 → 2.0.3

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: 9b7d3681f63edf4ec68d0d5958e386100fdb49771f6e9effc6b02b94c9c5c577
4
- data.tar.gz: 12dfafaa76aec07e11c2abc2386ab19cd04cd821c208dd928f36923f9eb102a0
3
+ metadata.gz: fa057685f2e11b3a0bf9f46f0282f240e57e22c4cfbb507e4d92770b8441a997
4
+ data.tar.gz: ae4ce59c0e407b7e80d1970b7f716037fcf5c79e09abee07074b019873fcc5f2
5
5
  SHA512:
6
- metadata.gz: 9b0a95bc8cc1d80d8b3581c36990c076da8d6345a73548e59f54a7d4907f3e665fccf127fe7c503ef175d45d268aa83218e6fb619fa021733914e944b29fc91d
7
- data.tar.gz: 63a055d9b5f1e975546d8afccdf434fe210952b10a91847a1d28f260dbc856f393b9564555c6275237eb499819289543767f18c8d8fde93a173a85a9f0c9920e
6
+ metadata.gz: 68fb55c3fb2bf4e52595ad2574913b425927f0db1b21d59181163306354d4d2fed6cf0d60213732d36a0cf18e59910e21b00a61311a4d0f8497885777414c5e0
7
+ data.tar.gz: 78819f20b021ffd427837b9525c057fd3f33ef7b9237d274e92fe3089660d8e16255bf2fd70c82d0e2a67a82c22c6aede1e67fb02e1b8b6d15f0578a56549dc2
@@ -0,0 +1 @@
1
+ * @unhappychoice
@@ -1,23 +1,15 @@
1
1
  version: 2
2
2
  updates:
3
- - package-ecosystem: bundler
4
- directory: "/"
5
- schedule:
6
- interval: daily
7
- time: "12:00"
8
- timezone: Asia/Tokyo
9
- open-pull-requests-limit: 20
10
- reviewers:
11
- - unhappychoice
12
- allow:
13
- - dependency-type: direct
14
- - dependency-type: indirect
15
- ignore:
16
- - dependency-name: rubocop
17
- versions:
18
- - 1.12.0
19
- - 1.12.1
20
- - dependency-name: regexp_parser
21
- versions:
22
- - 2.1.0
23
- - 2.1.1
3
+ - package-ecosystem: bundler
4
+ directory: "/"
5
+ schedule:
6
+ interval: daily
7
+ time: "12:00"
8
+ timezone: Asia/Tokyo
9
+ open-pull-requests-limit: 20
10
+ allow:
11
+ - dependency-type: direct
12
+ - dependency-type: indirect
13
+ ignore:
14
+ - dependency-name: parallel
15
+ update-types: ["version-update:semver-major"]
data/Gemfile.lock CHANGED
@@ -1,9 +1,7 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- bitflyer (2.0.1)
5
- faraday (>= 1.0)
6
- faraday_middleware (>= 1.2)
4
+ bitflyer (2.0.3)
7
5
  websocket-client-simple (>= 0.9)
8
6
 
9
7
  GEM
@@ -14,81 +12,58 @@ GEM
14
12
  coderay (1.1.3)
15
13
  diff-lcs (1.6.2)
16
14
  event_emitter (0.2.6)
17
- faraday (1.10.4)
18
- faraday-em_http (~> 1.0)
19
- faraday-em_synchrony (~> 1.0)
20
- faraday-excon (~> 1.1)
21
- faraday-httpclient (~> 1.0)
22
- faraday-multipart (~> 1.0)
23
- faraday-net_http (~> 1.0)
24
- faraday-net_http_persistent (~> 1.0)
25
- faraday-patron (~> 1.0)
26
- faraday-rack (~> 1.0)
27
- faraday-retry (~> 1.0)
28
- ruby2_keywords (>= 0.0.4)
29
- faraday-em_http (1.0.0)
30
- faraday-em_synchrony (1.0.1)
31
- faraday-excon (1.1.0)
32
- faraday-httpclient (1.0.1)
33
- faraday-multipart (1.1.1)
34
- multipart-post (~> 2.0)
35
- faraday-net_http (1.0.2)
36
- faraday-net_http_persistent (1.2.0)
37
- faraday-patron (1.0.0)
38
- faraday-rack (1.0.0)
39
- faraday-retry (1.0.3)
40
- faraday_middleware (1.2.1)
41
- faraday (~> 1.0)
42
- json (2.12.2)
43
- language_server-protocol (3.17.0.5)
15
+ io-console (0.8.2)
16
+ json (2.21.1)
17
+ language_server-protocol (3.17.0.6)
44
18
  lint_roller (1.1.0)
45
19
  method_source (1.1.0)
46
- multipart-post (2.4.1)
47
20
  mutex_m (0.3.0)
48
- parallel (1.27.0)
49
- parser (3.3.8.0)
21
+ parallel (1.28.0)
22
+ parser (3.3.12.0)
50
23
  ast (~> 2.4.1)
51
24
  racc
52
- prism (1.4.0)
53
- pry (0.15.2)
25
+ prism (1.9.0)
26
+ pry (0.16.0)
54
27
  coderay (~> 1.1)
55
28
  method_source (~> 1.0)
29
+ reline (>= 0.6.0)
56
30
  racc (1.8.1)
57
31
  rainbow (3.1.1)
58
- rake (13.3.0)
59
- regexp_parser (2.10.0)
60
- rspec (3.13.1)
32
+ rake (13.4.2)
33
+ regexp_parser (2.12.0)
34
+ reline (0.6.3)
35
+ io-console (~> 0.5)
36
+ rspec (3.13.2)
61
37
  rspec-core (~> 3.13.0)
62
38
  rspec-expectations (~> 3.13.0)
63
39
  rspec-mocks (~> 3.13.0)
64
- rspec-core (3.13.4)
40
+ rspec-core (3.13.6)
65
41
  rspec-support (~> 3.13.0)
66
42
  rspec-expectations (3.13.5)
67
43
  diff-lcs (>= 1.2.0, < 2.0)
68
44
  rspec-support (~> 3.13.0)
69
- rspec-mocks (3.13.5)
45
+ rspec-mocks (3.13.8)
70
46
  diff-lcs (>= 1.2.0, < 2.0)
71
47
  rspec-support (~> 3.13.0)
72
- rspec-support (3.13.4)
73
- rubocop (1.77.0)
48
+ rspec-support (3.13.7)
49
+ rubocop (1.88.2)
74
50
  json (~> 2.3)
75
51
  language_server-protocol (~> 3.17.0.2)
76
52
  lint_roller (~> 1.1.0)
77
- parallel (~> 1.10)
53
+ parallel (>= 1.10)
78
54
  parser (>= 3.3.0.2)
79
55
  rainbow (>= 2.2.2, < 4.0)
80
56
  regexp_parser (>= 2.9.3, < 3.0)
81
- rubocop-ast (>= 1.45.1, < 2.0)
57
+ rubocop-ast (>= 1.49.0, < 2.0)
82
58
  ruby-progressbar (~> 1.7)
83
59
  unicode-display_width (>= 2.4.0, < 4.0)
84
- rubocop-ast (1.45.1)
60
+ rubocop-ast (1.50.0)
85
61
  parser (>= 3.3.7.2)
86
- prism (~> 1.4)
62
+ prism (~> 1.7)
87
63
  ruby-progressbar (1.13.0)
88
- ruby2_keywords (0.0.5)
89
- unicode-display_width (3.1.4)
90
- unicode-emoji (~> 4.0, >= 4.0.4)
91
- unicode-emoji (4.0.4)
64
+ unicode-display_width (3.2.0)
65
+ unicode-emoji (~> 4.1)
66
+ unicode-emoji (4.2.0)
92
67
  websocket (1.2.11)
93
68
  websocket-client-simple (0.9.0)
94
69
  base64
data/README.md CHANGED
@@ -3,11 +3,10 @@
3
3
  [![All Contributors](https://img.shields.io/badge/all_contributors-4-orange.svg?style=flat-square)](#contributors-)
4
4
  <!-- ALL-CONTRIBUTORS-BADGE:END -->
5
5
  [![Gem Version](https://badge.fury.io/rb/bitflyer.svg)](https://badge.fury.io/rb/bitflyer)
6
- [![Circle CI](https://circleci.com/gh/unhappychoice/bitflyer.svg?style=shield)](https://circleci.com/gh/unhappychoice/bitflyer)
7
- [![Code Climate](https://codeclimate.com/github/unhappychoice/bitflyer/badges/gpa.svg)](https://codeclimate.com/github/unhappychoice/bitflyer)
8
- [![Libraries.io dependency status for GitHub repo](https://img.shields.io/librariesio/github/unhappychoice/bitflyer.svg)](https://libraries.io/github/unhappychoice/bitflyer)
6
+ [![Code Climate](https://codeclimate.com/github/bitflyer-tools/bitflyer/badges/gpa.svg)](https://codeclimate.com/github/bitflyer-tools/bitflyer)
7
+ [![Libraries.io dependency status for GitHub repo](https://img.shields.io/librariesio/github/bitflyer-tools/bitflyer.svg)](https://libraries.io/github/bitflyer-tools/bitflyer)
9
8
  ![](http://ruby-gem-downloads-badge.herokuapp.com/bitflyer?type=total)
10
- ![GitHub](https://img.shields.io/github/license/unhappychoice/bitflyer.svg)
9
+ ![GitHub](https://img.shields.io/github/license/bitflyer-tools/bitflyer.svg)
11
10
 
12
11
  bitflyer is a wrapper interface of [Bitflyer lightning API](https://lightning.bitflyer.jp/docs)
13
12
 
@@ -115,3 +114,7 @@ Thanks goes to these wonderful people ([emoji key](https://allcontributors.org/d
115
114
  <!-- ALL-CONTRIBUTORS-LIST:END -->
116
115
 
117
116
  This project follows the [all-contributors](https://github.com/all-contributors/all-contributors) specification. Contributions of any kind welcome!
117
+
118
+ ## Author
119
+
120
+ [@unhappychoice](https://unhappychoice.com)
data/bitflyer.gemspec CHANGED
@@ -18,8 +18,6 @@ Gem::Specification.new do |spec|
18
18
  spec.executables = spec.files.grep(%r{^exe/}) { |f| File.basename(f) }
19
19
  spec.require_paths = ['lib']
20
20
 
21
- spec.add_dependency 'faraday', '>= 1.0'
22
- spec.add_dependency 'faraday_middleware', '>= 1.2'
23
21
  spec.add_dependency 'websocket-client-simple', '>= 0.9'
24
22
  spec.add_development_dependency 'bundler', '~> 2.0'
25
23
  spec.add_development_dependency 'pry'
data/lib/bitflyer/http.rb CHANGED
@@ -3,46 +3,62 @@
3
3
  require 'bitflyer'
4
4
  require 'bitflyer/http/public'
5
5
  require 'bitflyer/http/private'
6
- require 'faraday'
7
- require 'faraday_middleware'
6
+ require 'net/http'
7
+ require 'uri'
8
+ require 'json'
8
9
  require 'openssl'
9
10
 
10
11
  module Bitflyer
11
12
  module HTTP
12
- class Connection
13
- extend Forwardable
13
+ BASE_URL = 'https://api.bitflyer.jp'
14
14
 
15
- def_delegators :@connection, :get, :post
15
+ Response = Struct.new(:body)
16
16
 
17
+ class Connection
17
18
  def initialize(key, secret)
18
- @connection = Faraday::Connection.new(url: 'https://api.bitflyer.jp') do |f|
19
- f.request :json
20
- f.response :json
21
- f.use Authentication, key, secret
22
- f.adapter Faraday.default_adapter
23
- end
24
- end
25
- end
26
-
27
- class Authentication < Faraday::Middleware
28
- def initialize(app, key, secret)
29
- super(app)
30
19
  @key = key
31
20
  @secret = secret
21
+ @uri = URI.parse(BASE_URL)
22
+ end
23
+
24
+ def get(path, params = {})
25
+ query = URI.encode_www_form(params.compact)
26
+ full_path = query.empty? ? path : "#{path}?#{query}"
27
+ request = Net::HTTP::Get.new(full_path, default_headers)
28
+ sign_request(request, full_path)
29
+ Response.new(execute(request))
32
30
  end
33
31
 
34
- def call(env)
35
- return @app.call(env) if @key.nil? || @secret.nil?
32
+ def post(path, body = {})
33
+ request = Net::HTTP::Post.new(path, default_headers.merge('Content-Type' => 'application/json'))
34
+ request.body = JSON.generate(body.compact)
35
+ sign_request(request, path, request.body)
36
+ Response.new(execute(request))
37
+ end
38
+
39
+ private
40
+
41
+ def default_headers
42
+ { 'Accept' => 'application/json' }
43
+ end
44
+
45
+ def sign_request(request, path, body = '')
46
+ return if @key.nil? || @secret.nil?
36
47
 
37
48
  timestamp = Time.now.to_i.to_s
38
- method = env[:method].to_s.upcase
39
- path = env[:url].path + (env[:url].query ? "?#{env[:url].query}" : '')
40
- body = env[:body] || ''
41
- signature = OpenSSL::HMAC.hexdigest(OpenSSL::Digest.new('sha256'), @secret, timestamp + method + path + body)
42
- env[:request_headers]['ACCESS-KEY'] = @key if @key
43
- env[:request_headers]['ACCESS-TIMESTAMP'] = timestamp
44
- env[:request_headers]['ACCESS-SIGN'] = signature
45
- @app.call env
49
+ method = request.method.upcase
50
+ text = timestamp + method + path + (body || '')
51
+ signature = OpenSSL::HMAC.hexdigest(OpenSSL::Digest.new('sha256'), @secret, text)
52
+ request['ACCESS-KEY'] = @key
53
+ request['ACCESS-TIMESTAMP'] = timestamp
54
+ request['ACCESS-SIGN'] = signature
55
+ end
56
+
57
+ def execute(request)
58
+ response = Net::HTTP.start(@uri.host, @uri.port, use_ssl: true) { |http| http.request(request) }
59
+ JSON.parse(response.body)
60
+ rescue JSON::ParserError
61
+ response.body
46
62
  end
47
63
  end
48
64
  end
@@ -1,5 +1,6 @@
1
1
  # frozen_string_literal: true
2
2
 
3
+ require 'forwardable'
3
4
  require_relative 'websocket'
4
5
 
5
6
  module Bitflyer
@@ -15,6 +16,7 @@ module Bitflyer
15
16
 
16
17
  class Client
17
18
  extend Forwardable
19
+
18
20
  def_delegators :@websocket_client, :ready=, :disconnected=
19
21
  attr_accessor :websocket_client, :ping_interval, :ping_timeout, :last_ping_at, :last_pong_at
20
22
 
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module Bitflyer
4
- VERSION = '2.0.1'
4
+ VERSION = '2.0.3'
5
5
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: bitflyer
3
3
  version: !ruby/object:Gem::Version
4
- version: 2.0.1
4
+ version: 2.0.3
5
5
  platform: ruby
6
6
  authors:
7
7
  - Yuji Ueki
@@ -9,34 +9,6 @@ bindir: exe
9
9
  cert_chain: []
10
10
  date: 1980-01-02 00:00:00.000000000 Z
11
11
  dependencies:
12
- - !ruby/object:Gem::Dependency
13
- name: faraday
14
- requirement: !ruby/object:Gem::Requirement
15
- requirements:
16
- - - ">="
17
- - !ruby/object:Gem::Version
18
- version: '1.0'
19
- type: :runtime
20
- prerelease: false
21
- version_requirements: !ruby/object:Gem::Requirement
22
- requirements:
23
- - - ">="
24
- - !ruby/object:Gem::Version
25
- version: '1.0'
26
- - !ruby/object:Gem::Dependency
27
- name: faraday_middleware
28
- requirement: !ruby/object:Gem::Requirement
29
- requirements:
30
- - - ">="
31
- - !ruby/object:Gem::Version
32
- version: '1.2'
33
- type: :runtime
34
- prerelease: false
35
- version_requirements: !ruby/object:Gem::Requirement
36
- requirements:
37
- - - ">="
38
- - !ruby/object:Gem::Version
39
- version: '1.2'
40
12
  - !ruby/object:Gem::Dependency
41
13
  name: websocket-client-simple
42
14
  requirement: !ruby/object:Gem::Requirement
@@ -129,6 +101,7 @@ extensions: []
129
101
  extra_rdoc_files: []
130
102
  files:
131
103
  - ".all-contributorsrc"
104
+ - ".github/CODEOWNERS"
132
105
  - ".github/dependabot.yml"
133
106
  - ".github/workflows/release.yaml"
134
107
  - ".github/workflows/test.yml"