zaif_wrapper 0.1.0 → 0.1.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 +4 -4
- data/Gemfile.lock +1 -1
- data/lib/zaif_wrapper/client.rb +120 -178
- data/lib/zaif_wrapper/version.rb +1 -1
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: e27fd5013f0380c8786937a1f32a7efa10aaf5c9bb159b5c8217be6b5c1a9967
|
4
|
+
data.tar.gz: 4290253e52a8a4a43c2234210c9d448febfe079723542d13b5a12d7e97c4b181
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: '09c228e10cb62b919c54f8d1ef30fa6a0acd3067617402557df60886935580e3abb4e8b07904767137f67a6ec5055573c5b089acda0dd1840afd97a54bda3e70'
|
7
|
+
data.tar.gz: 2e8ab17f36c5a0e8d49d0dc1ec111d951672ec049f3232b7c4a2326bdf464b94e4bb7fa58f598b6b2394c920e0f688a183786a83a5cabc7a5673144c167b2093
|
data/Gemfile.lock
CHANGED
data/lib/zaif_wrapper/client.rb
CHANGED
@@ -6,52 +6,36 @@ require 'websocket-client-simple'
|
|
6
6
|
|
7
7
|
module ZaifWrapper
|
8
8
|
module Client
|
9
|
-
class
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
|
9
|
+
class ZaifParentApi
|
10
|
+
PUBLIC_REQUEST_URL_BASE = 'https://api.zaif.jp/api/1/'.freeze
|
11
|
+
PRIVATE_REQUEST_URL_BASE = 'https://api.zaif.jp/tapi'.freeze
|
12
|
+
FUTURE_REQUEST_URL_BASE = 'https://api.zaif.jp/fapi/1/'.freeze
|
13
|
+
LEVERAGE_REQUEST_URL_BASE = 'https://api.zaif.jp/tlapi'.freeze
|
14
|
+
LEVERAGE_METHODS = ['get_positions', 'position_history', 'active_positions', 'create_position', 'change_position', 'cancel_position'].freeze
|
15
|
+
PUBLIC_METHODS = {
|
16
|
+
:currencies => 'currency_code',
|
17
|
+
:currency_pairs => 'currency_pair',
|
18
|
+
:last_price => 'currency_pair',
|
19
|
+
:ticker => 'currency_pair',
|
20
|
+
:trades => 'currency_pair',
|
21
|
+
:depth => 'currency_pair'
|
22
|
+
}.freeze
|
23
|
+
PRIVATE_METHODS = ['get_info', 'get_info2', 'get_personal_info', 'get_id_info', 'trade_history', 'active_orders', 'trade', 'cancel_order', 'withdraw', 'deposit_history', 'withdraw_history'].freeze
|
24
|
+
FUTURE_METHODS = ['groups', 'last_price', 'ticker', 'trades', 'depth'].freeze
|
25
|
+
|
26
|
+
def get_request(host, path)
|
27
|
+
response = RestClient.get "#{host}#{path}"
|
22
28
|
JSON.parse(response.body)
|
23
29
|
end
|
24
30
|
|
25
|
-
|
26
|
-
|
27
|
-
|
28
|
-
|
29
|
-
|
30
|
-
|
31
|
-
end
|
32
|
-
|
33
|
-
class ZaifPrivateApi
|
34
|
-
REQUEST_URL_BASE = 'https://api.zaif.jp/tapi'
|
35
|
-
|
36
|
-
def initialize(api_key, api_secret)
|
37
|
-
@api_key = api_key
|
38
|
-
@api_secret = api_secret
|
39
|
-
end
|
40
|
-
|
41
|
-
def request(method, params = {})
|
42
|
-
body = {
|
43
|
-
'method' => method,
|
44
|
-
'nonce' => get_nonce
|
31
|
+
def post_request(body, host)
|
32
|
+
body.store('nonce', get_nonce)
|
33
|
+
signature_text = ""
|
34
|
+
body.each_with_index { |param, i|
|
35
|
+
signature_text = signature_text + '&' if i != 0
|
36
|
+
signature_text = "#{signature_text}#{param[0]}=#{param[1]}"
|
45
37
|
}
|
46
|
-
|
47
|
-
unless params.empty?
|
48
|
-
params.each { |param|
|
49
|
-
body.store(param[0], param[1])
|
50
|
-
signature_text = "#{signature_text}&#{param[0]}=#{param[1]}"
|
51
|
-
}
|
52
|
-
end
|
53
|
-
|
54
|
-
response = RestClient.post REQUEST_URL_BASE, body, {
|
38
|
+
response = RestClient.post host, body, {
|
55
39
|
content_type: :json,
|
56
40
|
accept: :json,
|
57
41
|
key: @api_key,
|
@@ -60,55 +44,6 @@ module ZaifWrapper
|
|
60
44
|
JSON.parse(response.body)
|
61
45
|
end
|
62
46
|
|
63
|
-
def get_info
|
64
|
-
request('get_info')
|
65
|
-
end
|
66
|
-
|
67
|
-
def get_info2
|
68
|
-
request('get_info2')
|
69
|
-
end
|
70
|
-
|
71
|
-
def get_personal_info
|
72
|
-
request('get_personal_info')
|
73
|
-
end
|
74
|
-
|
75
|
-
def get_id_info
|
76
|
-
request('get_id_info')
|
77
|
-
end
|
78
|
-
|
79
|
-
def trade_history(params = {})
|
80
|
-
request('trade_history', params)
|
81
|
-
end
|
82
|
-
|
83
|
-
def active_orders(params = {})
|
84
|
-
request('active_orders', params)
|
85
|
-
end
|
86
|
-
|
87
|
-
def trade(params = {})
|
88
|
-
raise "Required parameters are missing" if params["currency_pair"].nil? || params["action"].nil? || params["price"].nil? || params["amount"].nil?
|
89
|
-
request('trade', params)
|
90
|
-
end
|
91
|
-
|
92
|
-
def cancel_order(params = {})
|
93
|
-
raise "Required parameters are missing" if params["order_id"].nil?
|
94
|
-
request('cancel_order', params)
|
95
|
-
end
|
96
|
-
|
97
|
-
def withdraw(params = {})
|
98
|
-
raise "Required parameters are missing" if params["currency"].nil? || params["address"].nil? || params["amount"].nil?
|
99
|
-
request('withdraw', params)
|
100
|
-
end
|
101
|
-
|
102
|
-
def deposit_history(params = {})
|
103
|
-
raise "Required parameters are missing" if params["currency"].nil?
|
104
|
-
request('deposit_history', params)
|
105
|
-
end
|
106
|
-
|
107
|
-
def withdraw_history(params = {})
|
108
|
-
raise "Required parameters are missing" if params["currency"].nil?
|
109
|
-
request('withdraw_history', params)
|
110
|
-
end
|
111
|
-
|
112
47
|
def get_nonce
|
113
48
|
Time.now.to_f.to_i
|
114
49
|
end
|
@@ -116,113 +51,120 @@ module ZaifWrapper
|
|
116
51
|
def create_signature(body)
|
117
52
|
OpenSSL::HMAC::hexdigest(OpenSSL::Digest.new('sha512'), @api_secret, body.to_s)
|
118
53
|
end
|
119
|
-
end
|
120
|
-
|
121
|
-
class ZaifFutureApi
|
122
|
-
REQUEST_URL_BASE = 'https://api.zaif.jp/fapi/1/'
|
123
|
-
|
124
|
-
def request(path)
|
125
|
-
response = RestClient.get "#{REQUEST_URL_BASE}#{path}"
|
126
|
-
JSON.parse(response.body)
|
127
|
-
end
|
128
54
|
|
129
|
-
|
130
|
-
|
131
|
-
|
132
|
-
|
133
|
-
|
134
|
-
|
135
|
-
|
136
|
-
def last_price(group_id, currency_pair)
|
137
|
-
path = "last_price/#{group_id}/#{currency_pair}"
|
138
|
-
request(path)
|
139
|
-
end
|
140
|
-
|
141
|
-
## /ticker/#{group_id}/#{currency_pair}
|
142
|
-
def ticker(group_id, currency_pair)
|
143
|
-
path = "ticker/#{group_id}/#{currency_pair}"
|
144
|
-
request(path)
|
145
|
-
end
|
146
|
-
|
147
|
-
## /trades/{group_id}/{currency_pair}
|
148
|
-
def trades(group_id, currency_pair)
|
149
|
-
path = "trades/#{group_id}/#{currency_pair}"
|
150
|
-
request(path)
|
151
|
-
end
|
152
|
-
|
153
|
-
## /depth/{group_id}/{currency_pair}
|
154
|
-
def depth(group_id, currency_pair)
|
155
|
-
path = "depth/#{group_id}/#{currency_pair}"
|
156
|
-
request(path)
|
55
|
+
end
|
56
|
+
class ZaifPublicApi < ZaifParentApi
|
57
|
+
PUBLIC_METHODS.each do |method_name, params|
|
58
|
+
define_method(method_name) { |params|
|
59
|
+
path = "#{method_name.to_s}/#{params}"
|
60
|
+
get_request(PUBLIC_REQUEST_URL_BASE, path)
|
61
|
+
}
|
157
62
|
end
|
158
63
|
end
|
159
64
|
|
160
|
-
class
|
161
|
-
REQUEST_URL_BASE = 'https://api.zaif.jp/tlapi'
|
162
|
-
|
65
|
+
class ZaifPrivateApi < ZaifParentApi
|
163
66
|
def initialize(api_key, api_secret)
|
164
67
|
@api_key = api_key
|
165
68
|
@api_secret = api_secret
|
166
69
|
end
|
167
70
|
|
168
|
-
def
|
169
|
-
|
170
|
-
|
171
|
-
|
172
|
-
|
173
|
-
|
174
|
-
|
175
|
-
|
176
|
-
|
177
|
-
|
178
|
-
|
71
|
+
def method_missing(name, *args)
|
72
|
+
if PRIVATE_METHODS.include?(name.to_s)
|
73
|
+
klass = class << self; self end
|
74
|
+
klass.class_eval do
|
75
|
+
define_method(name) do |body = {}|
|
76
|
+
check(name, body)
|
77
|
+
body.store("method", name.to_s)
|
78
|
+
post_request(body, PRIVATE_REQUEST_URL_BASE)
|
79
|
+
end
|
80
|
+
end
|
81
|
+
if args.length == 1
|
82
|
+
__send__(name, args[0])
|
83
|
+
else
|
84
|
+
__send__(name)
|
85
|
+
end
|
179
86
|
end
|
180
|
-
|
181
|
-
response = RestClient.post REQUEST_URL_BASE, body, {
|
182
|
-
content_type: :json,
|
183
|
-
accept: :json,
|
184
|
-
key: @api_key,
|
185
|
-
sign: create_signature(signature_text)
|
186
|
-
}
|
187
|
-
JSON.parse(response.body)
|
188
87
|
end
|
189
88
|
|
190
|
-
def
|
191
|
-
|
192
|
-
|
193
|
-
|
194
|
-
|
195
|
-
|
196
|
-
|
197
|
-
|
198
|
-
|
199
|
-
|
200
|
-
|
201
|
-
|
202
|
-
|
203
|
-
end
|
204
|
-
|
205
|
-
def create_position(params = {})
|
206
|
-
raise "Required parameters are missing" if params["type"].nil? || (params["type"] == 'futures' && params["group_id"].nil?) || params["currency_pair"].nil? || params["action"].nil? || params["price"].nil? || params["amount"].nil? || params["leverage"].nil?
|
207
|
-
request('create_position', params)
|
89
|
+
def check(method_name, body)
|
90
|
+
case method_name
|
91
|
+
when 'trade' then
|
92
|
+
raise "Required parameters are missing" if body["currency_pair"].nil? || body["action"].nil? || body["price"].nil? || body["amount"].nil?
|
93
|
+
when 'cancel_order' then
|
94
|
+
raise "Required parameters are missing" if body["order_id"].nil?
|
95
|
+
when 'withdraw' then
|
96
|
+
raise "Required parameters are missing" if body["currency"].nil? || body["address"].nil? || body["amount"].nil?
|
97
|
+
when 'deposit_history' then
|
98
|
+
raise "Required parameters are missing" if body["currency"].nil?
|
99
|
+
when 'withdraw_history' then
|
100
|
+
raise "Required parameters are missing" if body["currency"].nil?
|
101
|
+
end
|
208
102
|
end
|
103
|
+
end
|
209
104
|
|
210
|
-
|
211
|
-
|
212
|
-
|
105
|
+
class ZaifFutureApi < ZaifParentApi
|
106
|
+
def method_missing(name, *args)
|
107
|
+
if FUTURE_METHODS.include?(name.to_s)
|
108
|
+
klass = class << self; self end
|
109
|
+
klass.class_eval do
|
110
|
+
define_method(name) do |body = []|
|
111
|
+
path = name
|
112
|
+
if body.length != 0
|
113
|
+
body.each do |param|
|
114
|
+
path = path + "/#{param}"
|
115
|
+
end
|
116
|
+
end
|
117
|
+
get_request(FUTURE_REQUEST_URL_BASE, path)
|
118
|
+
end
|
119
|
+
end
|
120
|
+
if args.length == 1
|
121
|
+
__send__(name, args[0])
|
122
|
+
else
|
123
|
+
__send__(name)
|
124
|
+
end
|
125
|
+
end
|
213
126
|
end
|
127
|
+
end
|
214
128
|
|
215
|
-
|
216
|
-
|
217
|
-
|
129
|
+
class ZaifLeverageApi < ZaifParentApi
|
130
|
+
def initialize(api_key, api_secret)
|
131
|
+
@api_key = api_key
|
132
|
+
@api_secret = api_secret
|
218
133
|
end
|
219
134
|
|
220
|
-
def
|
221
|
-
|
135
|
+
def method_missing(name, *args)
|
136
|
+
if LEVERAGE_METHODS.include?(name.to_s)
|
137
|
+
klass = class << self; self end
|
138
|
+
klass.class_eval do
|
139
|
+
define_method(name) do |body = {}|
|
140
|
+
check(name, body)
|
141
|
+
body.store("method", name.to_s)
|
142
|
+
post_request(body, LEVERAGE_REQUEST_URL_BASE)
|
143
|
+
end
|
144
|
+
end
|
145
|
+
if args.length == 1
|
146
|
+
__send__(name, args[0])
|
147
|
+
else
|
148
|
+
__send__(name)
|
149
|
+
end
|
150
|
+
end
|
222
151
|
end
|
223
152
|
|
224
|
-
def
|
225
|
-
|
153
|
+
def check(method_name, body)
|
154
|
+
case method_name
|
155
|
+
when 'get_positions' then
|
156
|
+
raise "Required parameters are missing" if body["type"].nil? || (body["type"] == 'futures' && body["group_id"].nil?)
|
157
|
+
when 'position_history' then
|
158
|
+
raise "Required parameters are missing" if body["type"].nil? || (body["type"] == 'futures' && body["group_id"].nil?)
|
159
|
+
when 'active_positions' then
|
160
|
+
raise "Required parameters are missing" if body["type"].nil? || (body["type"] == 'futures' && body["group_id"].nil?)
|
161
|
+
when 'create_position' then
|
162
|
+
raise "Required parameters are missing" if body["type"].nil? || (body["type"] == 'futures' && body["group_id"].nil?) || body["currency_pair"].nil? || body["action"].nil? || body["price"].nil? || body["amount"].nil? || body["leverage"].nil?
|
163
|
+
when 'change_position' then
|
164
|
+
raise "Required parameters are missing" if body["type"].nil? || (body["type"] == 'futures' && body["group_id"].nil?) || body["leverage_id"].nil? || body["price"].nil?
|
165
|
+
when 'cancel_position' then
|
166
|
+
raise "Required parameters are missing" if body["type"].nil? || (body["type"] == 'futures' && body["group_id"].nil?) || body["leverage_id"].nil?
|
167
|
+
end
|
226
168
|
end
|
227
169
|
end
|
228
170
|
|
data/lib/zaif_wrapper/version.rb
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: zaif_wrapper
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.1.
|
4
|
+
version: 0.1.1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- cobafan
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date: 2018-02-
|
11
|
+
date: 2018-02-12 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: rest-client
|