quadrigacx 0.2.0 → 0.3.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
2
  SHA1:
3
- metadata.gz: f0b7ec3af2cf03eb0b5c8bf0a4c1a6e3622f4baa
4
- data.tar.gz: 433c6e60a3c4cabc0bbee89be191c2bef8c29dd3
3
+ metadata.gz: fc8881657cf901eefb21ed54c54106ffddf60564
4
+ data.tar.gz: f5ebdac616ec2f58aeae685fa3c97ba9569a3d49
5
5
  SHA512:
6
- metadata.gz: adf8015e44ce0ed3f57adba665584b7f953ea5bbfcebedb3db29405deb3a231654136d74763397495adc3cfb5ea294a54e9f042be6804c3d3ac21e0ad4507a33
7
- data.tar.gz: 3a345dd6201f4cdf6e534bb0c7d027d7fbb6396f85b977b26df086c1a5a7715e64f588d576d1ebd528afd2e53c33edc70071c07f47f13a2e555fb8b6ad1c749d
6
+ metadata.gz: 5f34f6662e7b5b554d63ba7230f8aa7071981f4806897fa412f720b49ff56b501ee1577ea32b2dd2374c41858f206f0d03d213254dd6e3fd1db291877fc7f2df
7
+ data.tar.gz: da33fb780b5b17e8e8bb8f64975844e84866edd3df8ec717b9f4670de4afdfa3a8215bc3952f3f48e5a028bfbd5313d403453a4029521f9413f4d3677e26815c
@@ -48,5 +48,12 @@ module QuadrigaCX
48
48
  def withdraw params={}
49
49
  request(:post, '/bitcoin_withdrawal', params)
50
50
  end
51
+
52
+ # Returns a JSON list of open orders
53
+ #
54
+ # book - optional, if not specified, will default to btc_cad
55
+ def open_orders params={}
56
+ request(:post, '/open_orders', params)
57
+ end
51
58
  end
52
59
  end
@@ -12,24 +12,21 @@ module QuadrigaCX
12
12
 
13
13
  protected
14
14
 
15
- def request(*args)
15
+ def request *args
16
16
  resp = @use_hmac ? self.hmac_request(*args) : self.oauth_request(*args)
17
17
 
18
18
  begin
19
- hash = Hashie::Mash.new(JSON.parse(resp.body))
19
+ json = JSON.parse(resp.body)
20
20
 
21
21
  # The `/cancel_order` route returns `"true"` instead of valid JSON.
22
22
  rescue JSON::ParserError
23
23
  return resp.body
24
24
  end
25
25
 
26
- raise Error.new(hash.error) if hash.error
27
- raise Error.new(hash.errors.join(',')) if hash.errors
28
-
29
- hash
26
+ json.kind_of?(Array) ? json.map { |i| to_hashie(i) } : to_hashie(json)
30
27
  end
31
28
 
32
- def hmac_request(http_method, path, body={})
29
+ def hmac_request http_method, path, body={}
33
30
  raise 'API key, API secret and client ID required!' unless @api_key && @api_secret && @client_id
34
31
 
35
32
  secret = Digest::MD5.hexdigest(@api_secret)
@@ -64,7 +61,18 @@ module QuadrigaCX
64
61
  # body - Parameters for requests - GET and POST
65
62
  #
66
63
  # TODO(maros): Implement this when QuadrigaCX supports it.
67
- def oauth_request(http_method, path, body={})
64
+ def oauth_request http_method, path, body={}
65
+ end
66
+
67
+ private
68
+
69
+ def to_hashie json
70
+ hash = Hashie::Mash.new(json)
71
+
72
+ raise Error.new(hash.error) if hash.error
73
+ raise Error.new(hash.errors.join(',')) if hash.errors
74
+
75
+ hash
68
76
  end
69
77
  end
70
78
  end
@@ -1,5 +1,5 @@
1
1
  module QuadrigaCX
2
2
  unless defined?(QuadrigaCX::VERSION)
3
- VERSION = '0.2.0'
3
+ VERSION = '0.3.0'
4
4
  end
5
5
  end
data/spec/client_spec.rb CHANGED
@@ -93,5 +93,17 @@ describe QuadrigaCX::Client do
93
93
  end
94
94
  end
95
95
  end
96
+
97
+ describe '#open_orders' do
98
+ it 'lists open orders' do
99
+ VCR.use_cassette('open_orders') do
100
+ response = client.open_orders
101
+
102
+ expect(response.first.datetime).not_to be_nil
103
+ expect(response.first.price).not_to be_nil
104
+ expect(response.first.type).not_to be_nil
105
+ end
106
+ end
107
+ end
96
108
  end
97
109
  end
@@ -0,0 +1,55 @@
1
+ ---
2
+ http_interactions:
3
+ - request:
4
+ method: post
5
+ uri: https://api.quadrigacx.com/v2/open_orders
6
+ body:
7
+ encoding: UTF-8
8
+ string: '{"key":"kOnVDjfPPh","nonce":"1421786664595","signature":"ee6b7b9dc80c3f3c95f02930472eb937d0ae05eda4ab218a52c81a7b6f90a56c"}'
9
+ headers:
10
+ Accept:
11
+ - application/json
12
+ Accept-Encoding:
13
+ - gzip, deflate
14
+ Content-Type:
15
+ - application/json
16
+ Content-Length:
17
+ - '123'
18
+ User-Agent:
19
+ - Ruby
20
+ response:
21
+ status:
22
+ code: 200
23
+ message: OK
24
+ headers:
25
+ Server:
26
+ - cloudflare-nginx
27
+ Date:
28
+ - Tue, 20 Jan 2015 20:44:25 GMT
29
+ Content-Type:
30
+ - application/json; charset=utf-8
31
+ Transfer-Encoding:
32
+ - chunked
33
+ Connection:
34
+ - keep-alive
35
+ Set-Cookie:
36
+ - __cfduid=dba0826eb668158f88deccccf4be4da081421786665; expires=Wed, 20-Jan-16
37
+ 20:44:25 GMT; path=/; domain=.quadrigacx.com; HttpOnly
38
+ - ci_session=ADkFMQdjVG4FKlskA2YFNFczBDsAIgMlVTABdgYkAjwAMwc4AF4PaQE9Un4DaVEiD2FcYwNuUGpQJgU0DGhSMFcxBGMDN1cyWzBVZlU2ADgAYAVtBzRUNQVlW2cDbwU8V2cEMQA2AzBVZgE2BjYCYwBpBzIANQ9lAThSfgNpUSIPYVxhA2xQalAmBWkMfFJYVzYEZAM2V3JbYlV3VScALQBjBXgHbFRlBWJbbQN%2BBTRXNAQ5AC4DYFVmASsGZgJhAHIHZAAwDzYBe1JnAyFRaw9qXGADZlByUHEFcwxpUnVXCARhAzVXZVtpVXBVdgA0ACsFMQdiVG4Fc1sFAykFZ1d6BCMAOwMlVW8BNAZkAm8Afgc6AGAPcwEtUgMDM1EyDy9cOQMqUDlQcAV5DC5SPFc%2BBDoDY1c0WzVVNVVjADcAbgU9B2BUYQVqWyQDZgU8VzkEIwB1AyVVMAF3BggCMQA9ByIAYA8iAWJSLwNoUWEPYVxyA35Qa1B5;
39
+ expires=Tue, 20-Jan-2015 22:44:25 GMT; Max-Age=7200; path=/
40
+ X-Frame-Options:
41
+ - SAMEORIGIN
42
+ Cf-Ray:
43
+ - 1abe1c2481ea0534-YYZ
44
+ Content-Encoding:
45
+ - gzip
46
+ body:
47
+ encoding: ASCII-8BIT
48
+ string: !binary |-
49
+ H4sIAAAAAAAAAxyOyw6CMBQFf8WcNZDbFrrorxgXpbwqVoq9UI3x3w2c7Uwy
50
+ 5/qFDcv2ZBhQRYLOoUBnuWcfehhIEk1JopR0kcLUtZGH4DsYDL6eaNljmPZR
51
+ uXdotc7CqUeenNxtajkzz/Gu9RBsmrNaFaVBdW5e+5F02lAgvrw7K42qznJi
52
+ y1s6/qAAf+IBCb/bHwAA//8DAFwvkRirAAAA
53
+ http_version:
54
+ recorded_at: Tue, 20 Jan 2015 20:44:24 GMT
55
+ recorded_with: VCR 2.9.3
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: quadrigacx
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.2.0
4
+ version: 0.3.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Maros Hluska
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2015-01-19 00:00:00.000000000 Z
11
+ date: 2015-01-20 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rspec
@@ -135,6 +135,7 @@ files:
135
135
  - spec/fixtures/vcr_cassettes/limit_buy.yml
136
136
  - spec/fixtures/vcr_cassettes/limit_sell.yml
137
137
  - spec/fixtures/vcr_cassettes/market_buy.yml
138
+ - spec/fixtures/vcr_cassettes/open_orders.yml
138
139
  - spec/fixtures/vcr_cassettes/order_book.yml
139
140
  - spec/fixtures/vcr_cassettes/withdraw.yml
140
141
  - spec/spec_helper.rb
@@ -169,6 +170,7 @@ test_files:
169
170
  - spec/fixtures/vcr_cassettes/limit_buy.yml
170
171
  - spec/fixtures/vcr_cassettes/limit_sell.yml
171
172
  - spec/fixtures/vcr_cassettes/market_buy.yml
173
+ - spec/fixtures/vcr_cassettes/open_orders.yml
172
174
  - spec/fixtures/vcr_cassettes/order_book.yml
173
175
  - spec/fixtures/vcr_cassettes/withdraw.yml
174
176
  - spec/spec_helper.rb