bitex 0.1.2 → 0.1.3
Sign up to get free protection for your applications and to get access to all the features.
- data/lib/bitex.rb +1 -0
- data/lib/bitex/api.rb +22 -7
- data/lib/bitex/kyc_file.rb +18 -0
- data/lib/bitex/kyc_profile.rb +66 -0
- data/lib/bitex/rates.rb +11 -0
- data/lib/bitex/specie_deposit.rb +8 -0
- data/lib/bitex/specie_withdrawal.rb +25 -2
- data/lib/bitex/usd_deposit.rb +50 -0
- data/lib/bitex/usd_withdrawal.rb +49 -0
- data/lib/bitex/version.rb +1 -1
- data/spec/fixtures/file.jpg +0 -0
- data/spec/fixtures/kyc_file.json +1 -0
- data/spec/fixtures/kyc_files.json +1 -0
- data/spec/fixtures/kyc_profile.json +1 -0
- data/spec/fixtures/kyc_profiles.json +1 -0
- data/spec/fixtures/rates.json +1 -0
- data/spec/fixtures/specie_deposit.json +1 -0
- data/spec/fixtures/specie_deposits.json +1 -0
- data/spec/fixtures/specie_withdrawal.json +1 -0
- data/spec/fixtures/specie_withdrawals.json +1 -0
- data/spec/fixtures/usd_deposit.json +1 -0
- data/spec/fixtures/usd_deposits.json +1 -0
- data/spec/fixtures/usd_withdrawal.json +1 -0
- data/spec/fixtures/usd_withdrawals.json +1 -0
- data/spec/fixtures/user_transactions.json +1 -1
- data/spec/kyc_file_spec.rb +30 -0
- data/spec/kyc_profile_spec.rb +138 -0
- data/spec/rates_spec.rb +19 -0
- data/spec/specie_deposit_spec.rb +18 -0
- data/spec/specie_withdrawal_spec.rb +36 -2
- data/spec/support/request_stubs.rb +10 -2
- data/spec/usd_deposit_spec.rb +63 -1
- data/spec/usd_withdrawal_spec.rb +65 -1
- metadata +39 -2
data/lib/bitex.rb
CHANGED
data/lib/bitex/api.rb
CHANGED
@@ -1,17 +1,32 @@
|
|
1
1
|
module Bitex
|
2
2
|
class ApiError < StandardError; end
|
3
3
|
class Api
|
4
|
-
def self.curl(verb, path, options={})
|
4
|
+
def self.curl(verb, path, options={}, files={})
|
5
5
|
verb = verb.upcase.to_sym
|
6
6
|
query = verb == :GET ? "?#{options.to_query}" : ''
|
7
|
+
prefix = Bitex.sandbox ? 'sandbox.' : ''
|
7
8
|
|
8
|
-
curl = Curl::Easy.new("https
|
9
|
-
|
10
|
-
|
9
|
+
curl = Curl::Easy.new("https://#{prefix}bitex.la/api-v1/rest#{path}#{query}")
|
10
|
+
if verb == :POST
|
11
|
+
fields = []
|
12
|
+
unless files.empty?
|
13
|
+
fields += files.collect{|k, v| Curl::PostField.file(k.to_s, v) }
|
14
|
+
curl.multipart_form_post = true
|
15
|
+
end
|
16
|
+
fields += options.collect do |k,v|
|
17
|
+
next unless v
|
18
|
+
Curl::PostField.content(k.to_s, v)
|
19
|
+
end.compact
|
20
|
+
curl.send("http_#{verb.downcase}", *fields)
|
21
|
+
else
|
22
|
+
curl.put_data = options.to_query if verb == :PUT
|
23
|
+
curl.http(verb)
|
24
|
+
end
|
11
25
|
code = curl.response_code
|
12
26
|
|
13
27
|
unless [200, 201, 202].include?(code)
|
14
|
-
raise ApiError.new("Got #{code} fetching #{path} with
|
28
|
+
raise ApiError.new("Got #{code} fetching #{path} with
|
29
|
+
#{options}\n\n#{curl.head}\n\n#{curl.body}")
|
15
30
|
end
|
16
31
|
|
17
32
|
return curl
|
@@ -21,11 +36,11 @@ module Bitex
|
|
21
36
|
JSON.parse(curl(:GET, path).body)
|
22
37
|
end
|
23
38
|
|
24
|
-
def self.private(verb, path, options={})
|
39
|
+
def self.private(verb, path, options={}, files={})
|
25
40
|
if Bitex.api_key.nil?
|
26
41
|
raise StandardError.new("No api_key available to make private key calls")
|
27
42
|
end
|
28
|
-
JSON.parse(curl(verb, path, options.merge(api_key: Bitex.api_key)).body)
|
43
|
+
JSON.parse(curl(verb, path, options.merge(api_key: Bitex.api_key), files).body)
|
29
44
|
end
|
30
45
|
|
31
46
|
# Deserialize a single object from a json representation as specified on the
|
@@ -0,0 +1,18 @@
|
|
1
|
+
module Bitex
|
2
|
+
class KycFile
|
3
|
+
attr_accessor :id, :kyc_profile_id, :url, :file_name,
|
4
|
+
:content_type, :file_size
|
5
|
+
|
6
|
+
def self.from_json(json)
|
7
|
+
t = new
|
8
|
+
t.id, t.kyc_profile_id, t.url, t.file_name, t.content_type, t.file_size =
|
9
|
+
json
|
10
|
+
t
|
11
|
+
end
|
12
|
+
|
13
|
+
def self.all
|
14
|
+
Api.private(:get, "/private/kyc_files").collect{|x| from_json(x) }
|
15
|
+
end
|
16
|
+
end
|
17
|
+
end
|
18
|
+
|
@@ -0,0 +1,66 @@
|
|
1
|
+
module Bitex
|
2
|
+
class KycProfile
|
3
|
+
|
4
|
+
attr_accessor :id, :first_name, :last_name, :personal_id_number,
|
5
|
+
:personal_id_issuer, :personal_id_type, :tax_id, :birth_date,
|
6
|
+
:nationality, :gender, :occupation, :home_address, :work_address,
|
7
|
+
:phone_numbers, :legal_entity, :politically_exposed_person,
|
8
|
+
:usage_tier, :accepted_usage_tier
|
9
|
+
|
10
|
+
# @visibility private
|
11
|
+
def self.from_json(json)
|
12
|
+
new.tap do |thing|
|
13
|
+
thing.id = json[0]
|
14
|
+
thing.first_name = json[1]
|
15
|
+
thing.last_name = json[2]
|
16
|
+
thing.personal_id_number = json[3]
|
17
|
+
thing.personal_id_issuer = json[4]
|
18
|
+
thing.personal_id_type = json[5]
|
19
|
+
thing.tax_id = json[6]
|
20
|
+
thing.birth_date = Time.at(json[7])
|
21
|
+
thing.nationality = json[8]
|
22
|
+
thing.gender = json[9]
|
23
|
+
thing.occupation = json[10]
|
24
|
+
thing.home_address = json[11]
|
25
|
+
thing.work_address = json[12]
|
26
|
+
thing.phone_numbers = json[13]
|
27
|
+
thing.legal_entity = json[14]
|
28
|
+
thing.politically_exposed_person = json[15]
|
29
|
+
thing.usage_tier = json[16]
|
30
|
+
thing.accepted_usage_tier = json[17]
|
31
|
+
end
|
32
|
+
end
|
33
|
+
|
34
|
+
def self.create!(params)
|
35
|
+
params = params.dup
|
36
|
+
.merge(birth_date: params[:birth_date].strftime('%Y/%m/%d'))
|
37
|
+
from_json(Api.private(:post, "/private/kyc_profiles", params))
|
38
|
+
end
|
39
|
+
|
40
|
+
def self.find(id)
|
41
|
+
from_json(Api.private(:get, "/private/kyc_profiles/#{id}"))
|
42
|
+
end
|
43
|
+
|
44
|
+
def self.all
|
45
|
+
Api.private(:get, "/private/kyc_profiles").collect{|x| from_json(x) }
|
46
|
+
end
|
47
|
+
|
48
|
+
def update!(params)
|
49
|
+
params = params.dup
|
50
|
+
.merge(birth_date: params[:birth_date].strftime('%Y/%m/%d'))
|
51
|
+
self.class.from_json(Api.private(:put, "/private/kyc_profiles/#{id}", params))
|
52
|
+
end
|
53
|
+
|
54
|
+
def add_kyc_file!(path)
|
55
|
+
response = Api.private(:post, "/private/kyc_profiles/#{id}/kyc_files",
|
56
|
+
{}, {document: path})
|
57
|
+
KycFile.from_json(response)
|
58
|
+
end
|
59
|
+
|
60
|
+
def kyc_files
|
61
|
+
Api.private(:get, "/private/kyc_profiles/#{id}/kyc_files")
|
62
|
+
.collect{|x| KycFile.from_json(x)}
|
63
|
+
end
|
64
|
+
end
|
65
|
+
end
|
66
|
+
|
data/lib/bitex/rates.rb
ADDED
@@ -0,0 +1,11 @@
|
|
1
|
+
module Bitex
|
2
|
+
# Exchange rates for cash in and cash out
|
3
|
+
class Rates
|
4
|
+
# The rates tree conveniently formatted as a ruby Hash with
|
5
|
+
# symbolized keys.
|
6
|
+
# @see https://bitex.la/developers#rates
|
7
|
+
def self.all
|
8
|
+
Api.private(:get, "/private/rates").deep_symbolize_keys
|
9
|
+
end
|
10
|
+
end
|
11
|
+
end
|
data/lib/bitex/specie_deposit.rb
CHANGED
@@ -23,5 +23,13 @@ module Bitex
|
|
23
23
|
thing.quantity = BigDecimal.new(json[4].to_s)
|
24
24
|
end
|
25
25
|
end
|
26
|
+
|
27
|
+
def self.find(specie, id)
|
28
|
+
from_json(Api.private(:get, "/private/#{specie}/deposits/#{id}"))
|
29
|
+
end
|
30
|
+
|
31
|
+
def self.all(specie)
|
32
|
+
Api.private(:get, "/private/#{specie}/deposits").collect{|x| from_json(x) }
|
33
|
+
end
|
26
34
|
end
|
27
35
|
end
|
@@ -28,8 +28,8 @@ module Bitex
|
|
28
28
|
# @!attribute reason
|
29
29
|
# Returns the reason for cancellation of this withdrawal, if any.
|
30
30
|
# * :not_cancelled
|
31
|
-
# * :insufficient_funds The instruction was received, but you didn't have
|
32
|
-
# funds available
|
31
|
+
# * :insufficient_funds The instruction was received, but you didn't have
|
32
|
+
# enough funds available
|
33
33
|
# * :destination_invalid The destination address was invalid.
|
34
34
|
attr_accessor :reason
|
35
35
|
|
@@ -40,6 +40,10 @@ module Bitex
|
|
40
40
|
# @!attribute label
|
41
41
|
# @return [String] A custom label you gave to this address.
|
42
42
|
attr_accessor :label
|
43
|
+
|
44
|
+
# @!attribute kyc_profile_id
|
45
|
+
# @return [Integer] Kyc profile id for which this request was made.
|
46
|
+
attr_accessor :kyc_profile_id
|
43
47
|
|
44
48
|
# @visibility private
|
45
49
|
def self.from_json(json)
|
@@ -60,7 +64,26 @@ module Bitex
|
|
60
64
|
thing.reason = reason_lookup[json[6]]
|
61
65
|
thing.to_address = json[7]
|
62
66
|
thing.label = json[8]
|
67
|
+
thing.kyc_profile_id = json[9]
|
63
68
|
end
|
64
69
|
end
|
70
|
+
|
71
|
+
def self.create!(specie, address, amount, label, kyc_profile_id=nil)
|
72
|
+
from_json(Api.private(:post, "/private/#{specie}/withdrawals", {
|
73
|
+
address: address,
|
74
|
+
amount: amount,
|
75
|
+
label: label,
|
76
|
+
kyc_profile_id: kyc_profile_id
|
77
|
+
}))
|
78
|
+
end
|
79
|
+
|
80
|
+
def self.find(specie, id)
|
81
|
+
from_json(Api.private(:get, "/private/#{specie}/withdrawals/#{id}"))
|
82
|
+
end
|
83
|
+
|
84
|
+
def self.all(specie)
|
85
|
+
Api.private(:get, "/private/#{specie}/withdrawals")
|
86
|
+
.collect{|x| from_json(x) }
|
87
|
+
end
|
65
88
|
end
|
66
89
|
end
|
data/lib/bitex/usd_deposit.rb
CHANGED
@@ -41,6 +41,31 @@ module Bitex
|
|
41
41
|
# sender.
|
42
42
|
# * :other we'll contact you regarding this deposit.
|
43
43
|
attr_accessor :reason
|
44
|
+
|
45
|
+
# @!attribute country
|
46
|
+
# Country of origin for this deposit.
|
47
|
+
attr_accessor :country
|
48
|
+
|
49
|
+
# @!attribute currency
|
50
|
+
# Local currency for the country.
|
51
|
+
attr_accessor :currency
|
52
|
+
|
53
|
+
# @!attribute kyc_profile_id
|
54
|
+
# KYC profile on whose behalf this deposit is being created.
|
55
|
+
attr_accessor :kyc_profile_id
|
56
|
+
|
57
|
+
# @!attribute request_details
|
58
|
+
# Details for our account officers about this deposit.
|
59
|
+
attr_accessor :request_details
|
60
|
+
|
61
|
+
# @!attribute astropay_response_body
|
62
|
+
# Response from astropay if selected as the deposit method.
|
63
|
+
# The 'url' field should be the astropay payment url for this deposit.
|
64
|
+
attr_accessor :astropay_response_body
|
65
|
+
|
66
|
+
# @!attribute third_party_reference
|
67
|
+
# This deposit's id as issued by the third party payment processor, if any.
|
68
|
+
attr_accessor :third_party_reference
|
44
69
|
|
45
70
|
# @visibility private
|
46
71
|
def self.from_json(json)
|
@@ -65,7 +90,32 @@ module Bitex
|
|
65
90
|
thing.deposit_method = deposit_method_lookup[json[5]]
|
66
91
|
thing.status = status_lookup[json[6]]
|
67
92
|
thing.reason = reason_lookup[json[7]]
|
93
|
+
thing.country = json[8]
|
94
|
+
thing.currency = json[9]
|
95
|
+
thing.kyc_profile_id = json[10]
|
96
|
+
thing.request_details = json[11]
|
97
|
+
thing.astropay_response_body = json[12]
|
98
|
+
thing.third_party_reference = json[13]
|
68
99
|
end
|
69
100
|
end
|
101
|
+
|
102
|
+
def self.create!(country, amount, currency, method, details, profile=nil)
|
103
|
+
from_json(Api.private(:post, "/private/usd/deposits", {
|
104
|
+
country: country,
|
105
|
+
amount: amount,
|
106
|
+
currency: currency,
|
107
|
+
deposit_method: method,
|
108
|
+
request_details: details,
|
109
|
+
kyc_profile_id: profile,
|
110
|
+
}))
|
111
|
+
end
|
112
|
+
|
113
|
+
def self.find(id)
|
114
|
+
from_json(Api.private(:get, "/private/usd/deposits/#{id}"))
|
115
|
+
end
|
116
|
+
|
117
|
+
def self.all
|
118
|
+
Api.private(:get, "/private/usd/deposits").collect{|x| from_json(x) }
|
119
|
+
end
|
70
120
|
end
|
71
121
|
end
|
data/lib/bitex/usd_withdrawal.rb
CHANGED
@@ -32,6 +32,29 @@ module Bitex
|
|
32
32
|
# not the receiving party.
|
33
33
|
attr_accessor :reason
|
34
34
|
|
35
|
+
# @!attribute countr
|
36
|
+
# Returns ISO country code.
|
37
|
+
attr_accessor :country
|
38
|
+
|
39
|
+
# @!attribute currency
|
40
|
+
# Currency for this withdrawal.
|
41
|
+
attr_accessor :currency
|
42
|
+
|
43
|
+
# @!attribute payment_method
|
44
|
+
# Returns the payment method for this withdrawal.
|
45
|
+
# * :international_bank International bank transfer
|
46
|
+
# * :bb we'll contact you regarding this withdrawal.
|
47
|
+
attr_accessor :payment_method
|
48
|
+
|
49
|
+
# @!attribute label
|
50
|
+
attr_accessor :label
|
51
|
+
|
52
|
+
# @!attribute kyc_profile_id
|
53
|
+
attr_accessor :kyc_profile_id
|
54
|
+
|
55
|
+
# @!attribute instructions
|
56
|
+
attr_accessor :instructions
|
57
|
+
|
35
58
|
# @visibility private
|
36
59
|
def self.from_json(json)
|
37
60
|
status_lookup = {
|
@@ -50,7 +73,33 @@ module Bitex
|
|
50
73
|
thing.amount = BigDecimal.new(json[3].to_s)
|
51
74
|
thing.status = status_lookup[json[4]]
|
52
75
|
thing.reason = reason_lookup[json[5]]
|
76
|
+
thing.country = json[6]
|
77
|
+
thing.currency = json[7]
|
78
|
+
thing.payment_method = json[8]
|
79
|
+
thing.label = json[9]
|
80
|
+
thing.kyc_profile_id = json[10]
|
81
|
+
thing.instructions = json[11]
|
53
82
|
end
|
54
83
|
end
|
84
|
+
|
85
|
+
def self.create!(country, amount, currency, method, instructions, label, profile=nil)
|
86
|
+
from_json(Api.private(:post, "/private/usd/withdrawals", {
|
87
|
+
country: country,
|
88
|
+
amount: amount,
|
89
|
+
currency: currency,
|
90
|
+
payment_method: method,
|
91
|
+
instructions: instructions,
|
92
|
+
label: label,
|
93
|
+
kyc_profile_id: profile,
|
94
|
+
}))
|
95
|
+
end
|
96
|
+
|
97
|
+
def self.find(id)
|
98
|
+
from_json(Api.private(:get, "/private/usd/withdrawals/#{id}"))
|
99
|
+
end
|
100
|
+
|
101
|
+
def self.all
|
102
|
+
Api.private(:get, "/private/usd/withdrawals").collect{|x| from_json(x) }
|
103
|
+
end
|
55
104
|
end
|
56
105
|
end
|
data/lib/bitex/version.rb
CHANGED
Binary file
|
@@ -0,0 +1 @@
|
|
1
|
+
[1,1,"http://..","test.jpg","application/jpeg",10000]
|
@@ -0,0 +1 @@
|
|
1
|
+
[[1,1,"http://..","test.jpg","application/jpeg",10000]]
|
@@ -0,0 +1 @@
|
|
1
|
+
[ 1, "Billy", "Bob", "33222111N", "AR", "passport", "4332221115", 946685400, "brazilian", "male", "Singer", "Argentina, Buenos Aires, etc", "Argentina, La Plata", "+51 555 120921", true, true, "micro", "micro" ]
|
@@ -0,0 +1 @@
|
|
1
|
+
[[ 1, "Billy", "Bob", "33222111N", "AR", "passport", "4332221115", 946685400, "brazilian", "male", "Singer", "Argentina, Buenos Aires, etc", "Argentina, La Plata", "+51 555 120921", true, true, "micro", "micro" ]]
|
@@ -0,0 +1 @@
|
|
1
|
+
{"AR":{"astropay":{"USDARS":[8.7592,null,1412969688]},"reference":{"USDARS":[null,null,0]}},"BR":{"astropay":{"USDBRL":[2.3779,null,1412969689]}},"CL":{"astropay":{"USDCLP":[611.673,null,1412969691]}},"CO":{"astropay":{"USDCOP":[2006.368,null,1412969693]}},"PE":{"astropay":{"USDPEN":[2.9807,null,1412969696]}},"UY":{"astropay":{"USDUYU":[24.751,null,1412969698]}},"MX":{"astropay":{"USDMXN":[13.7471,null,1412969700]}}}
|
@@ -0,0 +1 @@
|
|
1
|
+
[5,12345678,946685400,1,100.00000000]
|
@@ -0,0 +1 @@
|
|
1
|
+
[[5,12345678,946685400,1,100.00000000]]
|
@@ -0,0 +1 @@
|
|
1
|
+
[6,12345678,946685400,1,100.00000000,1,0,"helloworld","label",1]
|
@@ -0,0 +1 @@
|
|
1
|
+
[[6,12345678,946685400,1,100.00000000,1,0,"helloworld","label",1]]
|
@@ -0,0 +1 @@
|
|
1
|
+
[7,12345678,946685400,110.00000000,100.00000000,1,1,0,"UY","UYU",1,"bank of new york mellon",{"status":"OK","link":"https://astr.com"},"ABABABABA"]
|
@@ -0,0 +1 @@
|
|
1
|
+
[[7,12345678,946685400,110.00000000,100.00000000,1,1,0,"UY","UYU",1,"bank of new york mellon",{"status":"OK","link":"https://astr.com"},"ABABABABA"]]
|
@@ -0,0 +1 @@
|
|
1
|
+
[8,12345678,946685400,100.00000000,1,0,"UY","UYU", "bb", "billy bob", 1, "las instrucciones"]
|
@@ -0,0 +1 @@
|
|
1
|
+
[[8,12345678,946685400,100.00000000,1,0,"UY","UYU", "bb", "billy bob", 1, "las instrucciones"]]
|
@@ -1 +1 @@
|
|
1
|
-
[[3,12345678,946685400,1,2.00000000,600.00000000,0.05000000,300.00000000,123],[4,12345678,946685400,1,2.00000000,600.00000000,0.05000000,300.00000000,456],[5,12345678,946685400,1,100.00000000],[6,12345678,946685400,1,100.00000000,1,0,"helloworld","label"],[7,12345678,946685400,110.00000000,100.00000000,1,1,0],[8,12345678,946685400,100.00000000,1,0]]
|
1
|
+
[[3,12345678,946685400,1,2.00000000,600.00000000,0.05000000,300.00000000,123],[4,12345678,946685400,1,2.00000000,600.00000000,0.05000000,300.00000000,456],[5,12345678,946685400,1,100.00000000],[6,12345678,946685400,1,100.00000000,1,0,"helloworld","label",1],[7,12345678,946685400,110.00000000,100.00000000,1,1,0,"UY","UYU",1,"bank of new york mellon","{\"status\":\"OK\",\"link\":\"https://astr.com\"}","ABABABABA"],[8,12345678,946685400,100.00000000,1,0,"UY","UYU", "bb", "billy bob", 1, "las instrucciones"]]
|
@@ -0,0 +1,30 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
describe Bitex::KycFile do
|
4
|
+
before :each do
|
5
|
+
Bitex.api_key = 'valid_api_key'
|
6
|
+
end
|
7
|
+
|
8
|
+
let(:as_json) do
|
9
|
+
[1,2,'http://foo.bar.example/photo.jpg', 'photo.jpg', 'application/jpeg', 10000]
|
10
|
+
end
|
11
|
+
|
12
|
+
{ id: 1,
|
13
|
+
kyc_profile_id: 2,
|
14
|
+
url:'http://foo.bar.example/photo.jpg',
|
15
|
+
file_name: 'photo.jpg',
|
16
|
+
content_type: 'application/jpeg',
|
17
|
+
file_size: 10000
|
18
|
+
}.each do |field, value|
|
19
|
+
it "sets #{field}" do
|
20
|
+
subject.class.from_json(as_json).send(field).should == value
|
21
|
+
end
|
22
|
+
end
|
23
|
+
|
24
|
+
it 'lists all kyc profiles' do
|
25
|
+
stub_private(:get, '/private/kyc_files', 'kyc_files')
|
26
|
+
kyc_files = Bitex::KycFile.all
|
27
|
+
kyc_files.should be_an Array
|
28
|
+
kyc_files.first.should be_an Bitex::KycFile
|
29
|
+
end
|
30
|
+
end
|
@@ -0,0 +1,138 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
describe Bitex::KycProfile do
|
4
|
+
before :each do
|
5
|
+
Bitex.api_key = 'valid_api_key'
|
6
|
+
end
|
7
|
+
|
8
|
+
let(:params_for_create_or_update) do
|
9
|
+
{ first_name: 'Billy',
|
10
|
+
last_name: 'Bob',
|
11
|
+
personal_id_number: '33222111N',
|
12
|
+
personal_id_issuer: 'AR',
|
13
|
+
personal_id_type: 'passport',
|
14
|
+
tax_id: '4332221115',
|
15
|
+
birth_date: Time.at(946685400),
|
16
|
+
nationality: 'brazilian',
|
17
|
+
gender: 'male',
|
18
|
+
occupation: 'Singer',
|
19
|
+
home_address: 'Argentina, Buenos Aires, etc',
|
20
|
+
work_address: 'Argentina, La Plata',
|
21
|
+
phone_numbers: '+51 555 120921',
|
22
|
+
legal_entity: true,
|
23
|
+
politically_exposed_person: true,
|
24
|
+
usage_tier: 'micro'
|
25
|
+
}
|
26
|
+
end
|
27
|
+
|
28
|
+
let(:rest_params_for_create_or_update) do
|
29
|
+
{ first_name: 'Billy',
|
30
|
+
last_name: 'Bob',
|
31
|
+
personal_id_number: '33222111N',
|
32
|
+
personal_id_issuer: 'AR',
|
33
|
+
personal_id_type: 'passport',
|
34
|
+
tax_id: '4332221115',
|
35
|
+
birth_date: '1999/12/31',
|
36
|
+
nationality: 'brazilian',
|
37
|
+
gender: 'male',
|
38
|
+
occupation: 'Singer',
|
39
|
+
home_address: 'Argentina, Buenos Aires, etc',
|
40
|
+
work_address: 'Argentina, La Plata',
|
41
|
+
phone_numbers: '+51 555 120921',
|
42
|
+
legal_entity: true,
|
43
|
+
politically_exposed_person: true,
|
44
|
+
usage_tier: 'micro',
|
45
|
+
}
|
46
|
+
end
|
47
|
+
|
48
|
+
let(:as_json) do
|
49
|
+
[ 1, # Kyc Profile id.
|
50
|
+
'Billy', # Name
|
51
|
+
'Bob', # Last Name.
|
52
|
+
'33222111N', # Personal ID Number
|
53
|
+
'AR', # ISO country code for the issuer of this ID.
|
54
|
+
'passport', # Type of ID
|
55
|
+
'4332221115', # Tax Id
|
56
|
+
946685400, # Birth date as unix timestamp.
|
57
|
+
'brazilian', # Nationality
|
58
|
+
'male', # Gender
|
59
|
+
'Singer', # Occupation
|
60
|
+
'Argentina, Buenos Aires, etc', # Home address.
|
61
|
+
'Argentina, La Plata', # Work address.
|
62
|
+
'+51 555 120921', # Phone numbers.
|
63
|
+
true, # Is legal entity.
|
64
|
+
true, # Is politically exposed.
|
65
|
+
'micro', # Requested usage tier.
|
66
|
+
'micro', # Current usage tier as accepted by
|
67
|
+
# our compliance officers.
|
68
|
+
]
|
69
|
+
end
|
70
|
+
|
71
|
+
{ id: 1,
|
72
|
+
first_name: 'Billy',
|
73
|
+
last_name: 'Bob',
|
74
|
+
personal_id_number: '33222111N',
|
75
|
+
personal_id_issuer: 'AR',
|
76
|
+
personal_id_type: 'passport',
|
77
|
+
tax_id: '4332221115',
|
78
|
+
birth_date: Time.at(946685400),
|
79
|
+
nationality: 'brazilian',
|
80
|
+
gender: 'male',
|
81
|
+
occupation: 'Singer',
|
82
|
+
home_address: 'Argentina, Buenos Aires, etc',
|
83
|
+
work_address: 'Argentina, La Plata',
|
84
|
+
phone_numbers: '+51 555 120921',
|
85
|
+
legal_entity: true,
|
86
|
+
politically_exposed_person: true,
|
87
|
+
usage_tier: 'micro',
|
88
|
+
accepted_usage_tier: 'micro',
|
89
|
+
}.each do |field, value|
|
90
|
+
it "sets #{field}" do
|
91
|
+
subject.class.from_json(as_json).send(field).should == value
|
92
|
+
end
|
93
|
+
end
|
94
|
+
|
95
|
+
it 'creates a new kyc profile' do
|
96
|
+
stub_private(:post, "/private/kyc_profiles", 'kyc_profile',
|
97
|
+
rest_params_for_create_or_update)
|
98
|
+
Bitex::KycProfile.create!(params_for_create_or_update)
|
99
|
+
.should be_a Bitex::KycProfile
|
100
|
+
end
|
101
|
+
|
102
|
+
it 'finds a single kyc profile' do
|
103
|
+
stub_private(:get, '/private/kyc_profiles/1', 'kyc_profile')
|
104
|
+
kyc_profile = Bitex::KycProfile.find(1)
|
105
|
+
kyc_profile.should be_a Bitex::KycProfile
|
106
|
+
end
|
107
|
+
|
108
|
+
it 'lists all kyc profiles' do
|
109
|
+
stub_private(:get, '/private/kyc_profiles', 'kyc_profiles')
|
110
|
+
kyc_profiles = Bitex::KycProfile.all
|
111
|
+
kyc_profiles.should be_an Array
|
112
|
+
kyc_profiles.first.should be_an Bitex::KycProfile
|
113
|
+
end
|
114
|
+
|
115
|
+
it 'updates a kyc profile' do
|
116
|
+
stub_private(:put, "/private/kyc_profiles/1", 'kyc_profile',
|
117
|
+
rest_params_for_create_or_update)
|
118
|
+
kyc_profile = Bitex::KycProfile.from_json(as_json)
|
119
|
+
kyc_profile.update!(params_for_create_or_update)
|
120
|
+
end
|
121
|
+
|
122
|
+
it 'creates a kyc file' do
|
123
|
+
path = File.expand_path('../fixtures/file.jpg', __FILE__)
|
124
|
+
stub_private(:post, '/private/kyc_profiles/1/kyc_files', 'kyc_file',
|
125
|
+
{document: path})
|
126
|
+
kyc_profile = Bitex::KycProfile.from_json(as_json)
|
127
|
+
kyc_file = kyc_profile.add_kyc_file!(path)
|
128
|
+
kyc_file.should be_a Bitex::KycFile
|
129
|
+
end
|
130
|
+
|
131
|
+
it 'lists a profiles kyc files' do
|
132
|
+
stub_private(:get, '/private/kyc_profiles/1/kyc_files', 'kyc_files')
|
133
|
+
kyc_profile = Bitex::KycProfile.from_json(as_json)
|
134
|
+
kyc_files = kyc_profile.kyc_files
|
135
|
+
kyc_files.should be_an Array
|
136
|
+
kyc_files.first.should be_a Bitex::KycFile
|
137
|
+
end
|
138
|
+
end
|
data/spec/rates_spec.rb
ADDED
@@ -0,0 +1,19 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
describe Bitex::Rates do
|
4
|
+
it "gets all rates" do
|
5
|
+
Bitex.api_key = 'valid_api_key'
|
6
|
+
stub_private(:get, "/private/rates", 'rates')
|
7
|
+
Bitex::Rates.all.should == {
|
8
|
+
AR: {
|
9
|
+
astropay: {USDARS: [8.7592,nil,1412969688]},
|
10
|
+
reference:{USDARS: [nil,nil,0]}},
|
11
|
+
BR: {astropay:{USDBRL: [2.3779,nil,1412969689]}},
|
12
|
+
CL: {astropay:{USDCLP: [611.673,nil,1412969691]}},
|
13
|
+
CO: {astropay:{USDCOP: [2006.368,nil,1412969693]}},
|
14
|
+
PE: {astropay:{USDPEN: [2.9807,nil,1412969696]}},
|
15
|
+
UY: {astropay:{USDUYU: [24.751,nil,1412969698]}},
|
16
|
+
MX: {astropay:{USDMXN: [13.7471,nil,1412969700]}}
|
17
|
+
}
|
18
|
+
end
|
19
|
+
end
|
data/spec/specie_deposit_spec.rb
CHANGED
@@ -1,6 +1,10 @@
|
|
1
1
|
require 'spec_helper'
|
2
2
|
|
3
3
|
describe Bitex::SpecieDeposit do
|
4
|
+
before :each do
|
5
|
+
Bitex.api_key = 'valid_api_key'
|
6
|
+
end
|
7
|
+
|
4
8
|
let(:as_json) do
|
5
9
|
[5,12345678,946685400,1,100.50000000]
|
6
10
|
end
|
@@ -13,4 +17,18 @@ describe Bitex::SpecieDeposit do
|
|
13
17
|
thing.should be_a BigDecimal
|
14
18
|
thing.should == 100.5
|
15
19
|
end
|
20
|
+
|
21
|
+
it 'finds a single btc deposit' do
|
22
|
+
stub_private(:get, '/private/btc/deposits/1', 'specie_deposit')
|
23
|
+
deposit = Bitex::SpecieDeposit.find(:btc, 1)
|
24
|
+
deposit.should be_a Bitex::SpecieDeposit
|
25
|
+
deposit.specie.should == :btc
|
26
|
+
end
|
27
|
+
|
28
|
+
it 'lists all btc deposits' do
|
29
|
+
stub_private(:get, '/private/btc/deposits', 'specie_deposits')
|
30
|
+
deposits = Bitex::SpecieDeposit.all(:btc)
|
31
|
+
deposits.should be_an Array
|
32
|
+
deposits.first.should be_an Bitex::SpecieDeposit
|
33
|
+
end
|
16
34
|
end
|
@@ -1,8 +1,12 @@
|
|
1
1
|
require 'spec_helper'
|
2
2
|
|
3
3
|
describe Bitex::SpecieWithdrawal do
|
4
|
+
before :each do
|
5
|
+
Bitex.api_key = 'valid_api_key'
|
6
|
+
end
|
7
|
+
|
4
8
|
let(:as_json) do
|
5
|
-
[6,12345678,946685400,1,100.00000000,1,0, '1helloworld', 'label']
|
9
|
+
[6,12345678,946685400,1,100.00000000,1,0, '1helloworld', 'label', 1]
|
6
10
|
end
|
7
11
|
|
8
12
|
it_behaves_like 'API class'
|
@@ -40,8 +44,38 @@ describe Bitex::SpecieWithdrawal do
|
|
40
44
|
thing.should == 'label'
|
41
45
|
end
|
42
46
|
|
43
|
-
it "sets
|
47
|
+
it "sets to_address" do
|
44
48
|
thing = Bitex::SpecieWithdrawal.from_json(as_json).to_address
|
45
49
|
thing.should == "1helloworld"
|
46
50
|
end
|
51
|
+
|
52
|
+
it "sets the kyc profile id" do
|
53
|
+
Bitex::SpecieWithdrawal.from_json(as_json).kyc_profile_id.should == 1
|
54
|
+
end
|
55
|
+
|
56
|
+
it 'creates a new withdrawal' do
|
57
|
+
stub_private(:post, "/private/ltc/withdrawals", 'specie_withdrawal', {
|
58
|
+
address: '1ADDR',
|
59
|
+
amount: 110,
|
60
|
+
label: 'thelabel',
|
61
|
+
})
|
62
|
+
deposit = Bitex::SpecieWithdrawal.create!(:ltc, '1ADDR', 110, 'thelabel')
|
63
|
+
deposit.should be_a Bitex::SpecieWithdrawal
|
64
|
+
deposit.status.should == :received
|
65
|
+
end
|
66
|
+
|
67
|
+
it 'finds a single usd deposit' do
|
68
|
+
stub_private(:get, '/private/btc/withdrawals/1', 'specie_withdrawal')
|
69
|
+
deposit = Bitex::SpecieWithdrawal.find(:btc, 1)
|
70
|
+
deposit.should be_a Bitex::SpecieWithdrawal
|
71
|
+
deposit.status.should == :received
|
72
|
+
end
|
73
|
+
|
74
|
+
it 'lists all usd deposits' do
|
75
|
+
stub_private(:get, '/private/btc/withdrawals', 'specie_withdrawals')
|
76
|
+
deposits = Bitex::SpecieWithdrawal.all(:btc)
|
77
|
+
deposits.should be_an Array
|
78
|
+
deposits.first.should be_an Bitex::SpecieWithdrawal
|
79
|
+
deposits.first.status.should == :received
|
80
|
+
end
|
47
81
|
end
|
@@ -1,15 +1,23 @@
|
|
1
|
+
require 'open-uri'
|
1
2
|
module RequestStubs
|
2
3
|
def stub_get(path, fixture)
|
3
4
|
stub_api(:get, path, fixture, {})
|
4
5
|
end
|
5
6
|
|
6
7
|
def stub_private(method, path, fixture, options = {})
|
7
|
-
|
8
|
+
options[:api_key] = 'valid_api_key'
|
9
|
+
stub_api(method, path, fixture, options)
|
8
10
|
end
|
9
11
|
|
10
12
|
def stub_api(method, path, fixture, options)
|
11
13
|
fixture_path = File.expand_path("../../fixtures/#{fixture}.json", __FILE__)
|
12
|
-
with = method == :get
|
14
|
+
with = if method == :get
|
15
|
+
{query: options}
|
16
|
+
elsif method == :put
|
17
|
+
{body: options.to_query }
|
18
|
+
else
|
19
|
+
{body: options.collect{|k,v| "#{k}=#{CGI.escape(v.to_s).gsub('+','%20')}"}* '&' }
|
20
|
+
end
|
13
21
|
stub_request(method, "https://bitex.la/api-v1/rest#{path}")
|
14
22
|
.with(with)
|
15
23
|
.to_return(status: 200, body: File.read(fixture_path))
|
data/spec/usd_deposit_spec.rb
CHANGED
@@ -1,8 +1,14 @@
|
|
1
1
|
require 'spec_helper'
|
2
2
|
|
3
3
|
describe Bitex::UsdDeposit do
|
4
|
+
before :each do
|
5
|
+
Bitex.api_key = 'valid_api_key'
|
6
|
+
end
|
7
|
+
|
4
8
|
let(:as_json) do
|
5
|
-
[7,12345678,946685400,110.0000000, 100.00000000,1,1,0
|
9
|
+
[ 7,12345678,946685400,110.0000000, 100.00000000,1,1,0,
|
10
|
+
'UY', 'UYU', 1, 'bank of new york mellon',
|
11
|
+
{"status" => "OK","link" => "https://astr.com"}, 'ABABABABA']
|
6
12
|
end
|
7
13
|
|
8
14
|
it_behaves_like 'API class'
|
@@ -18,6 +24,32 @@ describe Bitex::UsdDeposit do
|
|
18
24
|
thing.should be_a BigDecimal
|
19
25
|
thing.should == 110.0
|
20
26
|
end
|
27
|
+
|
28
|
+
it "sets country" do
|
29
|
+
Bitex::UsdDeposit.from_json(as_json).country.should == 'UY'
|
30
|
+
end
|
31
|
+
|
32
|
+
it "sets currency" do
|
33
|
+
Bitex::UsdDeposit.from_json(as_json).currency.should == 'UYU'
|
34
|
+
end
|
35
|
+
|
36
|
+
it "sets kyc profile" do
|
37
|
+
Bitex::UsdDeposit.from_json(as_json).kyc_profile_id.should == 1
|
38
|
+
end
|
39
|
+
|
40
|
+
it "sets details" do
|
41
|
+
Bitex::UsdDeposit.from_json(as_json).request_details.should ==
|
42
|
+
'bank of new york mellon'
|
43
|
+
end
|
44
|
+
|
45
|
+
it "sets the astropay_response_body" do
|
46
|
+
Bitex::UsdDeposit.from_json(as_json).astropay_response_body.should ==
|
47
|
+
{"status" => "OK","link" => "https://astr.com"}
|
48
|
+
end
|
49
|
+
|
50
|
+
it "sets the third party reference" do
|
51
|
+
Bitex::UsdDeposit.from_json(as_json).third_party_reference.should == 'ABABABABA'
|
52
|
+
end
|
21
53
|
|
22
54
|
{ 1 => :astropay,
|
23
55
|
2 => :other,
|
@@ -48,4 +80,34 @@ describe Bitex::UsdDeposit do
|
|
48
80
|
Bitex::UsdDeposit.from_json(as_json).reason.should == symbol
|
49
81
|
end
|
50
82
|
end
|
83
|
+
|
84
|
+
it 'creates a new deposit' do
|
85
|
+
stub_private(:post, "/private/usd/deposits", 'usd_deposit', {
|
86
|
+
country: 'UY',
|
87
|
+
amount: 110,
|
88
|
+
currency: 'UYU',
|
89
|
+
deposit_method: 'astropay',
|
90
|
+
request_details: 'bank of new york mellon',
|
91
|
+
})
|
92
|
+
deposit = Bitex::UsdDeposit.create!('UY', 110, 'UYU', 'astropay',
|
93
|
+
'bank of new york mellon')
|
94
|
+
deposit.should be_a Bitex::UsdDeposit
|
95
|
+
deposit.astropay_response_body.should be_a Hash
|
96
|
+
deposit.status.should == :pending
|
97
|
+
end
|
98
|
+
|
99
|
+
it 'finds a single usd deposit' do
|
100
|
+
stub_private(:get, '/private/usd/deposits/1', 'usd_deposit')
|
101
|
+
deposit = Bitex::UsdDeposit.find(1)
|
102
|
+
deposit.should be_a Bitex::UsdDeposit
|
103
|
+
deposit.status.should == :pending
|
104
|
+
end
|
105
|
+
|
106
|
+
it 'lists all usd deposits' do
|
107
|
+
stub_private(:get, '/private/usd/deposits', 'usd_deposits')
|
108
|
+
deposits = Bitex::UsdDeposit.all
|
109
|
+
deposits.should be_an Array
|
110
|
+
deposits.first.should be_an Bitex::UsdDeposit
|
111
|
+
deposits.first.status.should == :pending
|
112
|
+
end
|
51
113
|
end
|
data/spec/usd_withdrawal_spec.rb
CHANGED
@@ -1,8 +1,12 @@
|
|
1
1
|
require 'spec_helper'
|
2
2
|
|
3
3
|
describe Bitex::UsdWithdrawal do
|
4
|
+
before :each do
|
5
|
+
Bitex.api_key = 'valid_api_key'
|
6
|
+
end
|
7
|
+
|
4
8
|
let(:as_json) do
|
5
|
-
[8,12345678,946685400,100.00000000,1,0,]
|
9
|
+
[8,12345678,946685400,100.00000000,1,0,'UY','UYU', 'bb', 'billy bob', 1, 'las instrucciones']
|
6
10
|
end
|
7
11
|
|
8
12
|
it_behaves_like 'API class'
|
@@ -13,6 +17,36 @@ describe Bitex::UsdWithdrawal do
|
|
13
17
|
thing.should == 100.0
|
14
18
|
end
|
15
19
|
|
20
|
+
it 'sets country' do
|
21
|
+
thing = Bitex::UsdWithdrawal.from_json(as_json).country
|
22
|
+
thing.should == 'UY'
|
23
|
+
end
|
24
|
+
|
25
|
+
it 'sets currency' do
|
26
|
+
thing = Bitex::UsdWithdrawal.from_json(as_json).currency
|
27
|
+
thing.should == 'UYU'
|
28
|
+
end
|
29
|
+
|
30
|
+
it 'sets payment method' do
|
31
|
+
thing = Bitex::UsdWithdrawal.from_json(as_json).payment_method
|
32
|
+
thing.should == 'bb'
|
33
|
+
end
|
34
|
+
|
35
|
+
it 'sets label' do
|
36
|
+
thing = Bitex::UsdWithdrawal.from_json(as_json).label
|
37
|
+
thing.should == 'billy bob'
|
38
|
+
end
|
39
|
+
|
40
|
+
it 'sets kyc profile id' do
|
41
|
+
thing = Bitex::UsdWithdrawal.from_json(as_json).kyc_profile_id
|
42
|
+
thing.should == 1
|
43
|
+
end
|
44
|
+
|
45
|
+
it 'sets instructions' do
|
46
|
+
thing = Bitex::UsdWithdrawal.from_json(as_json).instructions
|
47
|
+
thing.should == 'las instrucciones'
|
48
|
+
end
|
49
|
+
|
16
50
|
{ 1 => :received,
|
17
51
|
2 => :pending,
|
18
52
|
3 => :done,
|
@@ -34,4 +68,34 @@ describe Bitex::UsdWithdrawal do
|
|
34
68
|
Bitex::UsdWithdrawal.from_json(as_json).reason.should == symbol
|
35
69
|
end
|
36
70
|
end
|
71
|
+
|
72
|
+
it 'creates a new withdrawal' do
|
73
|
+
stub_private(:post, "/private/usd/withdrawals", 'usd_withdrawal', {
|
74
|
+
country: 'UY',
|
75
|
+
amount: 110,
|
76
|
+
currency: 'UYU',
|
77
|
+
payment_method: 'bb',
|
78
|
+
instructions: 'bank of new york mellon',
|
79
|
+
label: 'a label',
|
80
|
+
})
|
81
|
+
deposit = Bitex::UsdWithdrawal.create!('UY', 110, 'UYU', 'bb',
|
82
|
+
'bank of new york mellon', 'a label')
|
83
|
+
deposit.should be_a Bitex::UsdWithdrawal
|
84
|
+
deposit.status.should == :received
|
85
|
+
end
|
86
|
+
|
87
|
+
it 'finds a single usd deposit' do
|
88
|
+
stub_private(:get, '/private/usd/withdrawals/1', 'usd_withdrawal')
|
89
|
+
deposit = Bitex::UsdWithdrawal.find(1)
|
90
|
+
deposit.should be_a Bitex::UsdWithdrawal
|
91
|
+
deposit.status.should == :received
|
92
|
+
end
|
93
|
+
|
94
|
+
it 'lists all usd deposits' do
|
95
|
+
stub_private(:get, '/private/usd/withdrawals', 'usd_withdrawals')
|
96
|
+
deposits = Bitex::UsdWithdrawal.all
|
97
|
+
deposits.should be_an Array
|
98
|
+
deposits.first.should be_an Bitex::UsdWithdrawal
|
99
|
+
deposits.first.status.should == :received
|
100
|
+
end
|
37
101
|
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: bitex
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.1.
|
4
|
+
version: 0.1.3
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -10,7 +10,7 @@ authors:
|
|
10
10
|
autorequire:
|
11
11
|
bindir: bin
|
12
12
|
cert_chain: []
|
13
|
-
date: 2014-
|
13
|
+
date: 2014-10-17 00:00:00.000000000 Z
|
14
14
|
dependencies:
|
15
15
|
- !ruby/object:Gem::Dependency
|
16
16
|
name: activesupport
|
@@ -175,10 +175,13 @@ files:
|
|
175
175
|
- lib/bitex.rb
|
176
176
|
- lib/bitex/api.rb
|
177
177
|
- lib/bitex/buy.rb
|
178
|
+
- lib/bitex/kyc_file.rb
|
179
|
+
- lib/bitex/kyc_profile.rb
|
178
180
|
- lib/bitex/market.rb
|
179
181
|
- lib/bitex/match.rb
|
180
182
|
- lib/bitex/order.rb
|
181
183
|
- lib/bitex/profile.rb
|
184
|
+
- lib/bitex/rates.rb
|
182
185
|
- lib/bitex/sell.rb
|
183
186
|
- lib/bitex/specie_deposit.rb
|
184
187
|
- lib/bitex/specie_withdrawal.rb
|
@@ -196,15 +199,32 @@ files:
|
|
196
199
|
- spec/fixtures/bids_cancel.json
|
197
200
|
- spec/fixtures/bids_create.json
|
198
201
|
- spec/fixtures/bids_show.json
|
202
|
+
- spec/fixtures/file.jpg
|
203
|
+
- spec/fixtures/kyc_file.json
|
204
|
+
- spec/fixtures/kyc_files.json
|
205
|
+
- spec/fixtures/kyc_profile.json
|
206
|
+
- spec/fixtures/kyc_profiles.json
|
199
207
|
- spec/fixtures/market_ticker.json
|
200
208
|
- spec/fixtures/order_book.json
|
201
209
|
- spec/fixtures/orders.json
|
202
210
|
- spec/fixtures/profile.json
|
211
|
+
- spec/fixtures/rates.json
|
212
|
+
- spec/fixtures/specie_deposit.json
|
213
|
+
- spec/fixtures/specie_deposits.json
|
214
|
+
- spec/fixtures/specie_withdrawal.json
|
215
|
+
- spec/fixtures/specie_withdrawals.json
|
203
216
|
- spec/fixtures/transactions.json
|
217
|
+
- spec/fixtures/usd_deposit.json
|
218
|
+
- spec/fixtures/usd_deposits.json
|
219
|
+
- spec/fixtures/usd_withdrawal.json
|
220
|
+
- spec/fixtures/usd_withdrawals.json
|
204
221
|
- spec/fixtures/user_transactions.json
|
222
|
+
- spec/kyc_file_spec.rb
|
223
|
+
- spec/kyc_profile_spec.rb
|
205
224
|
- spec/market_spec.rb
|
206
225
|
- spec/order_spec.rb
|
207
226
|
- spec/profile_spec.rb
|
227
|
+
- spec/rates_spec.rb
|
208
228
|
- spec/sell_spec.rb
|
209
229
|
- spec/spec_helper.rb
|
210
230
|
- spec/specie_deposit_spec.rb
|
@@ -251,15 +271,32 @@ test_files:
|
|
251
271
|
- spec/fixtures/bids_cancel.json
|
252
272
|
- spec/fixtures/bids_create.json
|
253
273
|
- spec/fixtures/bids_show.json
|
274
|
+
- spec/fixtures/file.jpg
|
275
|
+
- spec/fixtures/kyc_file.json
|
276
|
+
- spec/fixtures/kyc_files.json
|
277
|
+
- spec/fixtures/kyc_profile.json
|
278
|
+
- spec/fixtures/kyc_profiles.json
|
254
279
|
- spec/fixtures/market_ticker.json
|
255
280
|
- spec/fixtures/order_book.json
|
256
281
|
- spec/fixtures/orders.json
|
257
282
|
- spec/fixtures/profile.json
|
283
|
+
- spec/fixtures/rates.json
|
284
|
+
- spec/fixtures/specie_deposit.json
|
285
|
+
- spec/fixtures/specie_deposits.json
|
286
|
+
- spec/fixtures/specie_withdrawal.json
|
287
|
+
- spec/fixtures/specie_withdrawals.json
|
258
288
|
- spec/fixtures/transactions.json
|
289
|
+
- spec/fixtures/usd_deposit.json
|
290
|
+
- spec/fixtures/usd_deposits.json
|
291
|
+
- spec/fixtures/usd_withdrawal.json
|
292
|
+
- spec/fixtures/usd_withdrawals.json
|
259
293
|
- spec/fixtures/user_transactions.json
|
294
|
+
- spec/kyc_file_spec.rb
|
295
|
+
- spec/kyc_profile_spec.rb
|
260
296
|
- spec/market_spec.rb
|
261
297
|
- spec/order_spec.rb
|
262
298
|
- spec/profile_spec.rb
|
299
|
+
- spec/rates_spec.rb
|
263
300
|
- spec/sell_spec.rb
|
264
301
|
- spec/spec_helper.rb
|
265
302
|
- spec/specie_deposit_spec.rb
|