ruby-liquid 0.1.4 → 0.1.5
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/.rspec_status +3 -3
- data/Gemfile.lock +1 -1
- data/README.md +5 -0
- data/lib/liquid/client.rb +31 -14
- data/lib/liquid/version.rb +1 -1
- metadata +1 -1
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 8665f261b108cff88db5347cd195bb2eb58118c80d6d65b62642367f4ed2efa9
|
4
|
+
data.tar.gz: 58d902fe3cf88b86fbb15e890ed8495877970d4a50457afdc9de06bc4dbc9c59
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: f40cf9cf6b90ddc83eb15fea7cb06dbfc3cc8efd91cb103650a5420a3eaae12a596bab64c7c7886cee5dbebf9c5bf1b36d2435d2825792a172c93acac582e2b1
|
7
|
+
data.tar.gz: d0881a40e3e5e880cade875585efd9995effb0b92fe886d4cd3fea467d69c6a949732c1558455601a7d4a2846c8f6e41de3141d57cb53b086717029dc8670410
|
data/.rspec_status
CHANGED
@@ -1,5 +1,5 @@
|
|
1
1
|
example_id | status | run_time |
|
2
2
|
---------------------------- | ------ | --------------- |
|
3
|
-
./spec/liquid_spec.rb[1:1] | passed | 0.
|
4
|
-
./spec/liquid_spec.rb[1:2:1] | passed | 0.
|
5
|
-
./spec/liquid_spec.rb[1:3:1] | passed | 0.
|
3
|
+
./spec/liquid_spec.rb[1:1] | passed | 0.0011 seconds |
|
4
|
+
./spec/liquid_spec.rb[1:2:1] | passed | 0.73593 seconds |
|
5
|
+
./spec/liquid_spec.rb[1:3:1] | passed | 0.48637 seconds |
|
data/Gemfile.lock
CHANGED
data/README.md
CHANGED
@@ -31,9 +31,14 @@ liquid_client = Liquid::Client.new(token: token, secret: secret)
|
|
31
31
|
liquid_client.product
|
32
32
|
liquid_client.product_id("BCHJPY")
|
33
33
|
liquid_client.orders
|
34
|
+
liquid_client.active_orders
|
34
35
|
liquid_client.balance
|
36
|
+
liquid_client.limit_buy_price
|
37
|
+
liquid_client.limit_sell_price
|
35
38
|
# post
|
36
39
|
liquid_client.create_order(pair: "BCHJPY", side: 'buy', quantity: 0.01, price: 40000)
|
40
|
+
# put
|
41
|
+
liquid_client.cancel_order(id)
|
37
42
|
```
|
38
43
|
|
39
44
|
## Contributing
|
data/lib/liquid/client.rb
CHANGED
@@ -1,12 +1,11 @@
|
|
1
1
|
module Liquid
|
2
2
|
class Client
|
3
3
|
class InvalidArgument < StandardError; end
|
4
|
+
class ResponseParseError < StandardError; end
|
4
5
|
|
5
6
|
attr_reader :http, :token_id, :user_secret, :path, :params
|
6
7
|
attr_accessor :url
|
7
8
|
|
8
|
-
|
9
|
-
|
10
9
|
def initialize(token, secret)
|
11
10
|
@url = "https://api.liquid.com"
|
12
11
|
@http = http
|
@@ -14,7 +13,7 @@ module Liquid
|
|
14
13
|
@user_secret = secret || ENV["LIQUID_SECRET"]
|
15
14
|
end
|
16
15
|
|
17
|
-
#
|
16
|
+
# GET
|
18
17
|
def product
|
19
18
|
@path = '/products'
|
20
19
|
get_request
|
@@ -25,6 +24,11 @@ module Liquid
|
|
25
24
|
get_request
|
26
25
|
end
|
27
26
|
|
27
|
+
def active_orders
|
28
|
+
@path = '/orders?status=live'
|
29
|
+
get_request
|
30
|
+
end
|
31
|
+
|
28
32
|
def balance
|
29
33
|
@path = '/accounts/balance'
|
30
34
|
get_request
|
@@ -40,15 +44,15 @@ module Liquid
|
|
40
44
|
product_detail(pair)["id"].to_i
|
41
45
|
end
|
42
46
|
|
43
|
-
def
|
47
|
+
def limit_buy_price(pair)
|
44
48
|
product_detail(pair)["market_bid"].to_f
|
45
49
|
end
|
46
50
|
|
47
|
-
def
|
51
|
+
def limit_sell_price(pair)
|
48
52
|
product_detail(pair)["market_ask"].to_f
|
49
53
|
end
|
50
54
|
|
51
|
-
#
|
55
|
+
# POST
|
52
56
|
def create_order(order_type: "limit", pair: nil, side: nil, quantity: nil, price: nil)
|
53
57
|
pair_id = product_id(pair)
|
54
58
|
raise InvalidArgument if side.nil? || quantity.nil? || price.nil?
|
@@ -66,6 +70,12 @@ module Liquid
|
|
66
70
|
post_request
|
67
71
|
end
|
68
72
|
|
73
|
+
# PUT
|
74
|
+
def cancel_order(id)
|
75
|
+
@path = "/orders/#{id}/cancel"
|
76
|
+
put_request
|
77
|
+
end
|
78
|
+
|
69
79
|
private
|
70
80
|
def http
|
71
81
|
uri = URI.parse(url)
|
@@ -76,23 +86,30 @@ module Liquid
|
|
76
86
|
|
77
87
|
def get_request
|
78
88
|
request = Net::HTTP::Get.new(path)
|
79
|
-
request
|
80
|
-
request.add_field('X-Quoine-Auth', signature)
|
81
|
-
request.add_field('Content-Type', 'application/json')
|
82
|
-
response = http.request(request)
|
83
|
-
# TODO: error handling
|
84
|
-
JSON.parse(response.body)
|
89
|
+
request(request)
|
85
90
|
end
|
86
91
|
|
87
92
|
def post_request
|
88
93
|
request = Net::HTTP::Post.new(path)
|
89
94
|
request.body = @params
|
95
|
+
request(request)
|
96
|
+
end
|
97
|
+
|
98
|
+
def put_request
|
99
|
+
request = Net::HTTP::Put.new(path)
|
100
|
+
request(request)
|
101
|
+
end
|
102
|
+
|
103
|
+
def request(request)
|
90
104
|
request.add_field('X-Quoine-API-Version', '2')
|
91
105
|
request.add_field('X-Quoine-Auth', signature)
|
92
106
|
request.add_field('Content-Type', 'application/json')
|
93
107
|
response = http.request(request)
|
94
|
-
|
95
|
-
|
108
|
+
begin
|
109
|
+
JSON.parse(response.body)
|
110
|
+
rescue JSON::ParserError
|
111
|
+
raise ResponseParseError
|
112
|
+
end
|
96
113
|
end
|
97
114
|
|
98
115
|
def auth_payload
|
data/lib/liquid/version.rb
CHANGED