quadrigacx 0.0.3 → 0.0.4

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: 32d1bc9b5f86dcb75bfbc0bf0c9ae9f844794934
4
- data.tar.gz: fdb64cf1ae1af9639be39453fff441ac40b49d95
3
+ metadata.gz: c6ee8bdb0b5c8b603cf66c928e21630744007e99
4
+ data.tar.gz: 3d030a7bb3406b05eaa44852a1ce31b85638a938
5
5
  SHA512:
6
- metadata.gz: 5333c603da4a5c9f9cc57349be8b0a6bf6735c9ec5c5d3d29f812b567101e21c1ac533196329ee077a6b3e27c2dde49109b8ccc99e99897da9e59ef12d3b9327
7
- data.tar.gz: 44ca3a54072086c86841b32d7091c29d18e4f2c383d23725944472061a6d0e76f3f12b50baad387f69308fc53e95b7843c7f066016c0e716f803193af8e1370c
6
+ metadata.gz: 71869c0d09ccfaef240033e6845c2e5aa3c31b0904b40c50091f7808bd34b814e1615183f19ea906590f59a8a1aa47a72e1b3de611b651f2cbc5c1072925b6e7
7
+ data.tar.gz: 2c2d6e085b26a8a2caf3524a8742248bcd1bf3c09bd585edab1307c625a8e636a3b7b649f379093d01146f12c62d2f653d9b413e8770b5fdc3fa343fa1ba8555
data/Gemfile.lock ADDED
@@ -0,0 +1,50 @@
1
+ PATH
2
+ remote: .
3
+ specs:
4
+ quadrigacx (0.0.3)
5
+ hashie (~> 3.3)
6
+ json (~> 1.8)
7
+ rest-client (~> 1.7)
8
+
9
+ GEM
10
+ remote: https://rubygems.org/
11
+ specs:
12
+ addressable (2.3.6)
13
+ crack (0.4.2)
14
+ safe_yaml (~> 1.0.0)
15
+ diff-lcs (1.2.5)
16
+ dotenv (1.0.2)
17
+ hashie (3.3.2)
18
+ json (1.8.2)
19
+ mime-types (2.4.3)
20
+ netrc (0.10.2)
21
+ rest-client (1.7.2)
22
+ mime-types (>= 1.16, < 3.0)
23
+ netrc (~> 0.7)
24
+ rspec (3.1.0)
25
+ rspec-core (~> 3.1.0)
26
+ rspec-expectations (~> 3.1.0)
27
+ rspec-mocks (~> 3.1.0)
28
+ rspec-core (3.1.7)
29
+ rspec-support (~> 3.1.0)
30
+ rspec-expectations (3.1.2)
31
+ diff-lcs (>= 1.2.0, < 2.0)
32
+ rspec-support (~> 3.1.0)
33
+ rspec-mocks (3.1.3)
34
+ rspec-support (~> 3.1.0)
35
+ rspec-support (3.1.2)
36
+ safe_yaml (1.0.4)
37
+ vcr (2.9.3)
38
+ webmock (1.20.4)
39
+ addressable (>= 2.3.6)
40
+ crack (>= 0.3.2)
41
+
42
+ PLATFORMS
43
+ ruby
44
+
45
+ DEPENDENCIES
46
+ dotenv (~> 1.0)
47
+ quadrigacx!
48
+ rspec (~> 3.1)
49
+ vcr (~> 2.9)
50
+ webmock (~> 1.20)
data/README.md CHANGED
@@ -5,7 +5,12 @@ Ruby wrapper for the QuadrigaCX API
5
5
  `gem install quadrigacx`
6
6
 
7
7
  ```
8
- client = QuadrigaCX::Client.new(api_key: 'API_KEY', api_secret: 'API_SECRET', client_id: 'CLIENT_ID')
8
+ client = QuadrigaCX::Client.new(
9
+ api_key: 'API_KEY',
10
+ api_secret: 'API_SECRET',
11
+ client_id: 'CLIENT_ID',
12
+ )
13
+
9
14
  client.balance
10
15
  ```
11
16
 
@@ -5,5 +5,27 @@ module QuadrigaCX
5
5
  def balance
6
6
  request(:post, '/balance')
7
7
  end
8
+
9
+ # Places a limit order. Returns JSON describing the order
10
+ #
11
+ # amount - amount of major currency
12
+ # price - price to buy at
13
+ # book - optional, if not specified, will default to btc_cad
14
+ def limit_buy params={}
15
+ raise ConfigurationError.new('No price specified for limit buy') unless params[:price]
16
+ request(:post, '/buy', params)
17
+ end
18
+
19
+ # Places a market order. Returns JSON describing the order
20
+ #
21
+ # amount - amount of minor currency to spend
22
+ # book - optional, if not specified, will default to btc_cad
23
+ def market_buy params={}
24
+ request(:post, '/buy', params)
25
+ end
26
+
27
+ def cancel params={}
28
+ request(:post, '/cancel_order', params)
29
+ end
8
30
  end
9
31
  end
@@ -2,10 +2,9 @@ module QuadrigaCX
2
2
  module Public
3
3
  # List all open orders
4
4
  #
5
- # - Optional fields -
6
- # book - book to return orders for. Default btc_cad.
7
- # group - group orders with the same price (0 - false; 1 - true). Default: 1.
8
- def order_book(params={})
5
+ # book - optional, book to return orders for. Default btc_cad.
6
+ # group - optional, group orders with the same price (0 - false; 1 - true). Default: 1.
7
+ def order_book params={}
9
8
  request(:get, '/order_book', params)
10
9
  end
11
10
  end
@@ -15,9 +15,17 @@ module QuadrigaCX
15
15
  def request(*args)
16
16
  resp = @use_hmac ? self.hmac_request(*args) : self.oauth_request(*args)
17
17
 
18
- hash = Hashie::Mash.new(JSON.parse(resp.body))
18
+ begin
19
+ hash = Hashie::Mash.new(JSON.parse(resp.body))
20
+
21
+ # The `/cancel_order` route returns `"true"` instead of valid JSON.
22
+ rescue JSON::ParserError
23
+ return resp.body
24
+ end
25
+
19
26
  raise Error.new(hash.error) if hash.error
20
27
  raise Error.new(hash.errors.join(',')) if hash.errors
28
+
21
29
  hash
22
30
  end
23
31
 
@@ -37,11 +45,16 @@ module QuadrigaCX
37
45
  signature: signature,
38
46
  })
39
47
 
40
- if http_method == :post
41
- RestClient.post(url, body.to_json, :content_type => :json, :accept => :json)
42
- else
43
- RestClient.send(http_method, url, body)
44
- end
48
+ RestClient::Request.execute(
49
+ url: url,
50
+ method: http_method,
51
+ payload: body.to_json,
52
+ verify_ssl: false,
53
+ headers: {
54
+ content_type: :json,
55
+ accept: :json,
56
+ }
57
+ )
45
58
  end
46
59
 
47
60
  # Perform an OAuth API request. The client must be initialized
@@ -1,5 +1,5 @@
1
1
  module QuadrigaCX
2
2
  unless defined?(QuadrigaCX::VERSION)
3
- VERSION = '0.0.3'
3
+ VERSION = '0.0.4'
4
4
  end
5
5
  end
data/spec/client_spec.rb CHANGED
@@ -32,5 +32,42 @@ describe QuadrigaCX::Client do
32
32
  end
33
33
  end
34
34
  end
35
+
36
+ describe '#limit_buy' do
37
+ it 'throws an error when no price is provided' do
38
+ expect { client.limit_buy }.to raise_error(QuadrigaCX::ConfigurationError)
39
+ end
40
+
41
+ it 'places a limit buy order' do
42
+ VCR.use_cassette('limit_buy') do
43
+ response = client.limit_buy(price: '240', amount: '0.01') # 0.01 BTC
44
+
45
+ expect(response.datetime).not_to be_nil
46
+ expect(response.id).not_to be_nil
47
+ end
48
+ end
49
+ end
50
+
51
+ describe '#market_buy' do
52
+ it 'places a market buy order' do
53
+ VCR.use_cassette('market_buy') do
54
+ response = client.market_buy(amount: '5.00') # 5 CAD
55
+
56
+ expect(response.amount).not_to be_nil
57
+ expect(response.orders_matched.first.price).not_to be_nil
58
+ end
59
+ end
60
+ end
61
+
62
+ describe '#cancel_order' do
63
+ let(:order) { client.limit_buy(price: '240', amount: '0.01') }
64
+
65
+ it 'cancels an order' do
66
+ VCR.use_cassette('cancel_order') do
67
+ response = client.cancel(id: order.id)
68
+ expect(response).to eq('"true"')
69
+ end
70
+ end
71
+ end
35
72
  end
36
73
  end
@@ -5,7 +5,7 @@ http_interactions:
5
5
  uri: https://api.quadrigacx.com/v2/balance
6
6
  body:
7
7
  encoding: UTF-8
8
- string: '{"key":"kOnVDjfPPh","nonce":"1421609504253","signature":"8f8c068624b4980659f0a2d0eabbe756d38fa204a0a19f8dd4deedb1046aebc8"}'
8
+ string: '{"key":"kOnVDjfPPh","nonce":"1421644644278","signature":"d88822c118a38470fa7e9cc302403d5b45305ecb0460a6e1ff3fd179622c4335"}'
9
9
  headers:
10
10
  Accept:
11
11
  - application/json
@@ -25,7 +25,7 @@ http_interactions:
25
25
  Server:
26
26
  - cloudflare-nginx
27
27
  Date:
28
- - Sun, 18 Jan 2015 19:31:41 GMT
28
+ - Mon, 19 Jan 2015 05:17:24 GMT
29
29
  Content-Type:
30
30
  - application/json; charset=utf-8
31
31
  Transfer-Encoding:
@@ -33,23 +33,23 @@ http_interactions:
33
33
  Connection:
34
34
  - keep-alive
35
35
  Set-Cookie:
36
- - __cfduid=d7e229ae5b37d969e7ef6ecc80f0c71041421609501; expires=Mon, 18-Jan-16
37
- 19:31:41 GMT; path=/; domain=.quadrigacx.com; HttpOnly
38
- - ci_session=DDUPO1I2VmwHKF0iBGFWZ1M3VmkMLl17A2ZRJg8tBDoBMlFuVApcOltnVnpUPlckDmAPMABtWmBRJwM%2BWDtSYgUzBTZWPwVkAWUAZQJgCT4MYQ85UjRWbgdnXWMEaVZnUz9WawxoXTADMVFjDz8EZQE%2BUWJUYVw3W2BWelQ%2BVyQOYA8yAG9aYFEnA29YKFJYBWQFZVZjBSABOAAiAnAJJAxvD3JSOVZnB2BdawR5VmdTMFZrDCJdPgMwUXsPbwRnAXNRMlRkXGVbIVZjVHZXbQ5rDzMAZVp4UXADdVg9UnUFWgVgVmAFNwEzACUCIQk9DCcPO1I3VmwHcV0DBC5WNFN%2BVnEMN117AzlRZA9tBGkBf1FsVDRcIFt3VgdUZFc0Di4PagApWjNRcQN%2FWHpSPAVsBTtWNgVmAW8AYAI1CTYMbQ80UjNWZwdoXSIEYVZvUz1WcQx5XXsDZlEnDwEENwE8UXRUNFxxWzhWK1Q%2FV2cOYA8hAH1aYVF4;
39
- expires=Sun, 18-Jan-2015 21:31:41 GMT; Max-Age=7200; path=/
36
+ - __cfduid=d325fe5d9ad06403f8a9097b8bd74db9e1421644644; expires=Tue, 19-Jan-16
37
+ 05:17:24 GMT; path=/; domain=.quadrigacx.com; HttpOnly
38
+ - ci_session=X2YBNVM3BD4FKg9wXzoAMQZiUW4IKlZwUzYFclJwAjwLOFBvVggMalpmVHgBawBzAG4NMlY7AjgEcgxvCDpQZAJhBTEBM1cxWj8AMFI2ADxfPwE%2FU2QEPAVmDzpfNgA4BmFRbAg5VmZTZQU2UjYCNAtgUDlWYQwzWjZUeAFrAHMAbg0wVjkCOARyDGAIeFBaAmMFZQE0V3JaYwAiUiAALV88AXxTOAQ1BWIPOV8iADEGZVFsCCZWNVNgBS9SMgJhC3lQM1ZmDDVaIFRhASMAOgBlDTFWMwIgBCUMeghtUHcCXQVgATdXZVpoACVScQA0X3QBNVM2BD4Fcw9RX3UAYgYrUXYIM1ZwU2kFMFIwAm8LdVBtVjYMcFp2VAUBMQBjACANaFZ%2FAmsEJAxwCCpQPgJrBTsBYVc0WjQAYFJlADtfMwE5UzYEMAVqD3BfOgA5BmhRdgh9VnBTNgVzUlwCMQs2UHVWNgwhWjlUKQFqADAAbg0jVisCOQQt;
39
+ expires=Mon, 19-Jan-2015 07:17:24 GMT; Max-Age=7200; path=/
40
40
  X-Frame-Options:
41
41
  - SAMEORIGIN
42
42
  Cf-Ray:
43
- - 1aad36da0aac052e-YYZ
43
+ - 1ab090d3634a052e-YYZ
44
44
  Content-Encoding:
45
45
  - gzip
46
46
  body:
47
47
  encoding: ASCII-8BIT
48
48
  string: !binary |-
49
- H4sIAAAAAAAAA2yPQQqEMAxF79K1lGir1bmMpDWCUGahowzI3H1ojWjVLP/j
50
- P35WYT+uxQUHj9aTeAmQStdFCQAii3CkicaFusiAj5lFj293qznsEmeuoZHG
51
- MDkJC1Vqme+Vw6ZMpWQdCvOUqsIEji/DOD1PiuEX55uBXwjo4T0mqYlBT1sQ
52
- P/39AQAA//8DAHDQhBY/AQAA
49
+ H4sIAAAAAAAAA6pWSipJjk8sS8zMSUzKSVWyUjLQM4ACJR2wZFFqcWpRWWoK
50
+ NrmkxJzEvGQMbcmJKShmGluYmOtZmkBlkAw00jOBqUcYZWxhaqBnDFJdWoxq
51
+ DsgSqDCaq6CiqO5R0lGqSCzFMAHqSJAUFr9BZTB9pqSjlJYKETAFcWsBAAAA
52
+ //8DABA9HgI8AQAA
53
53
  http_version:
54
- recorded_at: Sun, 18 Jan 2015 19:31:45 GMT
55
- recorded_with: VCR 2.9.2
54
+ recorded_at: Mon, 19 Jan 2015 05:17:24 GMT
55
+ recorded_with: VCR 2.9.3
@@ -0,0 +1,101 @@
1
+ ---
2
+ http_interactions:
3
+ - request:
4
+ method: post
5
+ uri: https://api.quadrigacx.com/v2/buy
6
+ body:
7
+ encoding: UTF-8
8
+ string: '{"price":"240","amount":"0.01","key":"kOnVDjfPPh","nonce":"1421645515587","signature":"c5fc3d51288bbc8875a5a4cf58cb43b30f2a87d136ed61d12d20f86ceec1ad43"}'
9
+ headers:
10
+ Accept:
11
+ - "*/*; q=0.5, application/xml"
12
+ Accept-Encoding:
13
+ - gzip, deflate
14
+ Content-Type:
15
+ - application/json
16
+ Content-Length:
17
+ - '153'
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
+ - Mon, 19 Jan 2015 05:31:56 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=df1908c7d411e55da3cec76d2c81dde861421645515; expires=Tue, 19-Jan-16
37
+ 05:31:55 GMT; path=/; domain=.quadrigacx.com; HttpOnly
38
+ - ci_session=DzZUYAVhAzlUewxzVjNaa1A0BTpYegYgUTRWIVR2UmwIOwc4WgQIbl9jBysEbgR3D2ENMlI%2FAjgHcVJgCWpcMFdiAjUFZAMyCDJVMgc0WTAPY1RqBTEDO1Q3DGRWPlpiUD0FZlg6BmdRZlZqVGdSYQhmBzJabwg%2FX2YHKwRuBHcPYQ0wUj0COAdxUj4JeVxWVzYCYgUwAyYIMVV3B3VZdA9sVCkFbgMyVDMMOlYrWmtQMwU4WHYGZVFiVnxUNFIxCHoHZFpqCDFfJQcyBCYEPg9qDTFSNwIgByZSJAlsXHtXCAJnBTMDMQg6VXAHJFltDyRUYAVgAzlUIgxSVnxaOFB9BSJYYwYgUWtWY1Q2Uj8Idgc6WjoIdF9zB1YENARnDy8NaFJ7AmsHJ1IuCStcMlc%2BAjwFZQNgCGZVNQcwWWIPYlRvBWUDNlQ7DHNWM1pjUD4FIlgtBiBRNFYgVFpSYQg1ByJaOgglXzwHegRvBDQPYQ0jUi8COQcu;
39
+ expires=Mon, 19-Jan-2015 07:31:55 GMT; Max-Age=7200; path=/
40
+ X-Frame-Options:
41
+ - SAMEORIGIN
42
+ Cf-Ray:
43
+ - 1ab0a6192ab4052e-YYZ
44
+ Content-Encoding:
45
+ - gzip
46
+ body:
47
+ encoding: ASCII-8BIT
48
+ string: !binary |-
49
+ H4sIAAAAAAAAAxyOQQ6DIBQFr9K8NZqPFI1cpkGglFiVVIxI07s3OttZzHyh
50
+ p2WbExSoJk4XYBiWZYTCkMzDaAsGq5NLYXJQaIjLinjF+xu1SnAlJRiChcIi
51
+ aegidT632hbRBrdrWcYmSmcP85pDKLErec4ia0F+etp9tH4WE/dve/Q7GOIn
52
+ mKtyp/paWZNO23oOgiEd8ZSE3x8AAP//AwB27kaXugAAAA==
53
+ http_version:
54
+ recorded_at: Mon, 19 Jan 2015 05:31:56 GMT
55
+ - request:
56
+ method: post
57
+ uri: https://api.quadrigacx.com/v2/cancel_order
58
+ body:
59
+ encoding: UTF-8
60
+ string: '{"id":"o50b7p07gx6adz36iewa5zk2p5edychniizp7zxnx3xa30gmfdwkdgn3m1gldy9w","key":"kOnVDjfPPh","nonce":"1421645516976","signature":"afaa5595543cd44db5b8c5fd2889fb5d1e19554a52e17eaa7db0e9760df54eb8"}'
61
+ headers:
62
+ Accept:
63
+ - "*/*; q=0.5, application/xml"
64
+ Accept-Encoding:
65
+ - gzip, deflate
66
+ Content-Type:
67
+ - application/json
68
+ Content-Length:
69
+ - '195'
70
+ User-Agent:
71
+ - Ruby
72
+ response:
73
+ status:
74
+ code: 200
75
+ message: OK
76
+ headers:
77
+ Server:
78
+ - cloudflare-nginx
79
+ Date:
80
+ - Mon, 19 Jan 2015 05:31:58 GMT
81
+ Content-Type:
82
+ - application/json; charset=utf-8
83
+ Content-Length:
84
+ - '6'
85
+ Connection:
86
+ - keep-alive
87
+ Set-Cookie:
88
+ - __cfduid=d4ab8c2717268bbcb7e004c2a325643561421645517; expires=Tue, 19-Jan-16
89
+ 05:31:57 GMT; path=/; domain=.quadrigacx.com; HttpOnly
90
+ - ci_session=AThVYVE1V21RfgB%2FVTBXZgBkV2hYegEnUTQDdAYkBDpYawI9VwkAZlxgAy9WPFEiVTsLNFI%2FBT9XIVBkWDpUMQQ1UDVUZg5uCjJXMgEwDjgBaVVvUWZXMlE9ADpVaVdmAGZXY1hqAWBRMAMxBjMEa1g2AmZXZgA4XGYDL1Y8USJVOws2Uj0FP1chUDxYKFReBGVQMFRhDisKM1d1AXMOIwFiVShROldmUTYANlUoV2YAY1dqWHYBYlFiAykGZgRnWCoCYVdnADlcJgM2VnRRa1UwCzdSNwUnV3ZQJlg9VHMEW1A1VGIOPAo4V3IBIg46ASpVYVE0V21RJwBeVX9XNQAtV3BYYwEnUWsDNgZkBGlYJgI%2FVzcAfFxwA1JWZlEyVXULblJ7BWxXd1AsWHpUOgRtUG5UNA5tCmRXNwE2DjUBbFVuUTFXYFE%2BAH9VMFduAG5XcFgtASdRNAN1BggEN1hlAidXNwAtXD8DflY9UWFVOwslUi8FPld%2B;
91
+ expires=Mon, 19-Jan-2015 07:31:57 GMT; Max-Age=7200; path=/
92
+ X-Frame-Options:
93
+ - SAMEORIGIN
94
+ Cf-Ray:
95
+ - 1ab0a621ec93052e-YYZ
96
+ body:
97
+ encoding: UTF-8
98
+ string: '"true"'
99
+ http_version:
100
+ recorded_at: Mon, 19 Jan 2015 05:31:58 GMT
101
+ recorded_with: VCR 2.9.3
@@ -0,0 +1,55 @@
1
+ ---
2
+ http_interactions:
3
+ - request:
4
+ method: post
5
+ uri: https://api.quadrigacx.com/v2/buy
6
+ body:
7
+ encoding: UTF-8
8
+ string: '{"price":"240","amount":"0.01","key":"kOnVDjfPPh","nonce":"1421644610931","signature":"ab1831355e35368fdfde5e32e56f3360c41daf5b966bcc90d56fde4913047d04"}'
9
+ headers:
10
+ Accept:
11
+ - application/json
12
+ Accept-Encoding:
13
+ - gzip, deflate
14
+ Content-Type:
15
+ - application/json
16
+ Content-Length:
17
+ - '153'
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
+ - Mon, 19 Jan 2015 05:16:52 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=d8b1e2ca90a576cc8cd40b62e77ed00131421644611; expires=Tue, 19-Jan-16
37
+ 05:16:51 GMT; path=/; domain=.quadrigacx.com; HttpOnly
38
+ - ci_session=DzYBNVYyDDYHKAl2VjNTYgdjBjkNL1ZwB2IGcQclAjwLOAI9AlxeOAA8VnoCaABzBmgPMFE8VW8AdlA0X2ZQZlJqBjpSOlJhCzYFMAI7Cz0PZQE6VmUMbwdgCWNWb1NmB2MGMA1rVmUHMQY0B2UCYgtjAmsCYF5iAG5WegJoAHMGaA8yUT5VbwB2UDxfL1BaUjMGZlJnUncLMgUnAnALJg9sAXxWPQw9B2AJP1YrU2IHZAY7DSNWNQc0BiwHZwJhC3kCYQIyXmcAelZjAiAAOgZjDzNRNFV3ACFQJl86UHdSDQZjUmRSYAs5BSACIQs%2FDyQBNVYzDDYHcQlXVnxTMQcqBiENNlZwBz0GMwdlAm8LdQI%2FAmJeIgAsVgcCMgBjBiYPalF4VTwAIFAsX31QPlI7BjhSMlIxC2UFZQI1CzAPYwE5VjYMPQdoCXZWM1NqB2kGIQ14VnAHYgZwBwkCMQs2AicCYl5zAGNWKwJpADAGaA8hUSxVbgAp;
39
+ expires=Mon, 19-Jan-2015 07:16:51 GMT; Max-Age=7200; path=/
40
+ X-Frame-Options:
41
+ - SAMEORIGIN
42
+ Cf-Ray:
43
+ - 1ab0900381200534-YYZ
44
+ Content-Encoding:
45
+ - gzip
46
+ body:
47
+ encoding: ASCII-8BIT
48
+ string: !binary |-
49
+ H4sIAAAAAAAAAxyOSw6CMBgGr2K+dSGtgYK9jOkDSkVosT8RNN7dwGxnMfOF
50
+ nuI6ExR4yQU/AYOJcYSCIXu32oHBaeooTB0UrlzUBReFuF24VEKqWoAhOCgM
51
+ Jmwz9a6fxrWj1CS7LGnbW/9syPg657j0g6Qtuyzl4N5UzQ/xzKH5mOC9acGQ
52
+ XsGelYqX50omTWs+BsFAezokx+8PAAD//wMAbfz5FLoAAAA=
53
+ http_version:
54
+ recorded_at: Mon, 19 Jan 2015 05:16:52 GMT
55
+ recorded_with: VCR 2.9.3
@@ -0,0 +1,53 @@
1
+ ---
2
+ http_interactions:
3
+ - request:
4
+ method: post
5
+ uri: https://api.quadrigacx.com/v2/buy
6
+ body:
7
+ encoding: UTF-8
8
+ string: '{"amount":"5.00","key":"kOnVDjfPPh","nonce":"1421644938450","signature":"a336a7157dc33a56101c09d798edfa0975b0162005e48614705a8f3b219ea78e"}'
9
+ headers:
10
+ Accept:
11
+ - application/json
12
+ Accept-Encoding:
13
+ - gzip, deflate
14
+ Content-Type:
15
+ - application/json
16
+ Content-Length:
17
+ - '139'
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
+ - Mon, 19 Jan 2015 05:22:22 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=d2d93b3a5a47946cff1e330661b44e40a1421644938; expires=Tue, 19-Jan-16
37
+ 05:22:18 GMT; path=/; domain=.quadrigacx.com; HttpOnly
38
+ - ci_session=DTQANFM3AzlUe1wjAGVTYgNnAj0NL1F3BWBXIA8tVWsAMwQ7VggBZ1pmVnoGbAFyA20MMwRpVmxQJgM0Cz1UNFFiA2VWNldiDjdVPFZjDzANNAA2U2MDMVRiXDMAb1NnAzUCNg06UWcFMFdjDz9VYwBvBGRWNgFqWjtWegZsAXIDbQwxBGtWbFAmA28Le1ReUTADY1ZjV3ION1V3ViQPIg1uAH1TOAMyVDNcagB9U2IDYAI%2FDSNRMgU2V30Pb1U2AHIEZ1ZmAThaIFZjBiQBOwNmDDAEYVZ0UHEDdQtuVHNRDgNmVmBXZQ48VXBWdQ87DSYANFM2AzlUIlwCACpTMQMuAiUNNlF3BT9XYg9tVTgAfgQ5VjYBfVp2VgcGNgFiAyMMaQQtVj9QcAN%2FCylUOlE4Az1WNlc0DmBVNVZhDzQNYQA3UzEDOlQ7XCMAZVNqA20CJQ14UXcFYFchDwFVZgA9BCFWNgEsWjlWKwZtATEDbQwiBHlWbVB5;
39
+ expires=Mon, 19-Jan-2015 07:22:19 GMT; Max-Age=7200; path=/
40
+ X-Frame-Options:
41
+ - SAMEORIGIN
42
+ Cf-Ray:
43
+ - 1ab098049209052e-YYZ
44
+ Content-Encoding:
45
+ - gzip
46
+ body:
47
+ encoding: ASCII-8BIT
48
+ string: !binary |-
49
+ H4sIAAAAAAAAA6pWSszNL80rUbJSMtAzMLQ0MTUzNVLSUcovSkktKo7PTSxJ
50
+ zkhNUbKKrsahsKAoMzlVyUrJyNRMz9JSqTa2FgAAAP//AwA5iIGWUwAAAA==
51
+ http_version:
52
+ recorded_at: Mon, 19 Jan 2015 05:22:22 GMT
53
+ recorded_with: VCR 2.9.3
@@ -4,19 +4,17 @@ http_interactions:
4
4
  method: get
5
5
  uri: https://api.quadrigacx.com/v2/order_book
6
6
  body:
7
- encoding: US-ASCII
8
- string: ''
7
+ encoding: UTF-8
8
+ string: '{"key":"kOnVDjfPPh","nonce":"1421644644035","signature":"61d0af42f970402241f4e2ff6ede8f890d1e90ed54af4a9b89f8b539fb231342"}'
9
9
  headers:
10
10
  Accept:
11
- - "*/*; q=0.5, application/xml"
11
+ - application/json
12
12
  Accept-Encoding:
13
13
  - gzip, deflate
14
- Key:
15
- - kOnVDjfPPh
16
- Nonce:
17
- - '1421609503025'
18
- Signature:
19
- - f4b99272602da944c9f44ad68b9f662c8ff9b1ec7b40a1a9f95aeb5b51547521
14
+ Content-Type:
15
+ - application/json
16
+ Content-Length:
17
+ - '123'
20
18
  User-Agent:
21
19
  - Ruby
22
20
  response:
@@ -27,7 +25,7 @@ http_interactions:
27
25
  Server:
28
26
  - cloudflare-nginx
29
27
  Date:
30
- - Sun, 18 Jan 2015 19:31:40 GMT
28
+ - Mon, 19 Jan 2015 05:17:24 GMT
31
29
  Content-Type:
32
30
  - text/html
33
31
  Transfer-Encoding:
@@ -35,63 +33,60 @@ http_interactions:
35
33
  Connection:
36
34
  - keep-alive
37
35
  Set-Cookie:
38
- - __cfduid=d9d5f8cc700725a8702d711459207d2051421609500; expires=Mon, 18-Jan-16
39
- 19:31:40 GMT; path=/; domain=.quadrigacx.com; HttpOnly
40
- - ci_session=CzIBNQBkDDYCLQp1BWAAMVI2Um0BI1RyA2ZXIFZ0BjgPPAQ7AF4Jbw4yU38CaAR3VjgAP1I%2FUWtXIQ0%2BATFXNlQ1DT4BNQFjWjVfOgBjDDULMQE8ADUMPwI1CjIFbQA4UmVSZgFlVGcDO1dkVmQGYA9mBGcAZQkxDm5TfwJoBHdWOAA9Uj1Ra1chDWEBcVddVDUNbQE0ASRaY199AHIMIQtoAXwAaww9AmUKPAV4ADFSMVJvAS9UNwMwV31WNgZlD30EZwAwCTAOdFNmAiAEPlYzADxSN1FzV3YNewFkV3BUCw1oATcBM1poX3oAIww4CyABNQBlDDYCdApUBS8AYlJ%2FUnUBOlRyAzlXYlY0BmsPcQQ5AGAJdQ4iUwICMgRnVnYAZVJ7UThXdw1xASNXOVQ9DTMBYQFiWjRfPwA3DDMLagE6AGEMPAJtCnUFYAA5UjxSdQF0VHIDZlchVlgGNQ8yBCEAYAkkDm1TLgJpBDRWOAAuUi9Rald%2B;
41
- expires=Sun, 18-Jan-2015 21:31:40 GMT; Max-Age=7200; path=/
36
+ - __cfduid=d325fe5d9ad06403f8a9097b8bd74db9e1421644644; expires=Tue, 19-Jan-16
37
+ 05:17:24 GMT; path=/; domain=.quadrigacx.com; HttpOnly
38
+ - ci_session=WmMPOwJmBz1TfAl2VTAGNwFlV2hcflZwUjcDdFJwAz0OPVFuVQtbPQk1DiIHbVYlBGoMM1I%2FUGpSJAA9DzoENQc1AmAEMwJjDWRTZgE2XmdaMg82AmIHNVMwCTZVOwY%2BATFXYFxsVmdSNgM%2FUjMDZQ42UWJVZVtsCWEOIgdtViUEagwxUj1QalIkAGwPfwQOB2YCYgQxAicNNFNxAXNec1o5D3ICaQc2UzQJP1UoBjcBYldqXHJWNVJhAylSMgNgDnxRMlVlW2IJcw47ByVWbARhDDBSN1ByUnMAdg9qBCMHWAJnBDICMA0%2FU3YBIl5qWnEPOwJnBz1TJQlXVX8GZAEsV3BcZ1ZwUmgDNlIwA24OcFFsVTVbJwklDl8HN1Y1BCQMaVJ7UDlScgB8Dy0EagduAjwEZAJhDWNTMwE2XmVaNg83AmcHM1M8CXZVMAY%2FAW9XcFwpVnBSNwN1UlwDMA4zUXRVNVt2CWoOcwdsVmYEagwiUi9Qa1J7;
39
+ expires=Mon, 19-Jan-2015 07:17:24 GMT; Max-Age=7200; path=/
42
40
  Vary:
43
41
  - Accept-Encoding
44
42
  X-Frame-Options:
45
43
  - SAMEORIGIN
46
44
  Cf-Ray:
47
- - 1aad36d00984052e-YYZ
45
+ - 1ab090d1e33d052e-YYZ
48
46
  Content-Encoding:
49
47
  - gzip
50
48
  body:
51
49
  encoding: ASCII-8BIT
52
50
  string: !binary |-
53
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- AK3fFqDM/5A3SalpSXrj0PQDnze8faGlEowjj//5+Yrv316//fjvrOKa5Wl4
65
- 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
- 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
- Y2KpzuJW0ZRP1Yegw0tOAILxxVe3YcTLD7a6DYSSSizuTSrLNZgtm2/xWH54
68
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
94
- 5eXpgcvdzJxz0/d//gUAAP//AwDiiTPooRgAAA==
51
+ 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
89
+ 8efzFgAA
95
90
  http_version:
96
- recorded_at: Sun, 18 Jan 2015 19:31:44 GMT
97
- recorded_with: VCR 2.9.2
91
+ recorded_at: Mon, 19 Jan 2015 05:17:24 GMT
92
+ recorded_with: VCR 2.9.3
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: quadrigacx
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.3
4
+ version: 0.0.4
5
5
  platform: ruby
6
6
  authors:
7
7
  - Maros Hluska
@@ -117,6 +117,7 @@ extra_rdoc_files: []
117
117
  files:
118
118
  - ".gitignore"
119
119
  - Gemfile
120
+ - Gemfile.lock
120
121
  - LICENSE
121
122
  - README.md
122
123
  - Rakefile
@@ -130,6 +131,9 @@ files:
130
131
  - quadrigacx.gemspec
131
132
  - spec/client_spec.rb
132
133
  - spec/fixtures/vcr_cassettes/balance.yml
134
+ - spec/fixtures/vcr_cassettes/cancel_order.yml
135
+ - spec/fixtures/vcr_cassettes/limit_buy.yml
136
+ - spec/fixtures/vcr_cassettes/market_buy.yml
133
137
  - spec/fixtures/vcr_cassettes/order_book.yml
134
138
  - spec/spec_helper.rb
135
139
  homepage: http://mhluska.com/
@@ -159,5 +163,8 @@ summary: QuadrigaCX API wrapper
159
163
  test_files:
160
164
  - spec/client_spec.rb
161
165
  - spec/fixtures/vcr_cassettes/balance.yml
166
+ - spec/fixtures/vcr_cassettes/cancel_order.yml
167
+ - spec/fixtures/vcr_cassettes/limit_buy.yml
168
+ - spec/fixtures/vcr_cassettes/market_buy.yml
162
169
  - spec/fixtures/vcr_cassettes/order_book.yml
163
170
  - spec/spec_helper.rb