bitflyer 0.0.1 → 0.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
  SHA1:
3
- metadata.gz: 57c2f2187e13ad6c30dbd328ecb74b854b557c44
4
- data.tar.gz: c8e9384069f8d3639dfdd73b15b4abb0a744d27f
3
+ metadata.gz: 68b05e11050f706d4c1e443bd007df0caba0a704
4
+ data.tar.gz: d045ce96354b64e51289a672cefc948ec89c0400
5
5
  SHA512:
6
- metadata.gz: 43e93eb1b75538995808dca61707bb0398909527ab9a0b4c933b1577e8236d00a0409280d9d92773d5aa3cc15b0b7d971411b39c907537f0bfb6a0f88b7ecda1
7
- data.tar.gz: dbd9979f1b377c48e4ec369c3ad75a7c8cf5ec2087009ad6fecdfd00f14c24a9547c965a456cd776308faa9358378c7063fb5124bdec647eaa3f0a7284aebfe9
6
+ metadata.gz: b69cc601884de67623c571b471981f9498920e39ef6953aae1801b3f93fe5034a58ebc908ad2313b60e1ac186b42fd68371f40e0c47e82b71d632de4fdd63442
7
+ data.tar.gz: a543de9dacd759423eba7f331adaa389c149a94b01dd596f6f7c19f09ad2fb8522ae4769f6b656ff8d0beaacb02275040fc2404379b5a525aea5040c5bda7c88
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- bitflyer (0.0.1)
4
+ bitflyer (0.0.2)
5
5
  faraday (~> 0.12.2)
6
6
  faraday_middleware (~> 0.11.0.1)
7
7
  pubnub (~> 4.0.22)
data/README.md CHANGED
@@ -1,4 +1,9 @@
1
1
  # bitflyer
2
+ [![Gem Version](https://badge.fury.io/rb/bitflyer.svg)](https://badge.fury.io/rb/bitflyer)
3
+ [![Circle CI](https://circleci.com/gh/unhappychoice/bitflyer.svg?style=shield)](https://circleci.com/gh/unhappychoice/bitflyer)
4
+ [![Code Climate](https://codeclimate.com/github/unhappychoice/bitflyer/badges/gpa.svg)](https://codeclimate.com/github/unhappychoice/bitflyer)
5
+ [![Dependency Status](https://gemnasium.com/badges/github.com/unhappychoice/bitflyer.svg)](https://gemnasium.com/github.com/unhappychoice/bitflyer)
6
+ ![](http://ruby-gem-downloads-badge.herokuapp.com/bitflyer?type=total)
2
7
 
3
8
  bitflyer is a wrapper interface of [Bitflyer lightning API](https://lightning.bitflyer.jp/docs)
4
9
 
@@ -12,7 +17,15 @@ gem install bitflyer
12
17
 
13
18
  ### HTTP API
14
19
 
15
- TBD
20
+ #### Example
21
+
22
+ ```ruby
23
+ public_client = Bitflyer.http_public_client
24
+ p public_client.board # will print board snapshot
25
+
26
+ private_client = Bitflyer.http_private_client('YOUR_API_KEY', 'YOUR_API_SECRET')
27
+ p private_client.positions # will print your positions
28
+ ```
16
29
 
17
30
  ### Realtime API
18
31
 
@@ -32,7 +45,7 @@ API format is like `{event_name}_{product_code}`.
32
45
  #### Example
33
46
 
34
47
  ```ruby
35
- client = Bitflyer::Realtime.new
48
+ client = Bitflyer.realtime_client
36
49
  client.ticker_btc_jpy = ->(json){ p json } # will print json object
37
50
  client.executions_btc_jpy = ->(json){ p json }
38
51
  # ...
@@ -11,8 +11,8 @@ module Bitflyer
11
11
  Bitflyer::HTTP::Public::Client.new
12
12
  end
13
13
 
14
- def http_private_client
15
- Bitflyer::HTTP::Private::Client.new
14
+ def http_private_client(key, secret)
15
+ Bitflyer::HTTP::Private::Client.new(key, secret)
16
16
  end
17
17
 
18
18
  module_function :realtime_client, :http_public_client, :http_private_client
@@ -3,6 +3,7 @@ require 'bitflyer/http/public'
3
3
  require 'bitflyer/http/private'
4
4
  require 'faraday'
5
5
  require 'faraday_middleware'
6
+ require 'openssl'
6
7
 
7
8
  module Bitflyer
8
9
  module HTTP
@@ -11,13 +12,34 @@ module Bitflyer
11
12
 
12
13
  def_delegators :@connection, :get, :post
13
14
 
14
- def initialize
15
- @connection = Faraday::Connection.new(:url => 'https://api.bitflyer.jp/v1') do |f|
15
+ def initialize(key, secret)
16
+ @connection = Faraday::Connection.new(:url => 'https://api.bitflyer.jp') do |f|
16
17
  f.request :json
17
18
  f.response :json
19
+ f.use Authentication, key, secret
18
20
  f.adapter Faraday.default_adapter
19
21
  end
20
22
  end
21
23
  end
24
+
25
+ class Authentication < Faraday::Middleware
26
+ def initialize(app, key, secret)
27
+ super(app)
28
+ @key = key
29
+ @secret = secret
30
+ end
31
+
32
+ def call(env)
33
+ timestamp = Time.now.to_i.to_s
34
+ method = env[:method].to_s.upcase
35
+ path = env[:url].path + (env[:url].query ? '?' + env[:url].query : '')
36
+ body = env[:body] || ''
37
+ signature = OpenSSL::HMAC.hexdigest(OpenSSL::Digest.new('sha256'), @secret, timestamp + method + path + body)
38
+ env[:request_headers]['ACCESS-KEY'] = @key if @key
39
+ env[:request_headers]['ACCESS-TIMESTAMP'] = timestamp
40
+ env[:request_headers]['ACCESS-SIGN'] = signature
41
+ @app.call env
42
+ end
43
+ end
22
44
  end
23
45
  end
@@ -2,8 +2,24 @@ module Bitflyer
2
2
  module HTTP
3
3
  module Private
4
4
  class Client
5
- def initialize
6
- @connection = Connection.new
5
+ def initialize(key, secret)
6
+ @connection = Connection.new(key, secret)
7
+ end
8
+
9
+ def permissions
10
+ @connection.get('/v1/me/getpermissions').body
11
+ end
12
+
13
+ def balance
14
+ @connection.get('/v1/me/getbalance').body
15
+ end
16
+
17
+ def collateral
18
+ @connection.get('/v1/me/getcollateral').body
19
+ end
20
+
21
+ def positions
22
+ @connection.get('/v1/me/getpositions', { product_code: 'FX_BTC_JPY' }).body
7
23
  end
8
24
  end
9
25
  end
@@ -7,27 +7,27 @@ module Bitflyer
7
7
  end
8
8
 
9
9
  def health
10
- @connection.get('gethealth').body
10
+ @connection.get('/v1/gethealth').body
11
11
  end
12
12
 
13
13
  def markets
14
- @connection.get('markets').body
14
+ @connection.get('/v1/markets').body
15
15
  end
16
16
 
17
17
  def board(product_code = 'BTC_JPY')
18
- @connection.get('board', { product_code: product_code }).body
18
+ @connection.get('/v1/board', { product_code: product_code }).body
19
19
  end
20
20
 
21
21
  def ticker(product_code = 'BTC_JPY')
22
- @connection.get('ticker', { product_code: product_code }).body
22
+ @connection.get('/v1/ticker', { product_code: product_code }).body
23
23
  end
24
24
 
25
25
  def executions(product_code = 'BTC_JPY')
26
- @connection.get('executions', { product_code: product_code }).body
26
+ @connection.get('/v1/executions', { product_code: product_code }).body
27
27
  end
28
28
 
29
29
  def chats(from_date = (Time.now - 5 * 24 * 60 * 60))
30
- @connection.get('getchats', { from_date: from_date }).body
30
+ @connection.get('/v1/getchats', { from_date: from_date }).body
31
31
  end
32
32
  end
33
33
  end
@@ -1,3 +1,3 @@
1
1
  module Bitflyer
2
- VERSION = '0.0.1'
2
+ VERSION = '0.0.2'
3
3
  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: 0.0.1
4
+ version: 0.0.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - Yuji Ueki