mexbt 0.0.1 → 0.0.2
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 +4 -4
- data/.gitignore +1 -0
- data/Gemfile +0 -7
- data/lib/mexbt/client.rb +3 -0
- data/lib/mexbt/version.rb +1 -1
- data/mexbt.gemspec +3 -1
- data/spec/private_api_spec.rb +66 -50
- metadata +44 -1
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 0653a2d6d27ec38617306422739ce95a108d7483
|
4
|
+
data.tar.gz: fa5beeae2838cd3ba809e5bfa57bb8ea27e823c1
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: b0c46985c1ca2e6cb7762ac308d2ff0515b0915df797c5885f575e2e47ec9f4fb198d950da59f5d8cca6989bdf0c67b9f7718324f8534708f147fbee3be2ccc7
|
7
|
+
data.tar.gz: 90d6328e6064f85e009bc830b011273eb1a1f4e0e98d40fa8909773f1e6e06b291b82cbfa94261fe9e3e8e3ecb38716046ac9589cc3a1305c64e22036fe450bf
|
data/.gitignore
ADDED
@@ -0,0 +1 @@
|
|
1
|
+
Gemfile.lock
|
data/Gemfile
CHANGED
data/lib/mexbt/client.rb
CHANGED
data/lib/mexbt/version.rb
CHANGED
data/mexbt.gemspec
CHANGED
@@ -15,7 +15,9 @@ Gem::Specification.new do |spec|
|
|
15
15
|
spec.executables = spec.files.grep(%r{^bin/}) { |f| File.basename(f) }
|
16
16
|
spec.test_files = spec.files.grep(%r{^(test|spec|features)/})
|
17
17
|
spec.require_paths = ["lib"]
|
18
|
-
|
18
|
+
spec.add_runtime_dependency "activesupport", ["= 4.1.8"]
|
19
|
+
spec.add_runtime_dependency "rest_client", ["= 1.8.2"]
|
19
20
|
spec.add_development_dependency "bundler", "~> 1.6"
|
20
21
|
spec.add_development_dependency "rake"
|
22
|
+
spec.add_development_dependency "rspec"
|
21
23
|
end
|
data/spec/private_api_spec.rb
CHANGED
@@ -2,83 +2,99 @@ require 'spec_helper'
|
|
2
2
|
|
3
3
|
describe Mexbt::Private do
|
4
4
|
|
5
|
-
|
6
|
-
Mexbt.configure do | mexbt |
|
7
|
-
mexbt.public_key = "1d039abd0e667a4e03767ddef11cb8d5"
|
8
|
-
mexbt.private_key = "0e5a8d04838fc43f0f4335c8a380f200"
|
9
|
-
mexbt.user_id = "test@mexbt.com"
|
10
|
-
mexbt.sandbox = true
|
11
|
-
end
|
12
|
-
end
|
13
|
-
|
14
|
-
context Mexbt::Account do
|
5
|
+
context "without authentication" do
|
15
6
|
|
16
|
-
it "
|
17
|
-
|
18
|
-
res = Mexbt::Account.send(f)
|
19
|
-
expect(res["isAccepted"]).to be true
|
20
|
-
end
|
7
|
+
it "should raise a friendly error" do
|
8
|
+
expect { Mexbt::Account.balance }.to raise_error("You must configure your API keys!")
|
21
9
|
end
|
22
10
|
|
23
11
|
end
|
24
12
|
|
25
|
-
context
|
13
|
+
context "with authentication" do
|
26
14
|
|
27
|
-
|
28
|
-
|
29
|
-
|
30
|
-
|
15
|
+
before do
|
16
|
+
Mexbt.configure do | mexbt |
|
17
|
+
mexbt.public_key = "1d039abd0e667a4e03767ddef11cb8d5"
|
18
|
+
mexbt.private_key = "0e5a8d04838fc43f0f4335c8a380f200"
|
19
|
+
mexbt.user_id = "test@mexbt.com"
|
20
|
+
mexbt.sandbox = true
|
21
|
+
end
|
31
22
|
end
|
32
23
|
|
33
|
-
|
34
|
-
|
35
|
-
expect(res["isAccepted"]).to be true
|
36
|
-
expect(res["serverOrderId"]).to be_a(Fixnum)
|
24
|
+
after do
|
25
|
+
Mexbt.configure { | mexbt | mexbt.public_key = nil }
|
37
26
|
end
|
38
27
|
|
39
|
-
|
40
|
-
|
41
|
-
|
28
|
+
context Mexbt::Account do
|
29
|
+
|
30
|
+
it "gives a valid response to all public api functions that require no args" do
|
31
|
+
%w{info balance orders deposit_addresses trades}.each do |f|
|
32
|
+
res = Mexbt::Account.send(f)
|
33
|
+
expect(res["isAccepted"]).to be true
|
34
|
+
end
|
35
|
+
end
|
42
36
|
|
43
|
-
|
37
|
+
end
|
44
38
|
|
45
|
-
|
39
|
+
context Mexbt::Orders do
|
46
40
|
|
47
|
-
it "allows
|
48
|
-
res = Mexbt::Orders.
|
41
|
+
it "allows creating market orders" do
|
42
|
+
res = Mexbt::Orders.create(amount: 0.1, currency_pair: "BTCUSD")
|
49
43
|
expect(res["isAccepted"]).to be true
|
44
|
+
expect(res["serverOrderId"]).to be_a(Fixnum)
|
50
45
|
end
|
51
46
|
|
52
|
-
it "allows
|
53
|
-
res = Mexbt::Orders.
|
47
|
+
it "allows creating limit orders" do
|
48
|
+
res = Mexbt::Orders.create(type: :limit, price: 100, amount: 0.1234, currency_pair: "BTCUSD")
|
54
49
|
expect(res["isAccepted"]).to be true
|
50
|
+
expect(res["serverOrderId"]).to be_a(Fixnum)
|
55
51
|
end
|
56
52
|
|
57
|
-
it "
|
58
|
-
|
59
|
-
|
60
|
-
|
61
|
-
|
62
|
-
|
63
|
-
|
64
|
-
|
65
|
-
|
53
|
+
it "raises an exception if order type not recognised" do
|
54
|
+
expect { Mexbt::Orders.create(type: :boom, amount: 0.2) }.to raise_error("Unknown order type 'boom'")
|
55
|
+
end
|
56
|
+
|
57
|
+
context "modifying and cancelling orders" do
|
58
|
+
|
59
|
+
let(:order_id) {Mexbt::Orders.create(type: :limit, price: 100, amount: 0.1, currency_pair: "BTCUSD")["serverOrderId"]}
|
60
|
+
|
61
|
+
it "allows converting limit orders to market orders" do
|
62
|
+
res = Mexbt::Orders.modify(id: order_id, currency_pair: "BTCUSD", action: :execute_now)
|
63
|
+
expect(res["isAccepted"]).to be true
|
64
|
+
end
|
65
|
+
|
66
|
+
it "allows moving orders to the top of the book" do
|
67
|
+
res = Mexbt::Orders.modify(id: order_id, currency_pair: "BTCUSD", action: :move_to_top)
|
68
|
+
expect(res["isAccepted"]).to be true
|
69
|
+
end
|
70
|
+
|
71
|
+
it "allows cancelling individual orders" do
|
72
|
+
res = Mexbt::Orders.cancel(id: order_id, currency_pair: "BTCUSD")
|
73
|
+
expect(res["isAccepted"]).to be true
|
74
|
+
orders = Mexbt::Account.orders["openOrdersInfo"]
|
75
|
+
orders.each do |open_orders|
|
76
|
+
if open_orders["ins"] === "BTCUSD"
|
77
|
+
open_orders["openOrders"].each do |usd_order|
|
78
|
+
if usd_order["ServerOrderId"] === order_id
|
79
|
+
fail("Order was cancelled but still open")
|
80
|
+
end
|
66
81
|
end
|
67
82
|
end
|
68
83
|
end
|
69
84
|
end
|
70
|
-
end
|
71
85
|
|
72
|
-
|
73
|
-
|
74
|
-
|
75
|
-
|
76
|
-
|
77
|
-
|
78
|
-
|
86
|
+
it "allows cancelling all orders" do
|
87
|
+
res = Mexbt::Orders.cancel_all(currency_pair: "BTCUSD")
|
88
|
+
expect(res["isAccepted"]).to be true
|
89
|
+
orders = Mexbt::Account.orders["openOrdersInfo"]
|
90
|
+
orders.each do |open_orders|
|
91
|
+
if open_orders["ins"] === "BTCUSD"
|
92
|
+
expect(open_orders["openOrders"]).to eql([])
|
93
|
+
end
|
79
94
|
end
|
80
95
|
end
|
81
96
|
end
|
97
|
+
|
82
98
|
end
|
83
99
|
|
84
100
|
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: mexbt
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.2
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- williamcoates
|
@@ -10,6 +10,34 @@ bindir: bin
|
|
10
10
|
cert_chain: []
|
11
11
|
date: 2014-11-21 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
|
+
- !ruby/object:Gem::Dependency
|
14
|
+
name: activesupport
|
15
|
+
requirement: !ruby/object:Gem::Requirement
|
16
|
+
requirements:
|
17
|
+
- - '='
|
18
|
+
- !ruby/object:Gem::Version
|
19
|
+
version: 4.1.8
|
20
|
+
type: :runtime
|
21
|
+
prerelease: false
|
22
|
+
version_requirements: !ruby/object:Gem::Requirement
|
23
|
+
requirements:
|
24
|
+
- - '='
|
25
|
+
- !ruby/object:Gem::Version
|
26
|
+
version: 4.1.8
|
27
|
+
- !ruby/object:Gem::Dependency
|
28
|
+
name: rest_client
|
29
|
+
requirement: !ruby/object:Gem::Requirement
|
30
|
+
requirements:
|
31
|
+
- - '='
|
32
|
+
- !ruby/object:Gem::Version
|
33
|
+
version: 1.8.2
|
34
|
+
type: :runtime
|
35
|
+
prerelease: false
|
36
|
+
version_requirements: !ruby/object:Gem::Requirement
|
37
|
+
requirements:
|
38
|
+
- - '='
|
39
|
+
- !ruby/object:Gem::Version
|
40
|
+
version: 1.8.2
|
13
41
|
- !ruby/object:Gem::Dependency
|
14
42
|
name: bundler
|
15
43
|
requirement: !ruby/object:Gem::Requirement
|
@@ -38,6 +66,20 @@ dependencies:
|
|
38
66
|
- - ">="
|
39
67
|
- !ruby/object:Gem::Version
|
40
68
|
version: '0'
|
69
|
+
- !ruby/object:Gem::Dependency
|
70
|
+
name: rspec
|
71
|
+
requirement: !ruby/object:Gem::Requirement
|
72
|
+
requirements:
|
73
|
+
- - ">="
|
74
|
+
- !ruby/object:Gem::Version
|
75
|
+
version: '0'
|
76
|
+
type: :development
|
77
|
+
prerelease: false
|
78
|
+
version_requirements: !ruby/object:Gem::Requirement
|
79
|
+
requirements:
|
80
|
+
- - ">="
|
81
|
+
- !ruby/object:Gem::Version
|
82
|
+
version: '0'
|
41
83
|
description:
|
42
84
|
email:
|
43
85
|
- william@mexbt.com
|
@@ -45,6 +87,7 @@ executables: []
|
|
45
87
|
extensions: []
|
46
88
|
extra_rdoc_files: []
|
47
89
|
files:
|
90
|
+
- ".gitignore"
|
48
91
|
- ".rspec"
|
49
92
|
- Gemfile
|
50
93
|
- Gemfile.lock
|