bitex 0.0.4 → 0.0.5

Sign up to get free protection for your applications and to get access to all the features.
@@ -26,6 +26,26 @@ module Bitex
26
26
  def self.find(id)
27
27
  active.select{|o| o.id == id}.first
28
28
  end
29
+
30
+ # @visibility private
31
+ def self.create!(specie, amount, price, wait=false)
32
+ params = {
33
+ amount: amount,
34
+ price: price,
35
+ specie: {btc: 1, ltc: 2}[specie]
36
+ }
37
+ order = from_json(Api.private(:post, "/private#{base_path}", params))
38
+ retries = 0
39
+ while wait && order.status == :received
40
+ order = find(order.id)
41
+ sleep 0.2
42
+ retries += 1
43
+ if retries > 100
44
+ raise StandardError.new("Timed out waiting for #{base_path} ##{order.id}")
45
+ end
46
+ end
47
+ return order
48
+ end
29
49
 
30
50
  def cancel!
31
51
  path = "/private#{self.class.base_path}/cancel"
@@ -87,14 +107,13 @@ module Bitex
87
107
  # Create a new Bid for spending Amount USD paying no more than
88
108
  # price per unit.
89
109
  # @param specie [Symbol] :btc or :ltc, whatever you're buying.
110
+ # @param amount [BigDecimal] Amount to spend buying.
111
+ # @param price [BigDecimal] Maximum price to pay per unit.
112
+ # @param wait [Boolean] Block the process and wait until this
113
+ # bid moves out of the :received state, defaults to false.
90
114
  # @see https://bitex.la/developers#create-bid
91
- def self.create!(specie, amount, price)
92
- params = {
93
- amount: amount,
94
- price: price,
95
- specie: {btc: 1, ltc: 2}[specie]
96
- }
97
- from_json(Api.private(:post, "/private#{base_path}", params))
115
+ def self.create!(specie, amount, price, wait=false)
116
+ super
98
117
  end
99
118
 
100
119
  # @visibility private
@@ -145,14 +164,13 @@ module Bitex
145
164
  # Create a new Ask for selling a Quantity of specie charging no less than
146
165
  # Price per each.
147
166
  # @param specie [Symbol] :btc or :ltc, whatever you're selling.
167
+ # @param quantity [BigDecimal] Quantity to sell.
168
+ # @param price [BigDecimal] Minimum price to charge when selling.
169
+ # @param wait [Boolean] Block the process and wait until this
170
+ # ask moves out of the :received state, defaults to false.
148
171
  # @see https://bitex.la/developers#create-ask
149
- def self.create!(specie, quantity, price)
150
- params = {
151
- amount: quantity,
152
- price: price,
153
- specie: {btc: 1, ltc: 2}[specie]
154
- }
155
- from_json(Api.private(:post, "/private#{base_path}", params))
172
+ def self.create!(specie, quantity, price, wait=false)
173
+ super
156
174
  end
157
175
 
158
176
  # @visibility private
@@ -1,3 +1,3 @@
1
1
  module Bitex
2
- VERSION = "0.0.4"
2
+ VERSION = "0.0.5"
3
3
  end
@@ -1 +1 @@
1
- [[1,12345678,946685400,1,100.00000000,10.00000000,1000.00000000,1],[2,12345678,946685400,1,10.00000000,1.00000000,1100.00000000,1]]
1
+ [[1,12345678,946685400,1,100.00000000,10.00000000,1000.00000000,2],[2,12345678,946685400,1,10.00000000,1.00000000,1100.00000000,2]]
@@ -25,6 +25,7 @@ shared_examples_for 'Order' do |api_path|
25
25
  {amount: 100.50, price: 1000.00, specie: 1})
26
26
  order = subject.class.create!(:btc, 100.50, 1000.00)
27
27
  order.should be_a subject.class
28
+ order.status.should == :received
28
29
  end
29
30
 
30
31
  it 'places for ltc' do
@@ -32,6 +33,16 @@ shared_examples_for 'Order' do |api_path|
32
33
  {amount: 100.50, price: 1000.00, specie: 2})
33
34
  order = subject.class.create!(:ltc, 100.50, 1000.00)
34
35
  order.should be_a subject.class
36
+ order.status.should == :received
37
+ end
38
+
39
+ it 'places for btc and waits until processed by our matching engine' do
40
+ stub_private(:post, "/private/#{api_path}", "#{api_path}_create",
41
+ {amount: 100.50, price: 1000.00, specie: 1})
42
+ stub_private(:get, "/private/orders/active", 'orders')
43
+ order = subject.class.create!(:btc, 100.50, 1000.00, true)
44
+ order.should be_a subject.class
45
+ order.status.should == :executing
35
46
  end
36
47
 
37
48
  it 'cancels one' do
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.0.4
4
+ version: 0.0.5
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-07-10 00:00:00.000000000 Z
13
+ date: 2014-07-14 00:00:00.000000000 Z
14
14
  dependencies:
15
15
  - !ruby/object:Gem::Dependency
16
16
  name: activesupport