localbitcoins 0.0.4 → 1.0.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.
- checksums.yaml +13 -5
- data/.gitignore +2 -0
- data/Gemfile.lock +16 -19
- data/README.md +319 -35
- data/Rakefile +1 -1
- data/lib/localbitcoins/client/ads.rb +45 -9
- data/lib/localbitcoins/client/contacts.rb +66 -0
- data/lib/localbitcoins/client/escrows.rb +8 -12
- data/lib/localbitcoins/client/markets.rb +27 -0
- data/lib/localbitcoins/client/public.rb +78 -0
- data/lib/localbitcoins/client/users.rb +16 -0
- data/lib/localbitcoins/client/wallet.rb +28 -0
- data/lib/localbitcoins/client.rb +13 -1
- data/lib/localbitcoins/request.rb +11 -15
- data/lib/localbitcoins/version.rb +1 -1
- data/localbitcoins.gemspec +3 -3
- data/spec/client_spec.rb +397 -8
- data/spec/fixtures/account_info.json +14 -0
- data/spec/fixtures/ad_create.json +5 -0
- data/spec/fixtures/ad_list.json +103 -0
- data/spec/fixtures/ad_single.json +55 -0
- data/spec/fixtures/ad_update.json +5 -0
- data/spec/fixtures/ads.json +103 -0
- data/spec/fixtures/contact_message.json +5 -0
- data/spec/fixtures/contacts.json +52 -0
- data/spec/fixtures/contacts_active.json +165 -0
- data/spec/fixtures/contacts_active_buyers.json +60 -0
- data/spec/fixtures/contacts_active_sellers.json +111 -0
- data/spec/fixtures/contacts_cancel.json +5 -0
- data/spec/fixtures/contacts_canceled_contacts.json +162 -0
- data/spec/fixtures/contacts_closed_contacts.json +109 -0
- data/spec/fixtures/contacts_contact_info.json +52 -0
- data/spec/fixtures/contacts_contacts_info.json +111 -0
- data/spec/fixtures/contacts_create.json +10 -0
- data/spec/fixtures/contacts_messages.json +43 -0
- data/spec/fixtures/contacts_released_contacts.json +60 -0
- data/spec/fixtures/currencies.json +505 -0
- data/spec/fixtures/currency_ticker.json +236 -0
- data/spec/fixtures/escrow_release.json +5 -0
- data/spec/fixtures/escrows.json +24 -22
- data/spec/fixtures/local_buy_ads.json +93 -0
- data/spec/fixtures/local_sell_ads.json +93 -0
- data/spec/fixtures/logout.json +0 -0
- data/spec/fixtures/myself.json +14 -0
- data/spec/fixtures/online_buy_ads.json +637 -0
- data/spec/fixtures/online_sell_ads.json +2160 -0
- data/spec/fixtures/orderbook.json +1739 -0
- data/spec/fixtures/payment_methods.json +95 -0
- data/spec/fixtures/places.json +15 -0
- data/spec/fixtures/ticker.json +254 -0
- data/spec/fixtures/trades.json +3002 -0
- data/spec/fixtures/wallet.json +34 -0
- data/spec/fixtures/wallet_addr.json +6 -0
- data/spec/fixtures/wallet_balance.json +16 -0
- data/spec/fixtures/wallet_send.json +5 -0
- data/spec/spec_helper.rb +26 -29
- metadata +51 -7
data/spec/client_spec.rb
CHANGED
@@ -10,18 +10,407 @@ describe 'Client' do
|
|
10
10
|
|
11
11
|
describe "#escrows" do
|
12
12
|
before do
|
13
|
-
stub_get('/api/escrows/',
|
13
|
+
stub_get('/api/escrows/','escrows.json')
|
14
|
+
stub_post('/api/escrow_release/12345/', 'escrow_release.json')
|
14
15
|
end
|
15
16
|
|
16
|
-
it 'returns escrows owner of the access token can release' do
|
17
|
+
it 'returns escrows, which the owner of the access token can release' do
|
17
18
|
expect { client.escrows }.not_to raise_error
|
18
19
|
|
19
20
|
escrows = client.escrows
|
20
|
-
escrows.
|
21
|
-
escrows.escrow_list[0].data.buyer_username.
|
22
|
-
escrows.escrow_list[0].data.reference_code.
|
23
|
-
escrows.escrow_list[1].data.reference_code.
|
24
|
-
escrows.escrow_list[1].actions.release_url.
|
21
|
+
expect(escrows).to be_a Hashie::Mash
|
22
|
+
expect(escrows.escrow_list[0].data.buyer_username).to eq "alice"
|
23
|
+
expect(escrows.escrow_list[0].data.reference_code).to eq "123"
|
24
|
+
expect(escrows.escrow_list[1].data.reference_code).to eq "456"
|
25
|
+
expect(escrows.escrow_list[1].actions.release_url).to eq "/api/escrow_release/2/"
|
26
|
+
end
|
27
|
+
|
28
|
+
it 'returns a success message indicating the escrow has been released' do
|
29
|
+
expect { client.escrow_release('12345') }.not_to raise_error
|
30
|
+
message = client.escrow_release('12345')
|
31
|
+
expect(message).to be_a Hashie::Mash
|
32
|
+
expect(message.message).to eq "The escrow has been released successfully."
|
33
|
+
|
34
|
+
end
|
35
|
+
end
|
36
|
+
|
37
|
+
describe "#ads" do
|
38
|
+
before do
|
39
|
+
stub_get('/api/ads/', 'ads.json')
|
40
|
+
stub_post('/api/ad/12345/', 'ad_update.json')
|
41
|
+
stub_get('/api/ad-get/12345/', 'ad_single.json')
|
42
|
+
stub_post('/api/ad-create/', 'ad_create.json')
|
43
|
+
stub_get('/api/ad-get/', 'ad_list.json',{:ads=>"12345,123456"})
|
44
|
+
end
|
45
|
+
|
46
|
+
it 'returns listing of the token owners ads' do
|
47
|
+
expect { client.ads }.not_to raise_error
|
48
|
+
ads = client.ads
|
49
|
+
expect(ads).to be_a Hashie::Mash
|
50
|
+
expect(ads.ad_count).to eq 2
|
51
|
+
expect(ads.ad_list[0].data.ad_id).to eq 12345
|
52
|
+
expect(ads.ad_list[1].data.ad_id).to eq 123456
|
53
|
+
expect(ads.ad_list[0].data.location_string).to eq "Puerto Vallarta, JAL, Mexico"
|
54
|
+
expect(ads.ad_list[0].data.profile.username).to eq "Bob"
|
55
|
+
expect(ads.ad_list[0].actions.contact_form).to eq "https://localbitcoins.com/api/contact_create/12345/"
|
56
|
+
expect(ads.ad_list[1].data.atm_model).to eq nil
|
57
|
+
end
|
58
|
+
|
59
|
+
it 'returns success message if the ad was updated' do
|
60
|
+
expect { client.update_ad(12345,{:price_equation => "localbitcoins_sell_usd"}) }.not_to raise_error
|
61
|
+
ad_update = client.update_ad(12345,{:price_equation => "localbitcoins_sell_usd"})
|
62
|
+
expect(ad_update).to be_a Hashie::Mash
|
63
|
+
expect(ad_update.message).to eq "Ad changed successfully!"
|
64
|
+
end
|
65
|
+
|
66
|
+
it 'returns success message if the ad was created' do
|
67
|
+
expect { client.create_ad({}) }.not_to raise_error
|
68
|
+
ad_create = client.create_ad({})
|
69
|
+
expect(ad_create).to be_a Hashie::Mash
|
70
|
+
expect(ad_create.message).to eq "Ad added successfully!"
|
71
|
+
end
|
72
|
+
|
73
|
+
it 'returns listing of ads from passed ids' do
|
74
|
+
expect { client.ad_list("12345,123456") }.not_to raise_error
|
75
|
+
ad_list = client.ad_list("12345,123456")
|
76
|
+
expect(ad_list).to be_a Hashie::Mash
|
77
|
+
expect(ad_list.count).to eq 2
|
78
|
+
expect(ad_list.ad_list[0].data.ad_id).to eq 12345
|
79
|
+
expect(ad_list.ad_list[1].data.ad_id).to eq 123456
|
80
|
+
end
|
81
|
+
|
82
|
+
it 'returns ad from passed id' do
|
83
|
+
expect { client.ad("12345") }.not_to raise_error
|
84
|
+
ad = client.ad("12345")
|
85
|
+
expect(ad).to be_a Hashie::Mash
|
86
|
+
expect(ad.count).to eq 2
|
87
|
+
expect(ad.ad_list[0].data.ad_id).to eq 12345
|
88
|
+
expect(ad.ad_count).to eq 1
|
89
|
+
end
|
90
|
+
end
|
91
|
+
|
92
|
+
describe "#wallet" do
|
93
|
+
before do
|
94
|
+
stub_get('/api/wallet/', 'wallet.json')
|
95
|
+
stub_get('/api/wallet-balance/', 'wallet_balance.json')
|
96
|
+
stub_post('/api/wallet-send/', 'wallet_send.json')
|
97
|
+
stub_post('/api/wallet-addr/', 'wallet_addr.json')
|
98
|
+
end
|
99
|
+
|
100
|
+
it 'returns information about the token owners wallet' do
|
101
|
+
expect { client.wallet }.not_to raise_error
|
102
|
+
wallet = client.wallet
|
103
|
+
expect(wallet).to be_a Hashie::Mash
|
104
|
+
expect(wallet.total.balance).to eq "0.05"
|
105
|
+
expect(wallet.total.sendable).to eq "0.05"
|
106
|
+
expect(wallet.receiving_address_list[0].address).to eq "15HfUY9LwwewaWwrKRXzE91tjDnHmye1hc"
|
107
|
+
end
|
108
|
+
|
109
|
+
it 'returns balance information for the token owners wallet' do
|
110
|
+
expect { client.wallet_balance }.not_to raise_error
|
111
|
+
wallet_balance = client.wallet_balance
|
112
|
+
expect(wallet_balance).to be_a Hashie::Mash
|
113
|
+
expect(wallet_balance.message).to eq "ok"
|
114
|
+
expect(wallet_balance.total.balance).to eq "0.05"
|
115
|
+
expect(wallet_balance.total.sendable).to eq "0.05"
|
116
|
+
expect(wallet_balance.receiving_address_list[0].address).to eq "15HfUY9LwwewaWwrKRXzE91tjDnHmye1hc"
|
117
|
+
end
|
118
|
+
|
119
|
+
it 'returns confirmation message for sending btc' do
|
120
|
+
expect { client.wallet_send("15HfUY9LwwewaWwrKRXzE91tjDnHmy2d2hc","0.001") }.not_to raise_error
|
121
|
+
wallet_send = client.wallet_send("15HfUY9LwwewaWwrKRXzE91tjDnHmy2d2hc","0.001")
|
122
|
+
expect(wallet_send).to be_a Hashie::Mash
|
123
|
+
expect(wallet_send.message).to eq "Money is being sent"
|
124
|
+
end
|
125
|
+
|
126
|
+
it 'returns unused wallet address from token owners wallet' do
|
127
|
+
expect { client.wallet_addr }.not_to raise_error
|
128
|
+
wallet_address = client.wallet_addr
|
129
|
+
expect(wallet_address.address).to eq "15HfUY9LwwewaWwrKRXzE91tjDnHmy2d2hc"
|
130
|
+
expect(wallet_address.message).to eq "OK!"
|
131
|
+
end
|
132
|
+
end
|
133
|
+
|
134
|
+
describe "#contacts" do
|
135
|
+
before do
|
136
|
+
stub_post('/api/contact_message_post/12345/', 'contact_message.json')
|
137
|
+
stub_get('/api/dashboard/', 'contacts_active.json')
|
138
|
+
stub_get('/api/dashboard/buyer/', 'contacts_active_buyers.json')
|
139
|
+
stub_get('/api/dashboard/seller/', 'contacts_active_sellers.json')
|
140
|
+
stub_get('/api/dashboard/released/', 'contacts_released_contacts.json')
|
141
|
+
stub_get('/api/dashboard/canceled/', 'contacts_canceled_contacts.json')
|
142
|
+
stub_get('/api/dashboard/closed/', 'contacts_canceled_contacts.json')
|
143
|
+
stub_get('/api/contact_messages/12345/', 'contacts_messages.json')
|
144
|
+
stub_post('/api/contact_cancel/12345/','contacts_cancel.json')
|
145
|
+
stub_post('/api/contact_create/12345/', 'contacts_create.json')
|
146
|
+
stub_get('/api/contact_info/12345/', 'contacts_contact_info.json')
|
147
|
+
stub_get('/api/contact_info/', 'contacts_contacts_info.json', {:contacts=>"12345,54321"})
|
148
|
+
end
|
149
|
+
|
150
|
+
it 'returns confirmation for sending a message' do
|
151
|
+
expect { client.message_contact('12345', 'Text of the message.') }.not_to raise_error
|
152
|
+
contact_message = client.message_contact('12345', 'Text of the message.')
|
153
|
+
expect(contact_message).to be_a Hashie::Mash
|
154
|
+
expect(contact_message.message).to eq "Message sent successfully."
|
155
|
+
end
|
156
|
+
|
157
|
+
it 'returns active contact list for token owner' do
|
158
|
+
expect { client.active_contacts }.not_to raise_error
|
159
|
+
active_contacts = client.active_contacts
|
160
|
+
expect(active_contacts).to be_a Hashie::Mash
|
161
|
+
expect(active_contacts.contact_count).to eq 3
|
162
|
+
expect(active_contacts.contact_list[0].data.currency).to eq "MXN"
|
163
|
+
expect(active_contacts.contact_list[1].data.currency).to eq "MXN"
|
164
|
+
expect(active_contacts.contact_list[2].data.currency).to eq "USD"
|
165
|
+
expect(active_contacts.contact_list[0].data.amount).to eq "1.00"
|
166
|
+
expect(active_contacts.contact_list[1].data.amount).to eq "2.00"
|
167
|
+
expect(active_contacts.contact_list[2].data.amount).to eq "0.10"
|
168
|
+
expect(active_contacts.contact_list[0].data.advertisement.id).to eq 1234567
|
169
|
+
expect(active_contacts.contact_list[1].data.advertisement.id).to eq 1234567
|
170
|
+
expect(active_contacts.contact_list[2].data.advertisement.id).to eq 1234567
|
171
|
+
expect(active_contacts.contact_list[0].data.advertisement.advertiser.username).to eq "Bob"
|
172
|
+
expect(active_contacts.contact_list[1].data.advertisement.advertiser.username).to eq "Bob"
|
173
|
+
expect(active_contacts.contact_list[2].data.advertisement.advertiser.username).to eq "Alice"
|
174
|
+
expect(active_contacts.contact_list[0].data.is_selling).to eq true
|
175
|
+
expect(active_contacts.contact_list[1].data.is_selling).to eq true
|
176
|
+
expect(active_contacts.contact_list[2].data.is_selling).to eq false
|
177
|
+
expect(active_contacts.contact_list[0].data.is_buying).to eq false
|
178
|
+
expect(active_contacts.contact_list[1].data.is_buying).to eq false
|
179
|
+
expect(active_contacts.contact_list[2].data.is_buying).to eq true
|
180
|
+
end
|
181
|
+
|
182
|
+
it 'returns active buyer contacts for token owner' do
|
183
|
+
expect { client.active_contacts('buyer') }.not_to raise_error
|
184
|
+
active_buyer_contacts = client.active_contacts('buyer')
|
185
|
+
expect(active_buyer_contacts).to be_a Hashie::Mash
|
186
|
+
expect(active_buyer_contacts.contact_count).to eq 1
|
187
|
+
expect(active_buyer_contacts.contact_list[0].data.advertisement.id).to eq 123456
|
188
|
+
expect(active_buyer_contacts.contact_list[0].data.advertisement.advertiser.username).to eq "Alice"
|
189
|
+
expect(active_buyer_contacts.contact_list[0].data.contact_id).to eq 543210
|
190
|
+
end
|
191
|
+
|
192
|
+
it 'returns active seller contacts for token owner' do
|
193
|
+
expect { client.active_contacts('seller') }.not_to raise_error
|
194
|
+
active_seller_contacts = client.active_contacts('seller')
|
195
|
+
expect(active_seller_contacts).to be_a Hashie::Mash
|
196
|
+
expect(active_seller_contacts.contact_count).to eq 2
|
197
|
+
expect(active_seller_contacts.contact_list[0].data.currency).to eq "MXN"
|
198
|
+
expect(active_seller_contacts.contact_list[1].data.currency).to eq "MXN"
|
199
|
+
expect(active_seller_contacts.contact_list[0].data.payment_completed_at).to eq nil
|
200
|
+
end
|
201
|
+
|
202
|
+
it 'returns list of released contacts' do
|
203
|
+
expect { client.released_contacts }.not_to raise_error
|
204
|
+
released_contacts = client.released_contacts
|
205
|
+
expect(released_contacts).to be_a Hashie::Mash
|
206
|
+
expect(released_contacts.contact_count).to eq 1
|
207
|
+
expect(released_contacts.contact_list[0].data.advertisement.id).to eq 123456
|
208
|
+
expect(released_contacts.contact_list[0].data.advertisement.advertiser.username).to eq "Alice"
|
209
|
+
expect(released_contacts.contact_list[0].data.contact_id).to eq 543210
|
210
|
+
end
|
211
|
+
|
212
|
+
it 'returns list of canceled contacts' do
|
213
|
+
expect { client.canceled_contacts }.not_to raise_error
|
214
|
+
canceled_contacts = client.canceled_contacts
|
215
|
+
expect(canceled_contacts).to be_a Hashie::Mash
|
216
|
+
expect(canceled_contacts.contact_count).to eq 3
|
217
|
+
expect(canceled_contacts.contact_list[0].data.advertisement.advertiser.username).to eq "Bob"
|
218
|
+
expect(canceled_contacts.contact_list[2].data.advertisement.advertiser.username).to eq "Bob"
|
219
|
+
expect(canceled_contacts.contact_list[0].data.canceled_at).to eq "2014-06-19T20:34:18+00:00"
|
220
|
+
expect(canceled_contacts.contact_list[2].data.canceled_at).to eq "2014-06-19T18:56:45+00:00"
|
221
|
+
expect(canceled_contacts.contact_list[1].data.amount).to eq "108.46"
|
222
|
+
expect(canceled_contacts.contact_list[2].data.amount).to eq "100.02"
|
223
|
+
end
|
224
|
+
|
225
|
+
it 'returns list of closed contacts' do
|
226
|
+
expect { client.closed_contacts }.not_to raise_error
|
227
|
+
closed_contacts = client.closed_contacts
|
228
|
+
expect(closed_contacts).to be_a Hashie::Mash
|
229
|
+
expect(closed_contacts.contact_count).to eq 3
|
230
|
+
expect(closed_contacts.contact_list[0].data.advertisement.advertiser.username).to eq "Bob"
|
231
|
+
expect(closed_contacts.contact_list[2].data.advertisement.advertiser.username).to eq "Bob"
|
232
|
+
expect(closed_contacts.contact_list[0].data.canceled_at).to eq "2014-06-19T20:34:18+00:00"
|
233
|
+
expect(closed_contacts.contact_list[2].data.canceled_at).to eq "2014-06-19T18:56:45+00:00"
|
234
|
+
expect(closed_contacts.contact_list[1].data.amount).to eq "108.46"
|
235
|
+
expect(closed_contacts.contact_list[2].data.amount).to eq "100.02"
|
236
|
+
end
|
237
|
+
|
238
|
+
it 'returns list of messages for a contact' do
|
239
|
+
expect { client.messages_from_contact('12345') }.not_to raise_error
|
240
|
+
contact_messages = client.messages_from_contact('12345')
|
241
|
+
expect(contact_messages).to be_a Hashie::Mash
|
242
|
+
expect(contact_messages.message_count).to eq 3
|
243
|
+
expect(contact_messages.message_list[0].msg).to eq "Message body"
|
244
|
+
expect(contact_messages.message_list[1].msg).to eq "Text of the message."
|
245
|
+
expect(contact_messages.message_list[0].sender.username).to eq "Bob"
|
246
|
+
expect(contact_messages.message_list[2].sender.username).to eq "Alice"
|
247
|
+
end
|
248
|
+
|
249
|
+
it 'returns confirmation on cancellation of a contact' do
|
250
|
+
expect { client.cancel_contact('12345') }.not_to raise_error
|
251
|
+
cancel_contact = client.cancel_contact('12345')
|
252
|
+
expect(cancel_contact).to be_a Hashie::Mash
|
253
|
+
expect(cancel_contact.message).to eq "Contact canceled."
|
254
|
+
end
|
255
|
+
|
256
|
+
it 'returns confirmation of contact creation' do
|
257
|
+
expect { client.create_contact('12345', '1000', 'Message body') }.not_to raise_error
|
258
|
+
create_contact = client.create_contact('12345', '1000', 'Message body')
|
259
|
+
expect(create_contact).to be_a Hashie::Mash
|
260
|
+
expect(create_contact.data.message).to eq "OK!"
|
261
|
+
expect(create_contact.actions.contact_url).to eq "https://localbitcoins.com/api/contact_info/123456/"
|
262
|
+
end
|
263
|
+
|
264
|
+
it 'returns specified contact' do
|
265
|
+
expect { client.contact_info(12345) }.not_to raise_error
|
266
|
+
contact_info = client.contact_info(12345)
|
267
|
+
expect(contact_info.data.advertisement.advertiser.username).to eq "Bob"
|
268
|
+
expect(contact_info.data.buyer.username).to eq "Alice"
|
269
|
+
expect(contact_info.data.advertisement.id).to eq 1234567
|
270
|
+
expect(contact_info.actions.messages_url).to eq "https://localbitcoins.com/api/contact_messages/12345/"
|
271
|
+
end
|
272
|
+
|
273
|
+
it 'returns list of contacts, from specified list' do
|
274
|
+
expect { client.contacts_info('12345,54321') }.not_to raise_error
|
275
|
+
contacts = client.contacts_info('12345,54321')
|
276
|
+
expect(contacts).to be_a Hashie::Mash
|
277
|
+
expect(contacts.contact_count).to eq 2
|
278
|
+
expect(contacts.contact_list[0].data.advertisement.advertiser.username).to eq "Bob"
|
279
|
+
expect(contacts.contact_list[1].data.advertisement.advertiser.username).to eq "Bob"
|
280
|
+
expect(contacts.contact_list[0].data.buyer.username).to eq "Alice"
|
281
|
+
expect(contacts.contact_list[1].data.buyer.username).to eq "Alice"
|
282
|
+
expect(contacts.contact_list[0].actions.cancel_url).to eq "https://localbitcoins.com/api/contact_cancel/12345/"
|
283
|
+
end
|
284
|
+
|
285
|
+
end
|
286
|
+
|
287
|
+
describe "#users" do
|
288
|
+
before do
|
289
|
+
stub_get('/api/myself/', 'myself.json')
|
290
|
+
stub_get('/api/account_info/bob/', 'account_info.json')
|
291
|
+
stub_post('/api/logout/', 'logout.json')
|
292
|
+
end
|
293
|
+
|
294
|
+
it 'returns user information on the token owner' do
|
295
|
+
expect { client.myself }.not_to raise_error
|
296
|
+
myself = client.myself
|
297
|
+
expect(myself.username).to eq "alice"
|
298
|
+
expect(myself.has_common_trades).to eq false
|
299
|
+
expect(myself.trusted_count).to eq 4
|
300
|
+
end
|
301
|
+
|
302
|
+
it 'returns user information on user with specified username' do
|
303
|
+
expect { client.account_info('bob') }.not_to raise_error
|
304
|
+
account_info = client.account_info('bob')
|
305
|
+
expect(account_info.username).to eq "bob"
|
306
|
+
expect(account_info.trade_volume_text).to eq "Less than 25 BTC"
|
307
|
+
expect(account_info.url).to eq "https://localbitcoins.com/p/bob/"
|
308
|
+
end
|
309
|
+
|
310
|
+
it 'immediately expires currently authorized access_token' do
|
311
|
+
#expect { client.logout }.not_to raise_error
|
312
|
+
|
313
|
+
end
|
314
|
+
end
|
315
|
+
|
316
|
+
describe "#markets" do
|
317
|
+
before do
|
318
|
+
stub_get_unauth('/bitcoinaverage/ticker-all-currencies/', 'ticker.json')
|
319
|
+
stub_get_unauth('/bitcoincharts/USD/trades.json?since=170892', 'trades.json')
|
320
|
+
stub_get_unauth('/bitcoincharts/USD/orderbook.json', 'orderbook.json')
|
321
|
+
end
|
322
|
+
|
323
|
+
it 'returns current bitcoin prices in all currencies' do
|
324
|
+
expect { client.ticker }.not_to raise_error
|
325
|
+
ticker = client.ticker
|
326
|
+
expect(ticker.USD.volume_btc).to eq "701.42"
|
327
|
+
expect(ticker.MXN.rates.last).to eq "8431.10"
|
328
|
+
expect(ticker.PHP.avg_12h).to eq 24559.67
|
329
|
+
end
|
330
|
+
|
331
|
+
it 'returns last 500 trades in a specified currency since last_tid' do
|
332
|
+
expect { client.trades('USD', '170892') }.not_to raise_error
|
333
|
+
trades = client.trades('USD', '170892')
|
334
|
+
expect(trades).to be_a Array
|
335
|
+
expect(trades[0]['tid']).to eq 170892
|
336
|
+
expect(trades[-1]['amount']).to eq "1.54970000"
|
337
|
+
end
|
338
|
+
|
339
|
+
it 'immediately expires currently authorized access_token' do
|
340
|
+
expect { client.orderbook('USD') }.not_to raise_error
|
341
|
+
orderbook = client.orderbook('USD')
|
342
|
+
expect(orderbook).to be_a Hashie::Mash
|
343
|
+
expect(orderbook.asks[0][1]).to eq "1190.53"
|
344
|
+
expect(orderbook.bids[-1][0]).to eq "0.16"
|
345
|
+
end
|
346
|
+
end
|
347
|
+
|
348
|
+
describe "#public" do
|
349
|
+
before do
|
350
|
+
stub_get_unauth('/buy-bitcoins-online/US/usa/moneygram/.json', 'online_buy_ads.json')
|
351
|
+
stub_get_unauth('/sell-bitcoins-online/.json', 'online_sell_ads.json')
|
352
|
+
stub_get_unauth('/api/payment_methods/us/', 'payment_methods.json')
|
353
|
+
stub_get_unauth('/api/currencies/', 'currencies.json')
|
354
|
+
stub_get_unauth('/buy-bitcoins-with-cash/214875/48453-mx/.json?lat=20&lon=-105', 'local_buy_ads.json')
|
355
|
+
stub_get_unauth('/sell-bitcoins-with-cash/214875/48453-mx/.json?lat=20&lon=-105', 'local_sell_ads.json')
|
356
|
+
stub_get_unauth('/api/places/?lat=35&lon=100', 'places.json')
|
357
|
+
end
|
358
|
+
|
359
|
+
it 'shows all online buy ads with given specifications' do
|
360
|
+
expect { client.online_buy_ads_lookup({:countrycode => "US", :country_name => "usa", :payment_method => "moneygram"}) }.not_to raise_error
|
361
|
+
ads = client.online_buy_ads_lookup({:countrycode => "US", :country_name => "usa", :payment_method => "moneygram"})
|
362
|
+
expect(ads).to be_a Hashie::Mash
|
363
|
+
expect(ads.data.ad_list[0][:data][:profile][:username]).to eq "btcusd"
|
364
|
+
expect(ads.data.ad_count).to eq 15
|
365
|
+
end
|
366
|
+
|
367
|
+
it 'shows all online sell ads with given specifications' do
|
368
|
+
expect { client.online_sell_ads_lookup }.not_to raise_error
|
369
|
+
ads = client.online_sell_ads_lookup
|
370
|
+
expect(ads).to be_a Hashie::Mash
|
371
|
+
expect(ads.data.ad_list[0][:data][:created_at]).to eq "2013-09-22T08:50:04+00:00"
|
372
|
+
expect(ads.data.ad_list[1][:actions][:public_view]).to eq "https://localbitcoins.com/ad/55455"
|
373
|
+
expect(ads.pagination.next).to eq "https://localbitcoins.com/sell-bitcoins-online/.json?temp_price_usd__lt=571.35"
|
374
|
+
end
|
375
|
+
|
376
|
+
it 'shows all payment methods accepted in given countrycode' do
|
377
|
+
expect { client.payment_methods('us') }.not_to raise_error
|
378
|
+
payment = client.payment_methods('us')
|
379
|
+
expect(payment).to be_a Hashie::Mash
|
380
|
+
expect(payment[:methods].solidtrustpay.name).to eq "SolidTrustPay"
|
381
|
+
expect(payment.method_count).to eq 22
|
382
|
+
end
|
383
|
+
|
384
|
+
it 'shows all currencies used by localbitcoins' do
|
385
|
+
expect { client.currencies }.not_to raise_error
|
386
|
+
currencies = client.currencies
|
387
|
+
expect(currencies.currencies.EGP.name).to eq "Egyptian Pound"
|
388
|
+
expect(currencies.currency_count).to eq 166
|
389
|
+
end
|
390
|
+
|
391
|
+
it 'shows all local buy ads with given specifications' do
|
392
|
+
expect { client.local_buy_ad({:location_id=>214875, :location_slug=>"48453-MX", :lat=>20, :lon=>-105}) }.not_to raise_error
|
393
|
+
ads = client.local_buy_ad({:location_id=>214875, :location_slug=>"48453-MX", :lat=>20, :lon=>-105})
|
394
|
+
expect(ads.data.ad_list[0].data.profile.username).to eq "bob"
|
395
|
+
expect(ads.data.ad_list[0].data.ad_id).to eq 123456
|
396
|
+
expect(ads.data.ad_list[1].data.msg).to eq("Fell in a hole and found a secret and magical world! Bitcoins grow on trees down here ;)")
|
397
|
+
end
|
398
|
+
|
399
|
+
it 'shows all local sell ads with given specifications' do
|
400
|
+
expect { client.local_sell_ad({:location_id=>214875, :location_slug=>"48453-MX", :lat=>20, :lon=>-105}) }.not_to raise_error
|
401
|
+
ads = client.local_sell_ad({:location_id=>214875, :location_slug=>"48453-MX", :lat=>20, :lon=>-105})
|
402
|
+
expect(ads.data.ad_list[0].data.profile.username).to eq "bobby"
|
403
|
+
expect(ads.data.ad_list[0].data.ad_id).to eq 12345
|
404
|
+
expect(ads.data.ad_list[1].data.msg).to eq "Hola, mundo!"
|
405
|
+
expect(ads.data.ad_list[1].actions.public_view).to eq "https://localbitcoins.com/ad/67890"
|
406
|
+
end
|
407
|
+
|
408
|
+
it 'shows the location information associated with a given latitude and longitude' do
|
409
|
+
expect { client.places({:lat=>35, :lon=>100}) }.not_to raise_error
|
410
|
+
places = client.places({:lat=>35, :lon=>100})
|
411
|
+
expect(places.places[0].location_string).to eq "Hainan, Qinghai, China"
|
412
|
+
expect(places.places[0].lon).to eq 100.62
|
413
|
+
expect(places.place_count).to eq 1
|
25
414
|
end
|
26
415
|
end
|
27
|
-
end
|
416
|
+
end
|
@@ -0,0 +1,14 @@
|
|
1
|
+
{
|
2
|
+
"data": {
|
3
|
+
"username": "bob",
|
4
|
+
"trading_partners_count": 9,
|
5
|
+
"feedbacks_unconfirmed_count": 2,
|
6
|
+
"trade_volume_text": "Less than 25 BTC",
|
7
|
+
"has_common_trades": true,
|
8
|
+
"confirmed_trade_count_text": "2",
|
9
|
+
"blocked_count": 4,
|
10
|
+
"feedback_count": 1,
|
11
|
+
"url": "https://localbitcoins.com/p/bob/",
|
12
|
+
"trusted_count": 3
|
13
|
+
}
|
14
|
+
}
|
@@ -0,0 +1,103 @@
|
|
1
|
+
{
|
2
|
+
"data": {
|
3
|
+
"ad_count": 2,
|
4
|
+
"ad_list": [
|
5
|
+
{
|
6
|
+
"data": {
|
7
|
+
"require_feedback_score": 90,
|
8
|
+
"reference_type": "SHORT",
|
9
|
+
"trusted_required": false,
|
10
|
+
"currency": "MXN",
|
11
|
+
"account_info": "",
|
12
|
+
"age_days_coefficient_limit": "4.00",
|
13
|
+
"first_time_limit_btc": "2.00",
|
14
|
+
"city": "Puerto Vallarta",
|
15
|
+
"location_string": "Puerto Vallarta, JAL, Mexico",
|
16
|
+
"countrycode": "MX",
|
17
|
+
"max_amount": null,
|
18
|
+
"lon": -105.22,
|
19
|
+
"sms_verification_required": false,
|
20
|
+
"require_trade_volume": 0.00,
|
21
|
+
"online_provider": "CASH_DEPOSIT",
|
22
|
+
"max_amount_available": null,
|
23
|
+
"msg": "Contact hours: Mon 09:00-17:00",
|
24
|
+
"email": "bob@domain.com",
|
25
|
+
"volume_coefficient_btc": "1.50",
|
26
|
+
"profile": {
|
27
|
+
"username": "Bob",
|
28
|
+
"feedback_score": 100,
|
29
|
+
"trade_count": "0",
|
30
|
+
"last_online": "2014-06-19T16:17:06+00:00",
|
31
|
+
"name": "Bob (30+;100%)"
|
32
|
+
},
|
33
|
+
"bank_name": "Banorte",
|
34
|
+
"trade_type": "ONLINE_SELL",
|
35
|
+
"ad_id": 12345,
|
36
|
+
"temp_price": "8000",
|
37
|
+
"min_amount": "500",
|
38
|
+
"track_max_amount": true,
|
39
|
+
"temp_price_usd": "615",
|
40
|
+
"lat": 20.64,
|
41
|
+
"price_equation": "localbitcoins_sell_usd",
|
42
|
+
"visible": false,
|
43
|
+
"created_at": "2014-06-17T15:15:07+00:00",
|
44
|
+
"atm_model": null
|
45
|
+
},
|
46
|
+
"actions": {
|
47
|
+
"html_form": "https://localbitcoins.com/ads_edit/12345",
|
48
|
+
"public_view": "https://localbitcoins.com/ad/12345",
|
49
|
+
"contact_form": "https://localbitcoins.com/api/contact_create/12345/",
|
50
|
+
"change_form": "https://localbitcoins.com/api/ad/12345/"
|
51
|
+
}
|
52
|
+
},
|
53
|
+
{
|
54
|
+
"data": {
|
55
|
+
"require_feedback_score": 85,
|
56
|
+
"reference_type": "SHORT",
|
57
|
+
"trusted_required": false,
|
58
|
+
"currency": "MXN",
|
59
|
+
"account_info": "",
|
60
|
+
"age_days_coefficient_limit": "4.00",
|
61
|
+
"first_time_limit_btc": "2.00",
|
62
|
+
"city": "Puerto Vallarta",
|
63
|
+
"location_string": "Puerto Vallarta, JAL, Mexico",
|
64
|
+
"countrycode": "MX",
|
65
|
+
"max_amount": "10000",
|
66
|
+
"min_amount": "500",
|
67
|
+
"lon": -105.22,
|
68
|
+
"sms_verification_required": true,
|
69
|
+
"require_trade_volume": 0.00,
|
70
|
+
"online_provider": "CASH_DEPOSIT",
|
71
|
+
"max_amount_available": null,
|
72
|
+
"msg": "Contact hours: Mon 09:00-17:00\n\nMeeting preferences: Starbucks\n",
|
73
|
+
"email": "bob@domain.com",
|
74
|
+
"volume_coefficient_btc": "1.50",
|
75
|
+
"profile": {
|
76
|
+
"username": "Bob",
|
77
|
+
"feedback_score": 100,
|
78
|
+
"trade_count": "0",
|
79
|
+
"last_online": "2014-06-19T16:17:06+00:00",
|
80
|
+
"name": "Bob (30+;100%)"
|
81
|
+
},
|
82
|
+
"bank_name": "",
|
83
|
+
"trade_type": "LOCAL_SELL",
|
84
|
+
"ad_id": 123456,
|
85
|
+
"temp_price": "9200",
|
86
|
+
"track_max_amount": true,
|
87
|
+
"temp_price_usd": "707",
|
88
|
+
"lat": 20.64,
|
89
|
+
"price_equation": "localbitcoins_sell_usd*1.15",
|
90
|
+
"visible": true,
|
91
|
+
"created_at": "2014-06-17T15:15:07+00:00",
|
92
|
+
"atm_model": null
|
93
|
+
},
|
94
|
+
"actions": {
|
95
|
+
"html_form": "https://localbitcoins.com/ads_edit/123456",
|
96
|
+
"public_view": "https://localbitcoins.com/ad/123456",
|
97
|
+
"contact_form": "https://localbitcoins.com/api/contact_create/123456/",
|
98
|
+
"change_form": "https://localbitcoins.com/api/ad/123456/"
|
99
|
+
}
|
100
|
+
}
|
101
|
+
]
|
102
|
+
}
|
103
|
+
}
|
@@ -0,0 +1,55 @@
|
|
1
|
+
{
|
2
|
+
"data": {
|
3
|
+
"ad_count": 1,
|
4
|
+
"ad_list": [
|
5
|
+
{
|
6
|
+
"data": {
|
7
|
+
"require_feedback_score": 90,
|
8
|
+
"reference_type": "SHORT",
|
9
|
+
"trusted_required": false,
|
10
|
+
"currency": "MXN",
|
11
|
+
"account_info": "",
|
12
|
+
"age_days_coefficient_limit": "4.00",
|
13
|
+
"first_time_limit_btc": "2.00",
|
14
|
+
"city": "Puerto Vallarta",
|
15
|
+
"location_string": "Puerto Vallarta, JAL, Mexico",
|
16
|
+
"countrycode": "MX",
|
17
|
+
"max_amount": null,
|
18
|
+
"lon": -105.22,
|
19
|
+
"sms_verification_required": false,
|
20
|
+
"require_trade_volume": 0.00,
|
21
|
+
"online_provider": "CASH_DEPOSIT",
|
22
|
+
"max_amount_available": null,
|
23
|
+
"msg": "Contact hours: Mon 09:00-17:00",
|
24
|
+
"email": "bob@domain.com",
|
25
|
+
"volume_coefficient_btc": "1.50",
|
26
|
+
"profile": {
|
27
|
+
"username": "Bob",
|
28
|
+
"feedback_score": 100,
|
29
|
+
"trade_count": "0",
|
30
|
+
"last_online": "2014-06-19T16:17:06+00:00",
|
31
|
+
"name": "Bob (30+;100%)"
|
32
|
+
},
|
33
|
+
"bank_name": "Banorte",
|
34
|
+
"trade_type": "ONLINE_SELL",
|
35
|
+
"ad_id": 12345,
|
36
|
+
"temp_price": "8000",
|
37
|
+
"min_amount": "500",
|
38
|
+
"track_max_amount": true,
|
39
|
+
"temp_price_usd": "615",
|
40
|
+
"lat": 20.64,
|
41
|
+
"price_equation": "localbitcoins_sell_usd",
|
42
|
+
"visible": false,
|
43
|
+
"created_at": "2014-06-17T15:15:07+00:00",
|
44
|
+
"atm_model": null
|
45
|
+
},
|
46
|
+
"actions": {
|
47
|
+
"html_form": "https://localbitcoins.com/ads_edit/12345",
|
48
|
+
"public_view": "https://localbitcoins.com/ad/12345",
|
49
|
+
"contact_form": "https://localbitcoins.com/api/contact_create/12345/",
|
50
|
+
"change_form": "https://localbitcoins.com/api/ad/12345/"
|
51
|
+
}
|
52
|
+
}
|
53
|
+
]
|
54
|
+
}
|
55
|
+
}
|