mtgox 0.0.1 → 0.1.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.
@@ -0,0 +1,7 @@
1
+ rvm:
2
+ - 1.8.7
3
+ - 1.9.1
4
+ - 1.9.2
5
+ - jruby
6
+ - ree
7
+ - ruby-head
data/.yardopts CHANGED
@@ -1,3 +1,4 @@
1
+ --tag authenticated:"Requires Authentication"
1
2
  --markup markdown
2
3
  -
3
4
  LICENSE.md
data/Gemfile CHANGED
@@ -1,4 +1,7 @@
1
1
  source 'http://rubygems.org'
2
2
 
3
- # Specify your gem's dependencies in gem_template.gemspec
3
+ platforms :jruby do
4
+ gem 'jruby-openssl', '~> 0.7'
5
+ end
6
+
4
7
  gemspec
data/README.md CHANGED
@@ -7,6 +7,13 @@ Installation
7
7
  ------------
8
8
  gem install mtgox
9
9
 
10
+ Alias
11
+ -----
12
+ After installing the gem, you can get the current price for 1 BTC in USD by
13
+ typing `btc` in your bash shell simply by setting the following alias:
14
+
15
+ alias btc='ruby -r rubygems -r mtgox -e "puts MtGox.ticker.last"'
16
+
10
17
  Documentation
11
18
  -------------
12
19
  [http://rdoc.info/gems/mtgox](http://rdoc.info/gems/mtgox)
@@ -55,16 +62,16 @@ Usage Examples
55
62
  end
56
63
 
57
64
  # Get your current balance
58
- puts MtGox.balance [TODO]
65
+ puts MtGox.balance
59
66
 
60
67
  # Place an order to buy 1 BTC for 20 USD (returns a list of your open orders)
61
- puts MtGox.buy 1.0, 20.0 [TODO]
68
+ puts MtGox.buy! 1.0, 20.0
62
69
 
63
70
  # Place an order to sell 1 BTC for 20 USD (returns a list of your open orders)
64
- puts MtGox.sell 1.0, 20.0 [TODO]
71
+ puts MtGox.sell! 1.0, 20.0
65
72
 
66
73
  # Cancel order #1234567890
67
- puts MtGox.cancel 1234567890 [TODO]
74
+ puts MtGox.cancel 1234567890
68
75
 
69
76
  # Send 1 BTC to the author of this gem
70
77
  puts MtGox.send 1.0, "1KxSo9bGBfPVFEtWNLpnUK1bfLNNT4q31L" [TODO]
data/Rakefile CHANGED
@@ -13,6 +13,9 @@ require 'yard'
13
13
  namespace :doc do
14
14
  YARD::Rake::YardocTask.new do |task|
15
15
  task.files = ['LICENSE.md', 'lib/**/*.rb']
16
- task.options = ['--markup', 'markdown']
16
+ task.options = [
17
+ '--tag', 'authenticated:Requires Authentication',
18
+ '--markup', 'markdown',
19
+ ]
17
20
  end
18
21
  end
@@ -1,6 +1,13 @@
1
1
  require 'mtgox/client'
2
2
 
3
3
  module MtGox
4
+ class << self
5
+ attr_accessor :name, :pass
6
+ def configure
7
+ yield self
8
+ end
9
+ end
10
+
4
11
  # Alias for MtGox::Client.new
5
12
  #
6
13
  # @return [MtGox::Client]
@@ -1,3 +1,6 @@
1
+ require 'hashie'
2
+ require 'faraday/error'
3
+ require 'rash'
1
4
  require 'mtgox/connection'
2
5
  require 'mtgox/request'
3
6
 
@@ -6,40 +9,172 @@ module MtGox
6
9
  include MtGox::Connection
7
10
  include MtGox::Request
8
11
 
12
+ ORDER_TYPES = {:sell => 1, :buy => 2}
13
+
9
14
  # Fetch the latest ticker data
10
15
  #
11
- # @return [Hashie::Rash]
16
+ # @authenticated false
17
+ # @return [Hashie::Rash] with keys `buy` - current highest bid price, `sell` - current lowest ask price, `high` - highest price trade for the day, `low` - lowest price trade for the day, `last` - price of most recent trade, and `vol`
12
18
  # @example
13
- # MtGox.ticker
19
+ # MtGox.ticker #=> <#Hashie::Rash buy=19.29 high=19.96 last=19.36 low=19.01 sell=19.375 vol=29470>
14
20
  def ticker
15
21
  get('/code/data/ticker.php')['ticker']
16
22
  end
17
23
 
18
24
  # Fetch open asks
19
25
  #
20
- # @return [Array<Numeric>]
26
+ # @authenticated false
27
+ # @return [Array<Array<Numeric>>] in the form `[price, quantity]`, sorted in price ascending order
21
28
  # @example
22
- # MtGox.asks
29
+ # MtGox.asks[0, 3] #=> [[19.3898, 3.9], [19.4, 48.264], [19.409, 1]]
23
30
  def asks
24
31
  get('/code/data/getDepth.php')['asks']
25
32
  end
26
33
 
27
34
  # Fetch open bids
28
35
  #
29
- # @return [Array<Numeric>]
36
+ # @authenticated false
37
+ # @return [Array<Array<Numeric>>] in the form `[price, quantity]`, sorted in price descending order
30
38
  # @example
31
- # MtGox.bids
39
+ # MtGox.bids[0, 3] #=> [[19.3898, 77.42], [19.3, 3.02], [19.29, 82.378]]
32
40
  def bids
33
41
  get('/code/data/getDepth.php')['bids']
34
42
  end
35
43
 
44
+ # Fetch both bids and asks in one call, for network efficiency
45
+ #
46
+ # @authenticated false
47
+ # @return [Hashie::Rash] a hash with keys :asks and :bids, which contain arrays as described in #asks and #bids.
48
+ # @example
49
+ # offers = MtGox.offers
50
+ # offers.asks[0, 3] #=> [[19.3898, 3.9], [19.4, 48.264], [19.409, 1]]
51
+ # offers.bids[0, 3] #=> [[19.3898, 77.42], [19.3, 3.02], [19.29, 82.378]]
52
+ def offers
53
+ get('/code/data/getDepth.php')
54
+ end
55
+
36
56
  # Fetch recent trades
37
57
  #
38
- # @return [Array<Hashie::Rash>]
58
+ # @authenticated false
59
+ # @return [Array<Hashie::Rash>] an array of trades, sorted in chronological order. Each trade is a `Hashie::Rash` with keys `amount` - number of bitcoins traded, `price` - price they were traded at in US dollars, `date` - time and date of the trade (a `Time` object), and `tid` - the trade ID.
39
60
  # @example
40
- # MtGox.trades
61
+ # MtGox.trades[0, 3] #=> [<#Hashie::Rash amount=41 date=2011-06-14 11:26:32 -0700 price=18.5 tid="183747">, <#Hashie::Rash amount=5 date=2011-06-14 11:26:44 -0700 price=18.5 tid="183748">, <#Hashie::Rash amount=5 date=2011-06-14 11:27:00 -0700 price=18.42 tid="183749">]
41
62
  def trades
42
- get('/code/data/getTrades.php').each{|t| t['date'] = Time.at(t['date'])}
63
+ get('/code/data/getTrades.php').each do |t|
64
+ t['date'] = Time.at(t['date'])
65
+ end
66
+ end
67
+
68
+ # Fetch your balance
69
+ #
70
+ # @authenticated true
71
+ # @return [Hashie::Rash] with keys `btcs` - amount of bitcoins in your account and `usds` - amount of US dollars in your account
72
+ # @example
73
+ # MtGox.balance #=> <#Hashie::Rash btcs=3.7 usds=12>
74
+ def balance
75
+ post('/code/getFunds.php', pass_params)
43
76
  end
77
+
78
+ # Fetch your open buys
79
+ #
80
+ # @authenticated true
81
+ # @return [Array<Hashie::Rash>] an array of your open bids, sorted in price ascending order with the keys `amount`, `dark`, `date`, `oid`, `price`, `status`, and `type`
82
+ # @example
83
+ # MtGox.buys[0, 3] #=> [<#Hashie::Rash amount=0.73 dark="0" date="1307949196" oid="929284" price=2 status=:active type=2>, <#Hashie::Rash amount=0.36 dark="0" date="1307949201" oid="929288" price=4 status=:active type=2>, <#Hashie::Rash amount=0.24 dark="0" date="1307949212" oid="929292" price=6 status=:active type=2>]
84
+ def buys
85
+ orders.select do |o|
86
+ o['type'] == ORDER_TYPES[:buy]
87
+ end
88
+ end
89
+
90
+ # Fetch your open sells
91
+ #
92
+ # @authenticated true
93
+ # @return [Array<Hashie::Rash>] an array of your open asks, sorted in price ascending order with the keys `amount`, `dark`, `date`, `oid`, `price`, `status`, and `type`
94
+ # @example
95
+ # MtGox.sells[0, 3] #=> [<#Hashie::Rash amount=0.1 dark="0" date="1307949384" oid="663465" price=24.92 status=nil type=1>, <#Hashie::Rash amount=0.12 dark="0" date="1307949391" oid="663468" price=25.65 status=nil type=1>, <#Hashie::Rash amount=0.15 dark="0" date="1307949396" oid="663470" price=26.38 status=nil type=1>]
96
+ def sells
97
+ orders.select do |o|
98
+ o['type'] == ORDER_TYPES[:sell]
99
+ end
100
+ end
101
+
102
+ # Fetch your open orders, both buys and sells, for network efficiency
103
+ #
104
+ # @authenticated true
105
+ # @return [<Hashie::Rash>] with keys `buy` and `sell`, which contain arrays as described in {MtGox::Client#buys} and {MtGox::Client#sells}
106
+ # @example
107
+ # MtGox.orders[0, 3] #=> [<#Hashie::Rash amount=0.73 dark="0" date="1307949196" oid="929284" price=2 status=:active type=2>, <#Hashie::Rash amount=0.36 dark="0" date="1307949201" oid="929288" price=4 status=:active type=2>, <#Hashie::Rash amount=0.24 dark="0" date="1307949212" oid="929292" price=6 status=:active type=2>]
108
+ def orders
109
+ hash = post('/code/getOrders.php', pass_params)['orders']
110
+ end
111
+
112
+ # Place an order to buy
113
+ #
114
+ # @todo Return something useful
115
+ # @authenticated true
116
+ # @param quantity [Numeric] the number of bitcoins to purchase
117
+ # @param price [Numeric] the bid price in US dollars
118
+ # @return [Array<Hashie::Rash>]
119
+ # @example
120
+ # # Buy one BTC for $25
121
+ # MtGox.buy! 1.0, 25.0
122
+ def buy!(quantity, price)
123
+ post('/code/buyBTC.php', pass_params.merge({:amount => quantity, :price => price}))
124
+ end
125
+
126
+ # Place an order to sell
127
+ #
128
+ # @todo Return something useful
129
+ # @authenticated true
130
+ # @param quantity [Numeric] the number of bitcoins to sell
131
+ # @param price [Numeric] the ask price in US dollars
132
+ # @return [Array<Hashie::Rash>]
133
+ # @example
134
+ # # Sell 0.7 BTC for $26
135
+ # MtGox.sell! 0.7, 26.0
136
+ def sell!(quantity, price)
137
+ post('/code/sellBTC.php', pass_params.merge({:amount => quantity, :price => price}))
138
+ end
139
+
140
+ # Cancel an open order
141
+ #
142
+ # @todo Return something useful
143
+ # @authenticated true
144
+ # @overload cancel(oid)
145
+ # @param oid [String] an order ID
146
+ # @return Array<Hashie::Rash>
147
+ # @example
148
+ # my_order = MtGox.orders.first
149
+ # MtGox.cancel my_order.oid
150
+ # MtGox.cancel 1234567890
151
+ # @overload cancel(order)
152
+ # @param order [Hash] a hash-like object, with keys `oid` - the order ID of the transaction to cancel and `type` - the type of order to cancel (`1` for sell or `2` for buy)
153
+ # @return Array<Hashie::Rash>
154
+ # @example
155
+ # my_order = MtGox.orders.first
156
+ # MtGox.cancel my_order
157
+ # MtGox.cancel {"oid" => "1234567890", "type" => 2}
158
+ def cancel(args)
159
+ if args.is_a?(Hash)
160
+ order = args.select{|k, v| ['oid', 'type'].include?(k)}
161
+ post('/code/cancelOrder.php', pass_params.merge(order))
162
+ else
163
+ order = orders.select{|o| o['oid'] == args.to_s}.first
164
+ if order
165
+ order.select!{|k, v| ['oid', 'type'].include?(k)}
166
+ post('/code/cancelOrder.php', pass_params.merge(order))
167
+ else
168
+ raise Faraday::Error::ResourceNotFound, {:status => 404, :headers => {}, :body => "Order not found."}
169
+ end
170
+ end
171
+ end
172
+
173
+ private
174
+
175
+ def pass_params
176
+ {:name => MtGox.name, :pass => MtGox.pass}
177
+ end
178
+
44
179
  end
45
180
  end
@@ -4,11 +4,21 @@ module MtGox
4
4
  request(:get, path, options)
5
5
  end
6
6
 
7
+ def post(path, options={})
8
+ request(:post, path, options)
9
+ end
10
+
7
11
  private
8
12
 
9
13
  def request(method, path, options)
10
14
  response = connection.send(method) do |request|
11
- request.url(path, options)
15
+ case method
16
+ when :get
17
+ request.url(path, options)
18
+ when :post
19
+ request.path = path
20
+ request.body = options unless options.empty?
21
+ end
12
22
  end
13
23
  response.body
14
24
  end
@@ -1,3 +1,3 @@
1
1
  module MtGox
2
- VERSION = "0.0.1"
2
+ VERSION = "0.1.0"
3
3
  end
@@ -0,0 +1 @@
1
+ {"status":"<br>Your entire order can't be filled at that price. What remains is stored in your open orders.","usds":15.9,"btcs":0,"ticker":{"high":19.96,"low":19,"vol":32508,"buy":19.04,"sell":19.1},"orders":[{"oid":"982174","type":2,"amount":0.88,"price":0.89,"status":"1","dark":"0","date":"1308251182"}]}
@@ -0,0 +1 @@
1
+ {"usds":15.9,"btcs":0,"orders":[{"oid":"929288","type":2,"amount":0.36,"price":4,"status":"1","dark":"0","date":"1307949201"},{"oid":"929292","type":2,"amount":0.24,"price":6,"status":"1","dark":"0","date":"1307949212"}],"ticker":{"high":19.96,"low":18.85,"vol":34831,"buy":18.8501,"sell":18.86}}
@@ -0,0 +1 @@
1
+ {"usds":3.7,"btcs":22}
@@ -0,0 +1 @@
1
+ {"orders":[{"oid":"929284","type":2,"amount":0.73,"price":2,"status":"1","dark":"0","date":"1307949196"},{"oid":"929288","type":2,"amount":0.36,"price":4,"status":"1","dark":"0","date":"1307949201"},{"oid":"929292","type":2,"amount":0.24,"price":6,"status":"1","dark":"0","date":"1307949212"},{"oid":"929297","type":2,"amount":0.18,"price":8,"status":"1","dark":"0","date":"1307949220"},{"oid":"929301","type":2,"amount":0.15,"price":10,"status":"1","dark":"0","date":"1307949227"},{"oid":"929302","type":2,"amount":0.12,"price":12,"status":"1","dark":"0","date":"1307949230"},{"oid":"929308","type":2,"amount":0.1,"price":14,"status":"1","dark":"0","date":"1307949234"},{"oid":"663465","type":1,"amount":0.1,"price":24.92,"status":"2","dark":"0","date":"1307949384"},{"oid":"663468","type":1,"amount":0.12,"price":25.65,"status":"2","dark":"0","date":"1307949391"},{"oid":"663470","type":1,"amount":0.15,"price":26.38,"status":"2","dark":"0","date":"1307949396"},{"oid":"663471","type":1,"amount":0.18,"price":27.11,"status":"2","dark":"0","date":"1307949399"},{"oid":"663478","type":1,"amount":0.24,"price":27.84,"status":"2","dark":"0","date":"1307949407"},{"oid":"663479","type":1,"amount":0.36,"price":28.57,"status":"2","dark":"0","date":"1307949411"},{"oid":"663482","type":1,"amount":0.73,"price":29.3,"status":"2","dark":"0","date":"1307949416"}],"usds":15.9,"btcs":0}
@@ -0,0 +1 @@
1
+ {"status":"<br>You don't have that much BTC. What remains is stored in your open orders.<br>Your entire order can't be filled at that price. What remains is stored in your open orders.","usds":15.9,"btcs":0,"ticker":{"high":19.96,"low":19,"vol":32982,"buy":19.06,"sell":19.1},"orders":[{"oid":"703257","type":1,"amount":1.76,"price":89,"status":"2","dark":"0","date":"1308252814"}]}
@@ -14,6 +14,15 @@ def stub_get(path)
14
14
  stub_request(:get, 'https://mtgox.com' + path)
15
15
  end
16
16
 
17
+ def a_post(path)
18
+ a_request(:post, 'https://mtgox.com' + path)
19
+ end
20
+
21
+ def stub_post(path)
22
+ stub_request(:post, 'https://mtgox.com' + path)
23
+ end
24
+
25
+
17
26
  def fixture_path
18
27
  File.expand_path('../fixtures', __FILE__)
19
28
  end
@@ -3,6 +3,7 @@ require 'helper'
3
3
  describe MtGox::Client do
4
4
  before do
5
5
  @client = MtGox::Client.new
6
+ MtGox.configure {|c| c.name="my_name"; c.pass="my_password"}
6
7
  end
7
8
 
8
9
  describe '#ticker' do
@@ -18,30 +19,49 @@ describe MtGox::Client do
18
19
  end
19
20
  end
20
21
 
21
- describe '#asks' do
22
- before do
22
+ describe 'depth methods' do
23
+ before :each do
23
24
  stub_get('/code/data/getDepth.php').
24
25
  to_return(:status => 200, :body => fixture('depth.json'))
25
26
  end
26
27
 
27
- it "should fetch open asks" do
28
- asks = @client.asks
29
- a_get('/code/data/getDepth.php').should have_been_made
30
- asks.last.should == [45, 593.28]
28
+ describe '#asks' do
29
+ it "should fetch open asks" do
30
+ asks = @client.asks
31
+ a_get('/code/data/getDepth.php').should have_been_made
32
+ asks.last.should == [45, 593.28]
33
+ end
34
+
35
+ it "should be sorted in price-ascending order" do
36
+ asks = @client.asks
37
+ asks.sort_by {|x| x[0]}.should == asks
38
+ end
39
+
31
40
  end
32
- end
33
41
 
34
- describe '#bids' do
35
- before do
36
- stub_get('/code/data/getDepth.php').
37
- to_return(:status => 200, :body => fixture('depth.json'))
42
+ describe "#bids" do
43
+ it "should fetch open bids" do
44
+ bids = @client.bids
45
+ a_get('/code/data/getDepth.php').should have_been_made
46
+ bids.last.should == [19.1, 1]
47
+ end
48
+
49
+ it "should be sorted in price-descending order" do
50
+ bids = @client.bids
51
+ bids.sort_by {|x| x[0]}.reverse.should == bids
52
+ end
53
+
38
54
  end
39
55
 
40
- it "should fetch open bids" do
41
- bids = @client.bids
42
- a_get('/code/data/getDepth.php').should have_been_made
43
- bids.last.should == [19.1, 1]
56
+ describe "#offers" do
57
+ it "should fetch both bids and asks, making only 1 network request" do
58
+ offers = @client.offers
59
+ a_get('/code/data/getDepth.php').should have_been_made.once
60
+ offers.asks.last.should == [45, 593.28]
61
+ offers.bids.last.should == [19.1, 1]
62
+ end
44
63
  end
64
+
45
65
  end
46
66
 
47
67
  describe '#trades' do
@@ -53,10 +73,117 @@ describe MtGox::Client do
53
73
  it "should fetch trades" do
54
74
  trades = @client.trades
55
75
  a_get('/code/data/getTrades.php').should have_been_made
56
- trades.last.date.should == Time.local(2011, 6, 8, 2, 51, 57)
76
+ trades.last.date.should == Time.utc(2011, 6, 8, 9, 51, 57)
57
77
  trades.last.price.should == 26.6099
58
78
  trades.last.amount.should == 1.37
59
79
  trades.last.tid.should == "129606"
60
80
  end
81
+
82
+ it "should be sorted in chronological order" do
83
+ trades = @client.trades
84
+ trades.sort_by(&:date).should == trades
85
+ end
61
86
  end
87
+
88
+ describe '#balance' do
89
+ before do
90
+ stub_post('/code/getFunds.php').
91
+ to_return(:status => 200, :body => fixture('funds.json'))
92
+ end
93
+
94
+ it "should fetch balance" do
95
+ balance = @client.balance
96
+ a_post("/code/getFunds.php").should have_been_made
97
+ balance.usds.should == 3.7
98
+ balance.btcs.should == 22.0
99
+ end
100
+ end
101
+
102
+ describe "order methods" do
103
+ before :each do
104
+ stub_post('/code/getOrders.php').
105
+ to_return(:status => 200, :body => fixture('orders.json'))
106
+ end
107
+
108
+ describe "#buys" do
109
+ it "should fetch orders" do
110
+ buys = @client.buys
111
+ a_post("/code/getOrders.php").should have_been_made
112
+ buys.last.price.should == 14
113
+ end
114
+ end
115
+
116
+ describe "#sells" do
117
+ it "should fetch sells" do
118
+ sells = @client.sells
119
+ a_post("/code/getOrders.php").should have_been_made
120
+ sells.last.price.should == 29.3
121
+ end
122
+ end
123
+ end
124
+
125
+ describe "#buy!" do
126
+ before do
127
+ stub_post('/code/buyBTC.php').
128
+ to_return(:status => 200, :body => fixture('buy.json'))
129
+ end
130
+
131
+ it "should place a bid" do
132
+ @client.buy!(0.88, 0.89)
133
+ a_post("/code/buyBTC.php").
134
+ with(:body => {"name" => "my_name", "pass" => "my_password", "amount" => "0.88", "price" => "0.89"}).
135
+ should have_been_made
136
+ end
137
+ end
138
+
139
+ describe "#sell!" do
140
+ before do
141
+ stub_post('/code/sellBTC.php').
142
+ to_return(:status => 200, :body => fixture('sell.json'))
143
+ end
144
+
145
+ it "should place an ask" do
146
+ @client.sell!(0.88, 89.0)
147
+ a_post("/code/sellBTC.php").
148
+ with(:body => {"name" => "my_name", "pass" => "my_password", "amount" => "0.88", "price" => "89.0"}).
149
+ should have_been_made
150
+ end
151
+ end
152
+
153
+ describe "#cancel" do
154
+ before do
155
+ stub_post('/code/getOrders.php').
156
+ to_return(:status => 200, :body => fixture('orders.json'))
157
+ stub_post('/code/cancelOrder.php').
158
+ to_return(:status => 200, :body => fixture('cancel.json'))
159
+ end
160
+
161
+ context "with a valid oid passed" do
162
+ it "should cancel an order" do
163
+ @client.cancel(929284)
164
+ a_post("/code/getOrders.php").should have_been_made.once
165
+ a_post('/code/cancelOrder.php').
166
+ with(:body => {"name" => "my_name", "pass" => "my_password", "oid" => "929284", "type" => "2"}).
167
+ should have_been_made
168
+ end
169
+ end
170
+
171
+ context "with an invalid oid passed" do
172
+ it "should raise an error" do
173
+ lambda do
174
+ @client.cancel(1234567890)
175
+ end.should raise_error(Faraday::Error::ResourceNotFound)
176
+ end
177
+ end
178
+
179
+ context "with an order passed" do
180
+ it "should cancel an order" do
181
+ @client.cancel({'oid' => "929284", 'type' => 2})
182
+ a_post('/code/cancelOrder.php').
183
+ with(:body => {"name" => "my_name", "pass" => "my_password", "oid" => "929284", "type" => "2"}).
184
+ should have_been_made
185
+ end
186
+ end
187
+ end
188
+
62
189
  end
@@ -6,4 +6,17 @@ describe MtGox do
6
6
  MtGox.new.should be_a MtGox::Client
7
7
  end
8
8
  end
9
+
10
+ describe ".configure" do
11
+ it "should set 'name' and 'pass'" do
12
+ MtGox.configure do |c|
13
+ c.name="username"
14
+ c.pass="password"
15
+ end
16
+
17
+ MtGox.name.should == "username"
18
+ MtGox.pass.should == "password"
19
+ end
20
+ end
21
+
9
22
  end
metadata CHANGED
@@ -2,7 +2,7 @@
2
2
  name: mtgox
3
3
  version: !ruby/object:Gem::Version
4
4
  prerelease:
5
- version: 0.0.1
5
+ version: 0.1.0
6
6
  platform: ruby
7
7
  authors:
8
8
  - Erik Michaels-Ober
@@ -10,11 +10,12 @@ autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
12
 
13
- date: 2011-06-08 00:00:00 -07:00
13
+ date: 2011-06-18 00:00:00 -07:00
14
14
  default_executable:
15
15
  dependencies:
16
16
  - !ruby/object:Gem::Dependency
17
17
  name: ZenTest
18
+ prerelease: false
18
19
  requirement: &id001 !ruby/object:Gem::Requirement
19
20
  none: false
20
21
  requirements:
@@ -22,10 +23,10 @@ dependencies:
22
23
  - !ruby/object:Gem::Version
23
24
  version: "4.5"
24
25
  type: :development
25
- prerelease: false
26
26
  version_requirements: *id001
27
27
  - !ruby/object:Gem::Dependency
28
28
  name: maruku
29
+ prerelease: false
29
30
  requirement: &id002 !ruby/object:Gem::Requirement
30
31
  none: false
31
32
  requirements:
@@ -33,10 +34,10 @@ dependencies:
33
34
  - !ruby/object:Gem::Version
34
35
  version: "0.6"
35
36
  type: :development
36
- prerelease: false
37
37
  version_requirements: *id002
38
38
  - !ruby/object:Gem::Dependency
39
39
  name: rake
40
+ prerelease: false
40
41
  requirement: &id003 !ruby/object:Gem::Requirement
41
42
  none: false
42
43
  requirements:
@@ -44,10 +45,10 @@ dependencies:
44
45
  - !ruby/object:Gem::Version
45
46
  version: "0.9"
46
47
  type: :development
47
- prerelease: false
48
48
  version_requirements: *id003
49
49
  - !ruby/object:Gem::Dependency
50
50
  name: rspec
51
+ prerelease: false
51
52
  requirement: &id004 !ruby/object:Gem::Requirement
52
53
  none: false
53
54
  requirements:
@@ -55,10 +56,10 @@ dependencies:
55
56
  - !ruby/object:Gem::Version
56
57
  version: "2.6"
57
58
  type: :development
58
- prerelease: false
59
59
  version_requirements: *id004
60
60
  - !ruby/object:Gem::Dependency
61
61
  name: simplecov
62
+ prerelease: false
62
63
  requirement: &id005 !ruby/object:Gem::Requirement
63
64
  none: false
64
65
  requirements:
@@ -66,10 +67,10 @@ dependencies:
66
67
  - !ruby/object:Gem::Version
67
68
  version: "0.4"
68
69
  type: :development
69
- prerelease: false
70
70
  version_requirements: *id005
71
71
  - !ruby/object:Gem::Dependency
72
72
  name: webmock
73
+ prerelease: false
73
74
  requirement: &id006 !ruby/object:Gem::Requirement
74
75
  none: false
75
76
  requirements:
@@ -77,10 +78,10 @@ dependencies:
77
78
  - !ruby/object:Gem::Version
78
79
  version: "1.6"
79
80
  type: :development
80
- prerelease: false
81
81
  version_requirements: *id006
82
82
  - !ruby/object:Gem::Dependency
83
83
  name: yard
84
+ prerelease: false
84
85
  requirement: &id007 !ruby/object:Gem::Requirement
85
86
  none: false
86
87
  requirements:
@@ -88,10 +89,10 @@ dependencies:
88
89
  - !ruby/object:Gem::Version
89
90
  version: "0.7"
90
91
  type: :development
91
- prerelease: false
92
92
  version_requirements: *id007
93
93
  - !ruby/object:Gem::Dependency
94
94
  name: faraday
95
+ prerelease: false
95
96
  requirement: &id008 !ruby/object:Gem::Requirement
96
97
  none: false
97
98
  requirements:
@@ -99,10 +100,10 @@ dependencies:
99
100
  - !ruby/object:Gem::Version
100
101
  version: 0.6.1
101
102
  type: :runtime
102
- prerelease: false
103
103
  version_requirements: *id008
104
104
  - !ruby/object:Gem::Dependency
105
105
  name: faraday_middleware
106
+ prerelease: false
106
107
  requirement: &id009 !ruby/object:Gem::Requirement
107
108
  none: false
108
109
  requirements:
@@ -110,10 +111,10 @@ dependencies:
110
111
  - !ruby/object:Gem::Version
111
112
  version: 0.6.3
112
113
  type: :runtime
113
- prerelease: false
114
114
  version_requirements: *id009
115
115
  - !ruby/object:Gem::Dependency
116
116
  name: hashie
117
+ prerelease: false
117
118
  requirement: &id010 !ruby/object:Gem::Requirement
118
119
  none: false
119
120
  requirements:
@@ -121,10 +122,10 @@ dependencies:
121
122
  - !ruby/object:Gem::Version
122
123
  version: 1.0.0
123
124
  type: :runtime
124
- prerelease: false
125
125
  version_requirements: *id010
126
126
  - !ruby/object:Gem::Dependency
127
127
  name: multi_json
128
+ prerelease: false
128
129
  requirement: &id011 !ruby/object:Gem::Requirement
129
130
  none: false
130
131
  requirements:
@@ -132,10 +133,10 @@ dependencies:
132
133
  - !ruby/object:Gem::Version
133
134
  version: 1.0.3
134
135
  type: :runtime
135
- prerelease: false
136
136
  version_requirements: *id011
137
137
  - !ruby/object:Gem::Dependency
138
138
  name: rash
139
+ prerelease: false
139
140
  requirement: &id012 !ruby/object:Gem::Requirement
140
141
  none: false
141
142
  requirements:
@@ -143,7 +144,6 @@ dependencies:
143
144
  - !ruby/object:Gem::Version
144
145
  version: 0.3.0
145
146
  type: :runtime
146
- prerelease: false
147
147
  version_requirements: *id012
148
148
  description: Ruby wrapper for the Mt. Gox Trade API. Mt. Gox allows you to trade US Dollars (USD) for Bitcoins (BTC) or Bitcoins for US Dollars.
149
149
  email: sferik@gmail.com
@@ -158,6 +158,7 @@ files:
158
158
  - .gemtest
159
159
  - .gitignore
160
160
  - .rspec
161
+ - .travis.yml
161
162
  - .yardopts
162
163
  - Gemfile
163
164
  - LICENSE.md
@@ -169,7 +170,12 @@ files:
169
170
  - lib/mtgox/request.rb
170
171
  - lib/mtgox/version.rb
171
172
  - mtgox.gemspec
173
+ - spec/fixtures/buy.json
174
+ - spec/fixtures/cancel.json
172
175
  - spec/fixtures/depth.json
176
+ - spec/fixtures/funds.json
177
+ - spec/fixtures/orders.json
178
+ - spec/fixtures/sell.json
173
179
  - spec/fixtures/ticker.json
174
180
  - spec/fixtures/trades.json
175
181
  - spec/helper.rb
@@ -189,18 +195,12 @@ required_ruby_version: !ruby/object:Gem::Requirement
189
195
  requirements:
190
196
  - - ">="
191
197
  - !ruby/object:Gem::Version
192
- hash: 2606027603205718995
193
- segments:
194
- - 0
195
198
  version: "0"
196
199
  required_rubygems_version: !ruby/object:Gem::Requirement
197
200
  none: false
198
201
  requirements:
199
202
  - - ">="
200
203
  - !ruby/object:Gem::Version
201
- hash: 2606027603205718995
202
- segments:
203
- - 0
204
204
  version: "0"
205
205
  requirements: []
206
206
 
@@ -210,7 +210,12 @@ signing_key:
210
210
  specification_version: 3
211
211
  summary: Ruby wrapper for the Mt. Gox Trade API
212
212
  test_files:
213
+ - spec/fixtures/buy.json
214
+ - spec/fixtures/cancel.json
213
215
  - spec/fixtures/depth.json
216
+ - spec/fixtures/funds.json
217
+ - spec/fixtures/orders.json
218
+ - spec/fixtures/sell.json
214
219
  - spec/fixtures/ticker.json
215
220
  - spec/fixtures/trades.json
216
221
  - spec/helper.rb