cointrader.net 0.8.0 → 0.9.0

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.
Files changed (27) hide show
  1. checksums.yaml +4 -4
  2. data/lib/cointrader.net/client.rb +1 -0
  3. data/lib/cointrader.net/client/error.rb +6 -0
  4. data/lib/cointrader.net/client/request.rb +30 -1
  5. data/lib/cointrader.net/version.rb +1 -1
  6. data/spec/client_spec.rb +49 -79
  7. data/spec/fixtures/vcr_cassettes/{balance.yml → Cointrader_Client/account/_balance/returns_a_balance.yml} +6 -6
  8. data/spec/fixtures/vcr_cassettes/{tradehistory.yml → Cointrader_Client/account/_tradehistory/returns_trade_history.yml} +6 -6
  9. data/spec/fixtures/vcr_cassettes/{cancel.yml → Cointrader_Client/order/_cancel/cancels_an_order.yml} +12 -12
  10. data/spec/fixtures/vcr_cassettes/Cointrader_Client/order/_limit_buy/returns_an_order.yml +66 -0
  11. data/spec/fixtures/vcr_cassettes/Cointrader_Client/order/_limit_buy/throws_an_error_when_there_are_insufficient_funds.yml +66 -0
  12. data/spec/fixtures/vcr_cassettes/Cointrader_Client/order/_limit_sell/returns_an_order.yml +66 -0
  13. data/spec/fixtures/vcr_cassettes/{list.yml → Cointrader_Client/order/_list/when_there_are_no_orders/throws_an_error.yml} +6 -6
  14. data/spec/fixtures/vcr_cassettes/Cointrader_Client/order/_list/when_there_are_orders/lists_open_limit_orders.yml +129 -0
  15. data/spec/fixtures/vcr_cassettes/Cointrader_Client/order/_market_buy/returns_an_order.yml +67 -0
  16. data/spec/fixtures/vcr_cassettes/Cointrader_Client/order/_market_sell/returns_an_order.yml +66 -0
  17. data/spec/fixtures/vcr_cassettes/{trades.yml → Cointrader_Client/order/_trades/lists_recent_trades_executed.yml} +11 -9
  18. data/spec/fixtures/vcr_cassettes/{orders.yml → Cointrader_Client/stats/_orders/returns_open_orders.yml} +12 -12
  19. data/spec/fixtures/vcr_cassettes/{stats_24h.yml → Cointrader_Client/stats/_stats_24h/returns_24_hour_sliding_statistics.yml} +11 -11
  20. data/spec/fixtures/vcr_cassettes/{stats_7d.yml → Cointrader_Client/stats/_stats_7d/returns_7_day_sliding_statistics.yml} +10 -10
  21. data/spec/fixtures/vcr_cassettes/{symbol.yml → Cointrader_Client/stats/_symbol/returns_supported_currencies.yml} +6 -6
  22. data/spec/spec_helper.rb +1 -0
  23. metadata +33 -28
  24. data/spec/fixtures/vcr_cassettes/limit_buy.yml +0 -65
  25. data/spec/fixtures/vcr_cassettes/limit_sell.yml +0 -58
  26. data/spec/fixtures/vcr_cassettes/market_buy.yml +0 -71
  27. data/spec/fixtures/vcr_cassettes/market_sell.yml +0 -72
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: c04efa6cfe08064cb0a38a0a0833cd0c381e7c1f
4
- data.tar.gz: 3ff238c3c11eddece8093c43a0dd36c94f2135d9
3
+ metadata.gz: 7ecad613ebfbea1bf2859dfc6a00029ef45610b6
4
+ data.tar.gz: bdfbb95bb25cbabcc7ba0399734d6455f6562ace
5
5
  SHA512:
6
- metadata.gz: 174fa7f56e4f7c47e43a560eec5bca74b7f39646151b1e5c49025155e753bc17f52356019052a4cd61883ebc0e67ed9072c749fd401335509dc949c3aa458c8a
7
- data.tar.gz: 8c8f63407026fdf073e2daf634fdaa68b2286148e2cabc6583f825990c5736303153897aef0a5fdd6cb08df90e5bd59160fd28f4ec9da027e0392c867ab6cd47
6
+ metadata.gz: ea34eb938fc6805bb1728a9ba78c3692760d2769e8f6f2b9e7732fd97ec1f8ce83a91469d27a499372abca87518f829d89f57fbfe9e4f892573bd048981f301b
7
+ data.tar.gz: 79a0c0b1bb3bc3fbd72729dad7d6d607bc143b6b7904a3d56a10cdd44dfb085757ae6adbcaa5d3c3b6ebf908c1de47ce0b0787fb7aa1917ca7b4f15a1045b63c
@@ -2,6 +2,7 @@ require_relative 'client/request'
2
2
  require_relative 'client/stats'
3
3
  require_relative 'client/account'
4
4
  require_relative 'client/order'
5
+ require_relative 'client/error'
5
6
 
6
7
  module Cointrader
7
8
  class Client
@@ -0,0 +1,6 @@
1
+ module Cointrader
2
+ class Error < StandardError; end
3
+ class Unauthorized < Error; end
4
+ class InsufficientFunds < Error; end
5
+ class NoOpenOrders < Error; end
6
+ end
@@ -39,9 +39,11 @@ module Cointrader
39
39
  end
40
40
 
41
41
  def request(method, path, body={})
42
- JSON.parse(hmac_request(method, path, body))
42
+ check_errors(JSON.parse(hmac_request(method, path, body)))
43
43
  end
44
44
 
45
+ private
46
+
45
47
  def hmac_request method, path, body={}
46
48
  payload = {}
47
49
  headers = { :content_type => 'application/json' }
@@ -77,5 +79,32 @@ module Cointrader
77
79
  headers: headers,
78
80
  )
79
81
  end
82
+
83
+ # Returns the error code from `response` or `nil` if there is none.
84
+ def extract_error_code response
85
+ return unless response
86
+ return unless response['data'] && response['data'].class == Hash
87
+ return unless response['data']['errorCode']
88
+
89
+ response['data']['errorCode'].to_i
90
+ end
91
+
92
+ def check_errors response
93
+ code = extract_error_code(response)
94
+
95
+ if code
96
+ errorClass =
97
+ case code
98
+ when 401 then Unauthorized
99
+ when 802, 803 then InsufficientFunds # Fiat, Crypto respectively.
100
+ when 801 then NoOpenOrders
101
+ else Error
102
+ end
103
+
104
+ raise errorClass.new(response['message'])
105
+ end
106
+
107
+ response
108
+ end
80
109
  end
81
110
  end
@@ -1,3 +1,3 @@
1
1
  module Cointrader
2
- VERSION = "0.8.0"
2
+ VERSION = "0.9.0"
3
3
  end
@@ -1,6 +1,6 @@
1
1
  require 'spec_helper'
2
2
 
3
- describe Cointrader::Client do
3
+ describe Cointrader::Client, vcr: true do
4
4
  def limit_buy
5
5
  subject.limit_buy(total_quantity: 1, price: 10)
6
6
  end
@@ -17,57 +17,33 @@ describe Cointrader::Client do
17
17
  subject.market_sell(total_amount: 1)
18
18
  end
19
19
 
20
- def safe_limit_buy
21
- VCR.use_cassette('limit_buy', &method(:limit_buy))
22
- end
23
-
24
- def safe_limit_sell
25
- VCR.use_cassette('limit_sell', &method(:limit_sell))
26
- end
27
-
28
- def safe_market_buy
29
- VCR.use_cassette('market_buy', &method(:market_buy))
30
- end
31
-
32
- def safe_market_sell
33
- VCR.use_cassette('market_sell', &method(:market_sell))
34
- end
35
-
36
20
  describe 'stats' do
37
21
  describe '#symbol' do
38
22
  it 'returns supported currencies' do
39
- VCR.use_cassette('symbol') do
40
- response = subject.symbol
41
- expect_success(response)
42
- expect(response['data'][0]['name']).to eq 'Bitcoin (BTC)'
43
- end
23
+ response = subject.symbol
24
+ expect_success(response)
25
+ expect(response['data'][0]['name']).to eq 'Bitcoin (BTC)'
44
26
  end
45
27
  end
46
28
 
47
29
  describe '#stats_24h' do
48
30
  it 'returns 24 hour sliding statistics' do
49
- VCR.use_cassette('stats_24h') do
50
- response = subject.stats_24h
51
- expect_success(response)
52
- end
31
+ response = subject.stats_24h
32
+ expect_success(response)
53
33
  end
54
34
  end
55
35
 
56
36
  describe '#stats_7d' do
57
37
  it 'returns 7 day sliding statistics' do
58
- VCR.use_cassette('stats_7d') do
59
- response = subject.stats_7d
60
- expect_success(response)
61
- end
38
+ response = subject.stats_7d
39
+ expect_success(response)
62
40
  end
63
41
  end
64
42
 
65
43
  describe '#orders' do
66
44
  it 'returns open orders' do
67
- VCR.use_cassette('orders') do
68
- response = subject.orders
69
- expect_success(response)
70
- end
45
+ response = subject.orders
46
+ expect_success(response)
71
47
  end
72
48
  end
73
49
  end
@@ -75,21 +51,17 @@ describe Cointrader::Client do
75
51
  describe 'account' do
76
52
  describe '#balance' do
77
53
  it 'returns a balance' do
78
- VCR.use_cassette('balance') do
79
- response = subject.balance
54
+ response = subject.balance
80
55
 
81
- expect_success(response)
82
- expect(response['data']['BTC']['available']).not_to be_nil
83
- end
56
+ expect_success(response)
57
+ expect(response['data']['BTC']['available']).not_to be_nil
84
58
  end
85
59
  end
86
60
 
87
61
  describe '#tradehistory' do
88
62
  it 'returns trade history' do
89
- VCR.use_cassette('tradehistory') do
90
- response = subject.tradehistory
91
- expect_success(response)
92
- end
63
+ response = subject.tradehistory
64
+ expect_success(response)
93
65
  end
94
66
  end
95
67
  end
@@ -97,74 +69,72 @@ describe Cointrader::Client do
97
69
  describe 'order' do
98
70
  describe '#limit_buy' do
99
71
  it 'returns an order' do
100
- VCR.use_cassette('limit_buy') do
101
- response = limit_buy
102
- expect_success(response)
103
- expect(response['data']['id']).not_to be_nil
104
- end
72
+ response = limit_buy
73
+ expect_success(response)
74
+ expect(response['data']['id']).not_to be_nil
75
+ end
76
+
77
+ it 'throws an error when there are insufficient funds' do
78
+ expect { subject.limit_buy(price: 1_000_000, total_quantity: 1) }.to raise_error(Cointrader::InsufficientFunds)
105
79
  end
106
80
  end
107
81
 
108
82
  describe '#limit_sell' do
109
83
  it 'returns an order' do
110
- VCR.use_cassette('limit_sell') do
111
- response = limit_sell
112
- expect_success(response)
113
- expect(response['data']['id']).not_to be_nil
114
- end
84
+ response = limit_sell
85
+ expect_success(response)
86
+ expect(response['data']['id']).not_to be_nil
115
87
  end
116
88
  end
117
89
 
118
90
  describe '#cancel' do
119
- let(:order) { safe_limit_buy }
91
+ let(:order) { limit_buy }
120
92
 
121
- it 'cancels and order' do
122
- VCR.use_cassette('cancel') do
123
- response = subject.cancel(order_id: order['data']['id'])
124
- expect_success(response)
125
- # expect(response['data']['id']).not_to be_nil
126
- # expect(response['data']['currency_pair']).not_to be_nil
127
- end
93
+ it 'cancels an order' do
94
+ response = subject.cancel(order_id: order['data']['id'])
95
+ expect_success(response)
128
96
  end
129
97
  end
130
98
 
131
99
  describe '#list' do
132
- it 'lists open limit orders' do
133
- VCR.use_cassette('list') do
100
+ context 'when there are orders' do
101
+ let(:order) { limit_buy }
102
+ after { subject.cancel(order_id: order['data']['id'] )}
103
+
104
+ it 'lists open limit orders' do
105
+ order
134
106
  response = subject.list
135
107
  expect_success(response)
136
- # expect(response['data'][0]['type'])
108
+ end
109
+ end
110
+
111
+ context 'when there are no orders' do
112
+ it 'throws an error' do
113
+ expect { subject.list }.to raise_error(Cointrader::NoOpenOrders)
137
114
  end
138
115
  end
139
116
  end
140
117
 
141
118
  describe '#market_buy' do
142
119
  it 'returns an order' do
143
- VCR.use_cassette('market_buy') do
144
- response = market_buy
145
- expect_success(response)
146
- expect(response['message']).not_to eq('Unauthorized')
147
- end
120
+ response = market_buy
121
+ expect_success(response)
122
+ expect(response['message']).not_to eq('Unauthorized')
148
123
  end
149
124
  end
150
125
 
151
126
  describe '#market_sell' do
152
127
  it 'returns an order' do
153
- VCR.use_cassette('market_sell') do
154
- response = market_sell
155
- expect_success(response)
156
- expect(response['message']).not_to eq('Unauthorized')
157
- end
128
+ response = market_sell
129
+ expect_success(response)
130
+ expect(response['message']).not_to eq('Unauthorized')
158
131
  end
159
132
  end
160
133
 
161
134
  describe '#trades' do
162
135
  it 'lists recent trades executed' do
163
- VCR.use_cassette('trades') do
164
- response = subject.trades
165
- expect_success(response)
166
- # expect(response['data'][0]['price'])
167
- end
136
+ response = subject.trades
137
+ expect_success(response)
168
138
  end
169
139
  end
170
140
  end
@@ -5,8 +5,8 @@ http_interactions:
5
5
  uri: https://sandbox.cointrader.net/api4/account/balance
6
6
  body:
7
7
  encoding: UTF-8
8
- string: '{"secret":"2MlxW8mUU9MG4bvq7C6M4PSd5J8SaauW4H2dXnyJyAcN","t":"2015-06-13
9
- 23:00:21 UTC"}'
8
+ string: '{"secret":"2MlxW8mUU9MG4bvq7C6M4PSd5J8SaauW4H2dXnyJyAcN","t":"2015-07-06
9
+ 00:33:09 UTC"}'
10
10
  headers:
11
11
  Accept:
12
12
  - "*/*; q=0.5, application/xml"
@@ -17,7 +17,7 @@ http_interactions:
17
17
  X-Auth:
18
18
  - nCsNvmrxTpYFnJQyU16gq6R9ncOUA6UhF4wZnuf7IqkL
19
19
  X-Auth-Hash:
20
- - 149ab2f07d5f872b8244e00a63e7978aa961760215f523c46869aba6c69b41a9
20
+ - e6bb80adc0eaaa0c1b6de259208d310034606062bc0c6e9d27a892364d08c6e8
21
21
  Content-Length:
22
22
  - '87'
23
23
  User-Agent:
@@ -28,7 +28,7 @@ http_interactions:
28
28
  message: OK
29
29
  headers:
30
30
  Date:
31
- - Sat, 13 Jun 2015 23:00:26 GMT
31
+ - Mon, 06 Jul 2015 00:33:10 GMT
32
32
  Server:
33
33
  - Apache
34
34
  X-Frame-Options:
@@ -40,7 +40,7 @@ http_interactions:
40
40
  X-Powered-By:
41
41
  - ''
42
42
  Set-Cookie:
43
- - CTXIDSCK=rumaii5548fj7n7g95sjggu251; path=/; HttpOnly
43
+ - CTXIDSCK=4f9kvstmt2ff4r5i4i42ssv4q0; path=/; HttpOnly
44
44
  Expires:
45
45
  - Thu, 19 Nov 1981 08:52:00 GMT
46
46
  Cache-Control:
@@ -62,5 +62,5 @@ http_interactions:
62
62
  EnMS84BKlHSUUhJLEpWsqpWcQpxBVGJZYmZOYlIOSLWBngEUANXl58Vn5Oek
63
63
  oAuX5Jck5qAK1uoohQa7YDMMwxg0A0BanR3J1FpbywUAkRGfN/oAAAA=
64
64
  http_version:
65
- recorded_at: Sat, 13 Jun 2015 23:00:26 GMT
65
+ recorded_at: Mon, 06 Jul 2015 00:33:11 GMT
66
66
  recorded_with: VCR 2.9.3
@@ -5,8 +5,8 @@ http_interactions:
5
5
  uri: https://sandbox.cointrader.net/api4/account/tradehistory/BTCUSD
6
6
  body:
7
7
  encoding: UTF-8
8
- string: '{"secret":"2MlxW8mUU9MG4bvq7C6M4PSd5J8SaauW4H2dXnyJyAcN","t":"2015-06-13
9
- 23:00:26 UTC"}'
8
+ string: '{"secret":"2MlxW8mUU9MG4bvq7C6M4PSd5J8SaauW4H2dXnyJyAcN","t":"2015-07-06
9
+ 00:33:11 UTC"}'
10
10
  headers:
11
11
  Accept:
12
12
  - "*/*; q=0.5, application/xml"
@@ -17,7 +17,7 @@ http_interactions:
17
17
  X-Auth:
18
18
  - nCsNvmrxTpYFnJQyU16gq6R9ncOUA6UhF4wZnuf7IqkL
19
19
  X-Auth-Hash:
20
- - df4718084a819b003d263c40e0ab07f5c3d0f323d2e8bbd4dd7f96111ea2219f
20
+ - 70b3415aa79e305dd4bbc7035576a776fc19e79f78a19bb11f3348b0d3286774
21
21
  Content-Length:
22
22
  - '87'
23
23
  User-Agent:
@@ -28,7 +28,7 @@ http_interactions:
28
28
  message: OK
29
29
  headers:
30
30
  Date:
31
- - Sat, 13 Jun 2015 23:00:27 GMT
31
+ - Mon, 06 Jul 2015 00:33:13 GMT
32
32
  Server:
33
33
  - Apache
34
34
  X-Frame-Options:
@@ -40,7 +40,7 @@ http_interactions:
40
40
  X-Powered-By:
41
41
  - ''
42
42
  Set-Cookie:
43
- - CTXIDSCK=gdillhuvabvuc9994n1t8an4q7; path=/; HttpOnly
43
+ - CTXIDSCK=vdddf8frh65pplqpfcakv5lfg4; path=/; HttpOnly
44
44
  Expires:
45
45
  - Thu, 19 Nov 1981 08:52:00 GMT
46
46
  Cache-Control:
@@ -62,5 +62,5 @@ http_interactions:
62
62
  yiWmpypZKfnlKwQkFpcohBQlpqQWK7gBlaQo6SilJJYkKllFx9ZyAQBQ0dFf
63
63
  TAAAAA==
64
64
  http_version:
65
- recorded_at: Sat, 13 Jun 2015 23:00:27 GMT
65
+ recorded_at: Mon, 06 Jul 2015 00:33:14 GMT
66
66
  recorded_with: VCR 2.9.3
@@ -2,11 +2,11 @@
2
2
  http_interactions:
3
3
  - request:
4
4
  method: post
5
- uri: https://sandbox.cointrader.net/api4/order/BTCUSD/cancel
5
+ uri: https://sandbox.cointrader.net/api4/order/BTCUSD/buy
6
6
  body:
7
7
  encoding: UTF-8
8
- string: '{"order_id":"2222321","secret":"2MlxW8mUU9MG4bvq7C6M4PSd5J8SaauW4H2dXnyJyAcN","t":"2015-06-13
9
- 23:01:51 UTC"}'
8
+ string: '{"total_quantity":"1.00000000","price":"10.00","secret":"2MlxW8mUU9MG4bvq7C6M4PSd5J8SaauW4H2dXnyJyAcN","t":"2015-07-06
9
+ 00:33:24 UTC"}'
10
10
  headers:
11
11
  Accept:
12
12
  - "*/*; q=0.5, application/xml"
@@ -17,9 +17,9 @@ http_interactions:
17
17
  X-Auth:
18
18
  - nCsNvmrxTpYFnJQyU16gq6R9ncOUA6UhF4wZnuf7IqkL
19
19
  X-Auth-Hash:
20
- - f6f960802d0ec32112a9b5c659ceac1a46cbe62ad22bdc38070451fa0c09ae50
20
+ - 6bdad317ad5711f68b05097d42aa897691ef2d9a72a4e5eab3658d00ddc703d5
21
21
  Content-Length:
22
- - '108'
22
+ - '133'
23
23
  User-Agent:
24
24
  - Ruby
25
25
  response:
@@ -28,7 +28,7 @@ http_interactions:
28
28
  message: OK
29
29
  headers:
30
30
  Date:
31
- - Sat, 13 Jun 2015 23:01:53 GMT
31
+ - Mon, 06 Jul 2015 00:33:26 GMT
32
32
  Server:
33
33
  - Apache
34
34
  X-Frame-Options:
@@ -40,7 +40,7 @@ http_interactions:
40
40
  X-Powered-By:
41
41
  - ''
42
42
  Set-Cookie:
43
- - CTXIDSCK=pmv8crr36dojr43dlq3784r1d1; path=/; HttpOnly
43
+ - CTXIDSCK=a0mojedrbeebc6pr9poeodriu7; path=/; HttpOnly
44
44
  Expires:
45
45
  - Thu, 19 Nov 1981 08:52:00 GMT
46
46
  Cache-Control:
@@ -52,15 +52,15 @@ http_interactions:
52
52
  Content-Encoding:
53
53
  - gzip
54
54
  Content-Length:
55
- - '114'
55
+ - '131'
56
56
  Content-Type:
57
57
  - application/json
58
58
  body:
59
59
  encoding: ASCII-8BIT
60
60
  string: !binary |-
61
- H4sIAAAAAAAAA6tWKi5NTk4tLlaySkvMKU7VUcoFchLTU5WslPyLUlKLFPzy
62
- SxTc8kvzUpR0lFISSxKVrKqVUouK8ouc81NAqiwMDJSQdYVkpCrkg3Wm5KcW
63
- 56mXKKRWZBaX6CnV1nIBAHEGK69uAAAA
61
+ H4sIAAAAAAAAA6tWKi5NTk4tLlaySkvMKU7VUcoFchLTU5WslJxKKxX8i1JS
62
+ ixRci4ryi6wUPPOKS9PSMpMzU/NKFNxK81KK9RSCUnMTM/My89KtFAz0DKBA
63
+ QUlHKSWxJFHJqlopFaTXOT8FZKKFgZESsg0kGFhbywUAxhnDjqwAAAA=
64
64
  http_version:
65
- recorded_at: Sat, 13 Jun 2015 23:01:55 GMT
65
+ recorded_at: Mon, 06 Jul 2015 00:33:27 GMT
66
66
  recorded_with: VCR 2.9.3
@@ -0,0 +1,66 @@
1
+ ---
2
+ http_interactions:
3
+ - request:
4
+ method: post
5
+ uri: https://sandbox.cointrader.net/api4/order/BTCUSD/buy
6
+ body:
7
+ encoding: UTF-8
8
+ string: '{"total_quantity":"1.00000000","price":"10.00","secret":"2MlxW8mUU9MG4bvq7C6M4PSd5J8SaauW4H2dXnyJyAcN","t":"2015-07-06
9
+ 00:33:14 UTC"}'
10
+ headers:
11
+ Accept:
12
+ - "*/*; q=0.5, application/xml"
13
+ Accept-Encoding:
14
+ - gzip, deflate
15
+ Content-Type:
16
+ - application/json
17
+ X-Auth:
18
+ - nCsNvmrxTpYFnJQyU16gq6R9ncOUA6UhF4wZnuf7IqkL
19
+ X-Auth-Hash:
20
+ - 7684a274dc8e01dcc26b8098399b9f1280bc572ccd9bf0460f051749291f29b4
21
+ Content-Length:
22
+ - '133'
23
+ User-Agent:
24
+ - Ruby
25
+ response:
26
+ status:
27
+ code: 200
28
+ message: OK
29
+ headers:
30
+ Date:
31
+ - Mon, 06 Jul 2015 00:33:16 GMT
32
+ Server:
33
+ - Apache
34
+ X-Frame-Options:
35
+ - SAMEORIGIN
36
+ X-Xss-Protection:
37
+ - 1; mode=block
38
+ X-Content-Type-Options:
39
+ - nosniff
40
+ X-Powered-By:
41
+ - ''
42
+ Set-Cookie:
43
+ - CTXIDSCK=pna8o9aoelska2eeltndlfr9e5; path=/; HttpOnly
44
+ Expires:
45
+ - Thu, 19 Nov 1981 08:52:00 GMT
46
+ Cache-Control:
47
+ - no-store, no-cache, must-revalidate, post-check=0, pre-check=0
48
+ Pragma:
49
+ - no-cache
50
+ Vary:
51
+ - Accept-Encoding
52
+ Content-Encoding:
53
+ - gzip
54
+ Content-Length:
55
+ - '131'
56
+ Content-Type:
57
+ - application/json
58
+ body:
59
+ encoding: ASCII-8BIT
60
+ string: !binary |-
61
+ H4sIAAAAAAAAA6tWKi5NTk4tLlaySkvMKU7VUcoFchLTU5WslJxKKxX8i1JS
62
+ ixRci4ryi6wUPPOKS9PSMpMzU/NKFNxK81KK9RSCUnMTM/My89KtFAz0DKBA
63
+ QUlHKSWxJFHJqlopFaTXOT8FZKKFgZESsg0kGFhbywUAxhnDjqwAAAA=
64
+ http_version:
65
+ recorded_at: Mon, 06 Jul 2015 00:33:17 GMT
66
+ recorded_with: VCR 2.9.3