bitex 0.0.2
Sign up to get free protection for your applications and to get access to all the features.
- data/.gitignore +17 -0
- data/.rspec +1 -0
- data/Gemfile +4 -0
- data/LICENSE.txt +22 -0
- data/README.md +89 -0
- data/Rakefile +1 -0
- data/bitex.gemspec +33 -0
- data/lib/bitex.rb +11 -0
- data/lib/bitex/api.rb +57 -0
- data/lib/bitex/buy.rb +25 -0
- data/lib/bitex/market.rb +67 -0
- data/lib/bitex/match.rb +24 -0
- data/lib/bitex/order.rb +185 -0
- data/lib/bitex/profile.rb +10 -0
- data/lib/bitex/sell.rb +25 -0
- data/lib/bitex/specie_deposit.rb +27 -0
- data/lib/bitex/specie_withdrawal.rb +56 -0
- data/lib/bitex/transaction.rb +14 -0
- data/lib/bitex/usd_deposit.rb +65 -0
- data/lib/bitex/usd_withdrawal.rb +56 -0
- data/lib/bitex/version.rb +3 -0
- data/spec/ask_spec.rb +24 -0
- data/spec/bid_spec.rb +24 -0
- data/spec/buy_spec.rb +11 -0
- data/spec/fixtures/aggregated_data.json +1 -0
- data/spec/fixtures/asks_cancel.json +1 -0
- data/spec/fixtures/asks_create.json +1 -0
- data/spec/fixtures/bids_cancel.json +1 -0
- data/spec/fixtures/bids_create.json +1 -0
- data/spec/fixtures/market_ticker.json +1 -0
- data/spec/fixtures/order_book.json +1 -0
- data/spec/fixtures/orders.json +1 -0
- data/spec/fixtures/profile.json +1 -0
- data/spec/fixtures/transactions.json +1 -0
- data/spec/fixtures/user_transactions.json +1 -0
- data/spec/market_spec.rb +46 -0
- data/spec/order_spec.rb +23 -0
- data/spec/profile_spec.rb +23 -0
- data/spec/sell_spec.rb +11 -0
- data/spec/spec_helper.rb +28 -0
- data/spec/specie_deposit_spec.rb +16 -0
- data/spec/specie_withdrawal_spec.rb +37 -0
- data/spec/support/from_json_shared_examples.rb +52 -0
- data/spec/support/order_shared_examples.rb +45 -0
- data/spec/support/request_stubs.rb +17 -0
- data/spec/transaction_spec.rb +19 -0
- data/spec/usd_deposit_spec.rb +45 -0
- data/spec/usd_withdrawal_spec.rb +37 -0
- metadata +269 -0
@@ -0,0 +1,10 @@
|
|
1
|
+
module Bitex
|
2
|
+
# Your balances, fee and deposit addresses
|
3
|
+
class Profile
|
4
|
+
# Your profile conveniently formatted as a ruby hash with symbolized keys.
|
5
|
+
# @see https://bitex.la/developers#profile
|
6
|
+
def self.get
|
7
|
+
Api.private(:GET, '/private/profile').symbolize_keys
|
8
|
+
end
|
9
|
+
end
|
10
|
+
end
|
data/lib/bitex/sell.rb
ADDED
@@ -0,0 +1,25 @@
|
|
1
|
+
module Bitex
|
2
|
+
# A transaction in which you sold some quantity of specie.
|
3
|
+
class Sell < Match
|
4
|
+
# @!attribute id
|
5
|
+
# @return [Integer] This sell's unique ID.
|
6
|
+
|
7
|
+
# @!attribute created_at
|
8
|
+
# @return [Time] Time when this Sell happened.
|
9
|
+
|
10
|
+
# @!attribute specie
|
11
|
+
# @return [Symbol] :btc or :ltc
|
12
|
+
|
13
|
+
# @!attribute quantity
|
14
|
+
# @return [BigDecimal] Quantity of specie sold
|
15
|
+
|
16
|
+
# @!attribute amount
|
17
|
+
# @return [BigDecimal] Amount of USD earned
|
18
|
+
|
19
|
+
# @!attribute fee
|
20
|
+
# @return [BigDecimal] USD amount paid as transaction fee.
|
21
|
+
|
22
|
+
# @!attribute price
|
23
|
+
# @return [BigDecimal] Price charged per unit
|
24
|
+
end
|
25
|
+
end
|
@@ -0,0 +1,27 @@
|
|
1
|
+
module Bitex
|
2
|
+
# A deposit of some specie into your bitex.la balance
|
3
|
+
class SpecieDeposit
|
4
|
+
# @!attribute id
|
5
|
+
# @return [Integer] This SpecieDeposit's unique ID.
|
6
|
+
attr_accessor :id
|
7
|
+
|
8
|
+
# @!attribute created_at
|
9
|
+
# @return [Time] Time when this deposit credited.
|
10
|
+
attr_accessor :created_at
|
11
|
+
|
12
|
+
# @!attribute specie
|
13
|
+
# @return [Symbol] :btc or :ltc
|
14
|
+
attr_accessor :specie
|
15
|
+
|
16
|
+
# @!attribute quantity
|
17
|
+
# @return [BigDecimal] Quantity deposited
|
18
|
+
attr_accessor :quantity
|
19
|
+
|
20
|
+
# @visibility private
|
21
|
+
def self.from_json(json)
|
22
|
+
Api.from_json(new, json, true) do |thing|
|
23
|
+
thing.quantity = BigDecimal.new(json[4].to_s)
|
24
|
+
end
|
25
|
+
end
|
26
|
+
end
|
27
|
+
end
|
@@ -0,0 +1,56 @@
|
|
1
|
+
module Bitex
|
2
|
+
# A withdrawal of some specie from your bitex.la balance
|
3
|
+
class SpecieWithdrawal
|
4
|
+
# @!attribute id
|
5
|
+
# @return [Integer] This SpecieWithdrawal's unique ID.
|
6
|
+
attr_accessor :id
|
7
|
+
|
8
|
+
# @!attribute created_at
|
9
|
+
# @return [Time] Time when this withdrawal was requested by you.
|
10
|
+
attr_accessor :created_at
|
11
|
+
|
12
|
+
# @!attribute specie
|
13
|
+
# @return [Symbol] :btc or :ltc
|
14
|
+
attr_accessor :specie
|
15
|
+
|
16
|
+
# @!attribute amount
|
17
|
+
# @return [BigDecimal] Quantity deposited
|
18
|
+
attr_accessor :quantity
|
19
|
+
|
20
|
+
# @!attribute status
|
21
|
+
# Returns the status of this withdrawal.
|
22
|
+
# * :received Our engine is checking if you have enough funds.
|
23
|
+
# * :pending your withdrawal was accepted and is being processed.
|
24
|
+
# * :done your withdrawal was processed and published to the network.
|
25
|
+
# * :cancelled your withdrawal could not be processed.
|
26
|
+
attr_accessor :status
|
27
|
+
|
28
|
+
# @!attribute reason
|
29
|
+
# Returns the reason for cancellation of this withdrawal, if any.
|
30
|
+
# * :not_cancelled
|
31
|
+
# * :insufficient_funds The instruction was received, but you didn't have enough
|
32
|
+
# funds available
|
33
|
+
# * :destination_invalid The destination address was invalid.
|
34
|
+
attr_accessor :reason
|
35
|
+
|
36
|
+
# @visibility private
|
37
|
+
def self.from_json(json)
|
38
|
+
status_lookup = {
|
39
|
+
1 => :received,
|
40
|
+
2 => :pending,
|
41
|
+
3 => :done,
|
42
|
+
4 => :cancelled,
|
43
|
+
}
|
44
|
+
reason_lookup = {
|
45
|
+
0 => :not_cancelled,
|
46
|
+
1 => :insufficient_funds,
|
47
|
+
2 => :destination_invalid,
|
48
|
+
}
|
49
|
+
Api.from_json(new, json, true) do |thing|
|
50
|
+
thing.quantity = BigDecimal.new(json[4].to_s)
|
51
|
+
thing.status = status_lookup[json[5]]
|
52
|
+
thing.reason = reason_lookup[json[6]]
|
53
|
+
end
|
54
|
+
end
|
55
|
+
end
|
56
|
+
end
|
@@ -0,0 +1,14 @@
|
|
1
|
+
module Bitex
|
2
|
+
# Utility class for fetching an heterogeneous list of objects that
|
3
|
+
# compose your transaction history.
|
4
|
+
class Transaction
|
5
|
+
# @return [Array<Bitex::Buy, Bitex::Sell, Bitex::SpecieDeposit,
|
6
|
+
# Bitex::SpecieWithdrawal, Bitex::UsdDeposit, Bitex::UsdWithdrawal>]
|
7
|
+
# Returns an heterogeneous array with all your transactions for the past
|
8
|
+
# 30 days sorted by descending date.
|
9
|
+
# @see https://bitex.la/developers#user-transactions
|
10
|
+
def self.all
|
11
|
+
Api.private(:GET, '/private/transactions').collect{|o| Api.deserialize(o) }
|
12
|
+
end
|
13
|
+
end
|
14
|
+
end
|
@@ -0,0 +1,65 @@
|
|
1
|
+
module Bitex
|
2
|
+
# A deposit of USD to your bitex.la balance.
|
3
|
+
class UsdDeposit
|
4
|
+
# @!attribute id
|
5
|
+
# @return [Integer] This UsdDeposit's unique ID.
|
6
|
+
attr_accessor :id
|
7
|
+
|
8
|
+
# @!attribute created_at
|
9
|
+
# @return [Time] Time when this deposit was announced by you.
|
10
|
+
attr_accessor :created_at
|
11
|
+
|
12
|
+
# @!attribute amount
|
13
|
+
# @return [BigDecimal] Final amount credited to your bitex USD balance.
|
14
|
+
attr_accessor :amount
|
15
|
+
|
16
|
+
# @!attribute deposit_method
|
17
|
+
# The method used for this deposit
|
18
|
+
# * :astropay
|
19
|
+
# * :other
|
20
|
+
attr_accessor :deposit_method
|
21
|
+
|
22
|
+
# @!attribute status
|
23
|
+
# The status of this deposit.
|
24
|
+
# * :pending your deposit notice was received, we're waiting for the funds
|
25
|
+
# to credit.
|
26
|
+
# * :done your deposit credited correctly, the funds are available in your
|
27
|
+
# balance.
|
28
|
+
# * :cancelled your deposit did not credit, check the 'reason' field.
|
29
|
+
attr_accessor :status
|
30
|
+
|
31
|
+
# @!attribute reason
|
32
|
+
# The reason for cancellation of this deposit, if any.
|
33
|
+
# * :not_cancelled.
|
34
|
+
# * :did_not_credit funds never arrived to our end.
|
35
|
+
# * :sender_unknown we could not accept these funds because you're not the
|
36
|
+
# sender.
|
37
|
+
# * :other we'll contact you regarding this deposit.
|
38
|
+
attr_accessor :reason
|
39
|
+
|
40
|
+
# @visibility private
|
41
|
+
def self.from_json(json)
|
42
|
+
deposit_method_lookup = {
|
43
|
+
1 => :astropay,
|
44
|
+
2 => :other,
|
45
|
+
}
|
46
|
+
status_lookup = {
|
47
|
+
1 => :pending,
|
48
|
+
2 => :done,
|
49
|
+
3 => :cancelled,
|
50
|
+
}
|
51
|
+
reason_lookup = {
|
52
|
+
0 => :not_cancelled,
|
53
|
+
1 => :did_not_credit,
|
54
|
+
2 => :sender_unknown,
|
55
|
+
3 => :other,
|
56
|
+
}
|
57
|
+
Api.from_json(new, json) do |thing|
|
58
|
+
thing.amount = BigDecimal.new(json[3].to_s)
|
59
|
+
thing.deposit_method = deposit_method_lookup[json[4]]
|
60
|
+
thing.status = status_lookup[json[5]]
|
61
|
+
thing.reason = reason_lookup[json[6]]
|
62
|
+
end
|
63
|
+
end
|
64
|
+
end
|
65
|
+
end
|
@@ -0,0 +1,56 @@
|
|
1
|
+
module Bitex
|
2
|
+
# A withdrawal of USD from your bitex.la balance
|
3
|
+
class UsdWithdrawal
|
4
|
+
# @!attribute id
|
5
|
+
# @return [Integer] This UsdWithdrawal's unique ID.
|
6
|
+
attr_accessor :id
|
7
|
+
|
8
|
+
# @!attribute created_at
|
9
|
+
# @return [Time] Time when this withdrawal was requested by you.
|
10
|
+
attr_accessor :created_at
|
11
|
+
|
12
|
+
# @!attribute amount
|
13
|
+
# @return [BigDecimal] Amount withdrawn from your bitex USD balance.
|
14
|
+
attr_accessor :amount
|
15
|
+
|
16
|
+
# @!attribute status
|
17
|
+
# Returns the status of this withdrawal.
|
18
|
+
# * :received Our engine is checking if you have enough funds.
|
19
|
+
# * :pending your withdrawal was accepted and is being processed.
|
20
|
+
# * :done your withdrawal was processed and it's on its way through
|
21
|
+
# the withdrawal channel you chose.
|
22
|
+
# * :cancelled your withdrawal could not be processed.
|
23
|
+
attr_accessor :status
|
24
|
+
|
25
|
+
# @!attribute reason
|
26
|
+
# Returns the reason for cancellation of this withdrawal, if any.
|
27
|
+
# * :not_cancelled
|
28
|
+
# * :insufficient_funds The instruction was received, but you didn't have enough
|
29
|
+
# funds available
|
30
|
+
# * :no_instructions We could not understand the instructions you provided.
|
31
|
+
# * :recipient_unknown we could not issue this withdrawal because you're
|
32
|
+
# not the receiving party.
|
33
|
+
attr_accessor :reason
|
34
|
+
|
35
|
+
# @visibility private
|
36
|
+
def self.from_json(json)
|
37
|
+
status_lookup = {
|
38
|
+
1 => :received,
|
39
|
+
2 => :pending,
|
40
|
+
3 => :done,
|
41
|
+
4 => :cancelled,
|
42
|
+
}
|
43
|
+
reason_lookup = {
|
44
|
+
0 => :not_cancelled,
|
45
|
+
1 => :insufficient_funds,
|
46
|
+
2 => :no_instructions,
|
47
|
+
3 => :recipient_unknown,
|
48
|
+
}
|
49
|
+
Api.from_json(new, json) do |thing|
|
50
|
+
thing.amount = BigDecimal.new(json[3].to_s)
|
51
|
+
thing.status = status_lookup[json[4]]
|
52
|
+
thing.reason = reason_lookup[json[5]]
|
53
|
+
end
|
54
|
+
end
|
55
|
+
end
|
56
|
+
end
|
data/spec/ask_spec.rb
ADDED
@@ -0,0 +1,24 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
describe Bitex::Ask do
|
4
|
+
let(:as_json) do
|
5
|
+
[2,12345678,946685400,1,100.00000000,100.00000000,1000.00000000,1]
|
6
|
+
end
|
7
|
+
|
8
|
+
it_behaves_like 'API class'
|
9
|
+
it_behaves_like 'API class with a specie'
|
10
|
+
it_behaves_like 'JSON deserializable order'
|
11
|
+
|
12
|
+
describe 'Api calls' do
|
13
|
+
before(:each){ Bitex.api_key = 'valid_api_key' }
|
14
|
+
it_behaves_like 'Order', 'asks'
|
15
|
+
end
|
16
|
+
|
17
|
+
{ quantity: 100.0, remaining_quantity: 100.0}.each do |field, value|
|
18
|
+
it "sets #{field} as BigDecimal" do
|
19
|
+
thing = subject.class.from_json(as_json).send(field)
|
20
|
+
thing.should be_a BigDecimal
|
21
|
+
thing.should == value
|
22
|
+
end
|
23
|
+
end
|
24
|
+
end
|
data/spec/bid_spec.rb
ADDED
@@ -0,0 +1,24 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
describe Bitex::Bid do
|
4
|
+
let(:as_json) do
|
5
|
+
[1,12345678,946685400,1,100.00000000,100.00000000,1000.00000000,1]
|
6
|
+
end
|
7
|
+
|
8
|
+
it_behaves_like 'API class'
|
9
|
+
it_behaves_like 'API class with a specie'
|
10
|
+
it_behaves_like 'JSON deserializable order'
|
11
|
+
|
12
|
+
describe 'Api calls' do
|
13
|
+
before(:each){ Bitex.api_key = 'valid_api_key' }
|
14
|
+
it_behaves_like 'Order', 'bids'
|
15
|
+
end
|
16
|
+
|
17
|
+
{ amount: 100.0, remaining_amount: 100.0}.each do |field, value|
|
18
|
+
it "sets #{field} as BigDecimal" do
|
19
|
+
thing = subject.class.from_json(as_json).send(field)
|
20
|
+
thing.should be_a BigDecimal
|
21
|
+
thing.should == value
|
22
|
+
end
|
23
|
+
end
|
24
|
+
end
|
data/spec/buy_spec.rb
ADDED
@@ -0,0 +1,11 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
describe Bitex::Buy do
|
4
|
+
let(:as_json) do
|
5
|
+
[4,12345678,946685400,1,100.50000000,201.0000000,0.05000000,2.00000000]
|
6
|
+
end
|
7
|
+
|
8
|
+
it_behaves_like 'API class'
|
9
|
+
it_behaves_like 'API class with a specie'
|
10
|
+
it_behaves_like 'JSON deserializable match'
|
11
|
+
end
|
@@ -0,0 +1 @@
|
|
1
|
+
[[1403668800, 570.0, 574.0, 570.0, 574.0, 1.06771929, 571.0, 570.917848641659],[1403683200, 560.0, 570.0, 560.0, 570.0, 1.14175147, 565.0, 565.753596095655],[1403697600, 560.0, 560.0, 560.0, 560.0, 0.0, 565.0, 0.0],[1403712000, 560.0, 560.0, 560.0, 560.0, 0.0, 565.0, 0.0]]
|
@@ -0,0 +1 @@
|
|
1
|
+
[1,12345678,946685400,1,100.00000000,100.00000000,1000.00000000,3]
|
@@ -0,0 +1 @@
|
|
1
|
+
[2,12345678,946685400,1,100.00000000,100.00000000,1000.00000000,1]
|
@@ -0,0 +1 @@
|
|
1
|
+
[1,12345678,946685400,1,100.00000000,100.00000000,1000.00000000,3]
|
@@ -0,0 +1 @@
|
|
1
|
+
[1,12345678,946685400,1,100.00000000,100.00000000,1000.00000000,1]
|
@@ -0,0 +1 @@
|
|
1
|
+
{"last":639.0,"high":659.0,"low":639.0,"vwap":647.195852839369,"volume":4.80579022,"bid":637.0,"ask":638.5}
|
@@ -0,0 +1 @@
|
|
1
|
+
{"bids":[[639.21,1.95],[637.0,0.47],[630.0,1.58]],"asks":[[642.4,0.4],[643.3,0.95],[644.3,0.25]]}
|
@@ -0,0 +1 @@
|
|
1
|
+
[[1,12345678,946685400,1,100.00000000,10.00000000,1000.00000000,1],[2,12345678,946685400,1,10.00000000,1.00000000,1100.00000000,1]]
|
@@ -0,0 +1 @@
|
|
1
|
+
{"usd_balance":10000.00,"usd_reserved":2000.00,"usd_available":8000.00,"btc_balance":20.00000000,"btc_reserved":5.00000000,"btc_available":15.00000000,"ltc_balance":250.00000000,"ltc_reserved":100.00000000,"ltc_available":150.00000000,"fee":0.5,"btc_deposit_address":"1XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX","ltc_deposit_address":"LXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX"}
|
@@ -0,0 +1 @@
|
|
1
|
+
[[1404259180, 1272, 650.0, 0.5], [1404259179, 1271, 639.0, 0.46948356]]
|
@@ -0,0 +1 @@
|
|
1
|
+
[[3,12345678,946685400,1,2.00000000,600.00000000,0.05000000,300.00000000],[4,12345678,946685400,1,2.00000000,600.00000000,0.05000000,300.00000000],[5,12345678,946685400,1,100.00000000],[6,12345678,946685400,1,100.00000000,1,0],[7,12345678,946685400,100.00000000,1,1,0],[8,12345678,946685400,100.00000000,1,0]]
|
data/spec/market_spec.rb
ADDED
@@ -0,0 +1,46 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
describe Bitex::MarketData do
|
4
|
+
|
5
|
+
{ btc: Bitex::BitcoinMarketData,
|
6
|
+
ltc: Bitex::LitecoinMarketData
|
7
|
+
}.each do |specie, market_data|
|
8
|
+
describe "when getting #{specie} market data" do
|
9
|
+
it "gets the ticker" do
|
10
|
+
stub_get("/#{specie}/market/ticker", 'market_ticker')
|
11
|
+
market_data.ticker.should == {
|
12
|
+
last: 639.0, high: 659.0, low: 639.0, vwap: 647.195852839369,
|
13
|
+
volume: 4.80579022, bid: 637.0, ask: 638.5
|
14
|
+
}
|
15
|
+
end
|
16
|
+
|
17
|
+
it "gets the order book" do
|
18
|
+
stub_get("/#{specie}/market/order_book", 'order_book')
|
19
|
+
market_data.order_book.should == {
|
20
|
+
bids: [[639.21,1.95],[637.0,0.47],[630.0,1.58]],
|
21
|
+
asks: [[642.4,0.4],[643.3,0.95],[644.3,0.25]]
|
22
|
+
}
|
23
|
+
end
|
24
|
+
|
25
|
+
it "gets the transactions" do
|
26
|
+
stub_get("/#{specie}/market/transactions", 'transactions')
|
27
|
+
market_data.transactions.should == [
|
28
|
+
[1404259180, 1272, 650.0, 0.5],
|
29
|
+
[1404259179, 1271, 639.0, 0.46948356]
|
30
|
+
]
|
31
|
+
end
|
32
|
+
|
33
|
+
%w(last_24_hours last_7_days last_30_days).each do |method|
|
34
|
+
it "gets aggregated data for #{method}" do
|
35
|
+
stub_get("/#{specie}/market/#{method}", 'aggregated_data')
|
36
|
+
market_data.send(method).should == [
|
37
|
+
[1403668800, 570.0, 574.0, 570.0, 574.0, 1.06771929, 571.0, 570.917848641659],
|
38
|
+
[1403683200, 560.0, 570.0, 560.0, 570.0, 1.14175147, 565.0, 565.753596095655],
|
39
|
+
[1403697600, 560.0, 560.0, 560.0, 560.0, 0.0, 565.0, 0.0],
|
40
|
+
[1403712000, 560.0, 560.0, 560.0, 560.0, 0.0, 565.0, 0.0]
|
41
|
+
]
|
42
|
+
end
|
43
|
+
end
|
44
|
+
end
|
45
|
+
end
|
46
|
+
end
|
data/spec/order_spec.rb
ADDED
@@ -0,0 +1,23 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
describe Bitex::Order do
|
4
|
+
before(:each) do
|
5
|
+
Bitex.api_key = 'valid_api_key'
|
6
|
+
end
|
7
|
+
|
8
|
+
it 'gets all orders' do
|
9
|
+
stub_private(:get, "/private/orders", 'orders')
|
10
|
+
bid, ask, empty = Bitex::Order.all
|
11
|
+
bid.should be_a Bitex::Bid
|
12
|
+
ask.should be_a Bitex::Ask
|
13
|
+
empty.should be_nil
|
14
|
+
end
|
15
|
+
|
16
|
+
it 'gets active orders' do
|
17
|
+
stub_private(:get, "/private/orders/active", 'orders')
|
18
|
+
bid, ask, empty = Bitex::Order.active
|
19
|
+
bid.should be_a Bitex::Bid
|
20
|
+
ask.should be_a Bitex::Ask
|
21
|
+
empty.should be_nil
|
22
|
+
end
|
23
|
+
end
|
@@ -0,0 +1,23 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
describe Bitex::Profile do
|
4
|
+
before(:each){ Bitex.api_key = 'valid_api_key' }
|
5
|
+
|
6
|
+
it 'gets your profile' do
|
7
|
+
stub_private(:get, '/private/profile', 'profile')
|
8
|
+
Bitex::Profile.get.should == {
|
9
|
+
usd_balance: 10000.0,
|
10
|
+
usd_reserved: 2000.0,
|
11
|
+
usd_available: 8000.0,
|
12
|
+
btc_balance: 20.0,
|
13
|
+
btc_reserved: 5.0,
|
14
|
+
btc_available: 15.0,
|
15
|
+
ltc_balance: 250.0,
|
16
|
+
ltc_reserved: 100.0,
|
17
|
+
ltc_available: 150.0,
|
18
|
+
fee: 0.5,
|
19
|
+
btc_deposit_address: "1XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX",
|
20
|
+
ltc_deposit_address: "LXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX"
|
21
|
+
}
|
22
|
+
end
|
23
|
+
end
|