mtgox 0.7.1 → 0.7.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.
- data/.rspec +0 -2
- data/.travis.yml +1 -5
- data/Gemfile +2 -2
- data/README.md +49 -67
- data/Rakefile +0 -0
- data/lib/mtgox/client.rb +21 -15
- data/lib/mtgox/configuration.rb +4 -4
- data/lib/mtgox/connection.rb +1 -1
- data/lib/mtgox/request.rb +21 -1
- data/lib/mtgox/version.rb +28 -1
- data/mtgox.gemspec +17 -21
- data/spec/faraday/response_spec.rb +1 -1
- data/spec/fixtures/address.json +1 -0
- data/spec/helper.rb +33 -0
- data/spec/mtgox/client_spec.rb +69 -51
- data/spec/mtgox_spec.rb +5 -5
- metadata +54 -65
- data/.autotest +0 -1
data/.rspec
CHANGED
data/.travis.yml
CHANGED
data/Gemfile
CHANGED
data/README.md
CHANGED
@@ -1,50 +1,37 @@
|
|
1
1
|
# Ruby wrapper for the Mt. Gox Trade API
|
2
|
-
|
3
2
|
Mt. Gox allows you to trade US Dollars (USD) for Bitcoins (BTC) or Bitcoins for
|
4
3
|
US Dollars.
|
5
4
|
|
6
|
-
Installation
|
7
|
-
------------
|
5
|
+
## <a name="installation"></a>Installation
|
8
6
|
gem install mtgox
|
9
7
|
|
10
|
-
Alias
|
11
|
-
-----
|
8
|
+
## <a name="alias"></a>Alias
|
12
9
|
After installing the gem, you can get the current price for 1 BTC in USD by
|
13
10
|
typing `btc` in your bash shell simply by setting the following alias:
|
14
11
|
|
15
|
-
alias btc='ruby -r rubygems -r mtgox -e "puts MtGox.ticker.
|
12
|
+
alias btc='ruby -r rubygems -r mtgox -e "puts MtGox.ticker.sell"'
|
16
13
|
|
17
|
-
Documentation
|
18
|
-
|
19
|
-
[http://rdoc.info/gems/mtgox](http://rdoc.info/gems/mtgox)
|
14
|
+
## <a name="documentation"></a>Documentation
|
15
|
+
[http://rdoc.info/gems/mtgox][documentation]
|
20
16
|
|
21
|
-
|
22
|
-
------
|
23
|
-
If you find this library useful, please consider sending a donation to the
|
24
|
-
author, which you can do using the following script:
|
17
|
+
[documentation]: http://rdoc.info/gems/mtgox
|
25
18
|
|
26
|
-
|
27
|
-
|
19
|
+
## <a name="ci"></a>Continuous Integration
|
20
|
+
[][ci]
|
28
21
|
|
29
|
-
|
30
|
-
MtGox.configure do |config|
|
31
|
-
config.name = YOUR_MTGOX_USERNAME
|
32
|
-
config.pass = YOUR_MTGOX_PASSWORD
|
33
|
-
end
|
22
|
+
[ci]: http://travis-ci.org/sferik/mtgox
|
34
23
|
|
35
|
-
|
24
|
+
## <a name="dependencies"></a>Dependency Status
|
25
|
+
[][gemnasium]
|
36
26
|
|
37
|
-
|
38
|
-
----------------------
|
39
|
-
[](http://travis-ci.org/sferik/mtgox)
|
27
|
+
[gemnasium]: https://gemnasium.com/sferik/mtgox
|
40
28
|
|
41
|
-
Usage Examples
|
42
|
-
--------------
|
29
|
+
## <a name="examples"></a>Usage Examples
|
43
30
|
require 'rubygems'
|
44
31
|
require 'mtgox'
|
45
32
|
|
46
33
|
# Fetch the latest price for 1 BTC in USD
|
47
|
-
puts MtGox.ticker.
|
34
|
+
puts MtGox.ticker.sell
|
48
35
|
|
49
36
|
# Fetch open asks
|
50
37
|
puts MtGox.asks
|
@@ -57,8 +44,8 @@ Usage Examples
|
|
57
44
|
|
58
45
|
# Certain methods require authentication
|
59
46
|
MtGox.configure do |config|
|
60
|
-
config.
|
61
|
-
config.
|
47
|
+
config.key = YOUR_MTGOX_KEY
|
48
|
+
config.secret = YOUR_MTGOX_SECRET
|
62
49
|
end
|
63
50
|
|
64
51
|
# Fetch your current balance
|
@@ -76,11 +63,11 @@ Usage Examples
|
|
76
63
|
# Withdraw 1 BTC from your account
|
77
64
|
MtGox.withdraw! 1.0, "1KxSo9bGBfPVFEtWNLpnUK1bfLNNT4q31L"
|
78
65
|
|
79
|
-
Contributing
|
80
|
-
|
81
|
-
|
82
|
-
|
83
|
-
|
66
|
+
## <a name="contributing"></a>Contributing
|
67
|
+
In the spirit of [free software][free-sw], **everyone** is encouraged to help
|
68
|
+
improve this project.
|
69
|
+
|
70
|
+
[free-sw]: http://www.fsf.org/licensing/essays/free-sw.html
|
84
71
|
|
85
72
|
Here are some ways *you* can contribute:
|
86
73
|
|
@@ -92,48 +79,43 @@ Here are some ways *you* can contribute:
|
|
92
79
|
* by writing code (**no patch is too small**: fix typos, add comments, clean up
|
93
80
|
inconsistent whitespace)
|
94
81
|
* by refactoring code
|
95
|
-
* by closing [issues]
|
82
|
+
* by closing [issues][]
|
96
83
|
* by reviewing patches
|
97
|
-
|
98
|
-
|
99
|
-
|
100
|
-
Submitting an Issue
|
101
|
-
|
102
|
-
|
103
|
-
|
104
|
-
|
105
|
-
|
106
|
-
|
107
|
-
|
108
|
-
|
109
|
-
|
110
|
-
|
111
|
-
Submitting a Pull Request
|
112
|
-
-------------------------
|
84
|
+
|
85
|
+
[issues]: https://github.com/sferik/mtgox/issues
|
86
|
+
|
87
|
+
## <a name="issues"></a>Submitting an Issue
|
88
|
+
We use the [GitHub issue tracker][issues] to track bugs and features. Before
|
89
|
+
submitting a bug report or feature request, check to make sure it hasn't
|
90
|
+
already been submitted. You can indicate support for an existing issue by
|
91
|
+
voting it up. When submitting a bug report, please include a [Gist][gist] that
|
92
|
+
includes a stack trace and any details that may be necessary to reproduce the
|
93
|
+
bug, including your gem version, Ruby version, and operating system. Ideally, a
|
94
|
+
bug report should include a pull request with failing specs.
|
95
|
+
|
96
|
+
[gist]: https://gist.github.com/
|
97
|
+
|
98
|
+
## <a name="pulls"></a>Submitting a Pull Request
|
113
99
|
1. Fork the project.
|
114
100
|
2. Create a topic branch.
|
115
101
|
3. Implement your feature or bug fix.
|
116
102
|
4. Add documentation for your feature or bug fix.
|
117
|
-
5. Run
|
118
|
-
|
103
|
+
5. Run `bundle exec rake doc:yard`. If your changes are not 100% documented, go
|
104
|
+
back to step 4.
|
119
105
|
6. Add specs for your feature or bug fix.
|
120
|
-
7. Run
|
121
|
-
|
106
|
+
7. Run `bundle exec rake spec`. If your changes are not 100% covered, go back
|
107
|
+
to step 6.
|
122
108
|
8. Commit and push your changes.
|
123
109
|
9. Submit a pull request. Please do not include changes to the gemspec,
|
124
110
|
version, or history file. (If you want to create your own version for some
|
125
111
|
reason, please do so in a separate commit.)
|
126
112
|
|
127
|
-
Supported
|
128
|
-
|
129
|
-
|
130
|
-
against](http://travis-ci.org/sferik/mtgox) the following Ruby implementations:
|
113
|
+
## <a name="versions"></a>Supported Ruby Versions
|
114
|
+
This library aims to support and is [tested against][ci] the following Ruby
|
115
|
+
implementations:
|
131
116
|
|
132
|
-
* Ruby 1.8.7
|
133
|
-
* Ruby 1.9.1
|
134
117
|
* Ruby 1.9.2
|
135
|
-
* Ruby
|
136
|
-
* JRuby 1.6
|
118
|
+
* Ruby 1.9.3
|
137
119
|
|
138
120
|
If something doesn't work on one of these interpreters, it should be considered
|
139
121
|
a bug.
|
@@ -149,7 +131,7 @@ implementation, you will be personally responsible for providing patches in a
|
|
149
131
|
timely fashion. If critical issues for a particular implementation exist at the
|
150
132
|
time of a major release, support for that Ruby version may be dropped.
|
151
133
|
|
152
|
-
Copyright
|
153
|
-
|
154
|
-
|
155
|
-
|
134
|
+
## <a name="copyright"></a>Copyright
|
135
|
+
Copyright (c) 2011 Erik Michaels-Ober. See [LICENSE][] for details.
|
136
|
+
|
137
|
+
[license]: https://github.com/sferik/mtgox/blob/master/LICENSE.md
|
data/Rakefile
CHANGED
File without changes
|
data/lib/mtgox/client.rb
CHANGED
@@ -18,6 +18,16 @@ module MtGox
|
|
18
18
|
|
19
19
|
ORDER_TYPES = {:sell => 1, :buy => 2}
|
20
20
|
|
21
|
+
# Fetch a deposit address
|
22
|
+
# @authenticated true
|
23
|
+
# @return [String]
|
24
|
+
# @example
|
25
|
+
# MtGox.address
|
26
|
+
def address
|
27
|
+
post('/api/0/btcAddress.php')['addr']
|
28
|
+
end
|
29
|
+
|
30
|
+
|
21
31
|
# Fetch the latest ticker data
|
22
32
|
#
|
23
33
|
# @authenticated false
|
@@ -25,7 +35,7 @@ module MtGox
|
|
25
35
|
# @example
|
26
36
|
# MtGox.ticker
|
27
37
|
def ticker
|
28
|
-
ticker = get('/
|
38
|
+
ticker = get('/api/0/data/ticker.php')['ticker']
|
29
39
|
Ticker.instance.buy = ticker['buy'].to_f
|
30
40
|
Ticker.instance.high = ticker['high'].to_f
|
31
41
|
Ticker.instance.price = ticker['last'].to_f
|
@@ -42,7 +52,7 @@ module MtGox
|
|
42
52
|
# @example
|
43
53
|
# MtGox.offers
|
44
54
|
def offers
|
45
|
-
offers = get('/
|
55
|
+
offers = get('/api/0/data/getDepth.php')
|
46
56
|
asks = offers['asks'].sort_by do |ask|
|
47
57
|
ask[0].to_f
|
48
58
|
end.map! do |ask|
|
@@ -109,7 +119,7 @@ module MtGox
|
|
109
119
|
# @example
|
110
120
|
# MtGox.trades
|
111
121
|
def trades
|
112
|
-
get('/
|
122
|
+
get('/api/0/data/getTrades.php').sort_by{|trade| trade['date']}.map do |trade|
|
113
123
|
Trade.new(trade)
|
114
124
|
end
|
115
125
|
end
|
@@ -121,7 +131,7 @@ module MtGox
|
|
121
131
|
# @example
|
122
132
|
# MtGox.balance
|
123
133
|
def balance
|
124
|
-
parse_balance(post('/
|
134
|
+
parse_balance(post('/api/0/getFunds.php', {}))
|
125
135
|
end
|
126
136
|
|
127
137
|
# Fetch your open orders, both buys and sells, for network efficiency
|
@@ -131,7 +141,7 @@ module MtGox
|
|
131
141
|
# @example
|
132
142
|
# MtGox.orders
|
133
143
|
def orders
|
134
|
-
parse_orders(post('/
|
144
|
+
parse_orders(post('/api/0/getOrders.php', {})['orders'])
|
135
145
|
end
|
136
146
|
|
137
147
|
# Fetch your open buys
|
@@ -164,7 +174,7 @@ module MtGox
|
|
164
174
|
# # Buy one bitcoin for $0.011
|
165
175
|
# MtGox.buy! 1.0, 0.011
|
166
176
|
def buy!(amount, price)
|
167
|
-
parse_orders(post('/
|
177
|
+
parse_orders(post('/api/0/buyBTC.php', {:amount => amount, :price => price})['orders'])
|
168
178
|
end
|
169
179
|
|
170
180
|
# Place a limit order to sell BTC
|
@@ -177,7 +187,7 @@ module MtGox
|
|
177
187
|
# # Sell one bitcoin for $100
|
178
188
|
# MtGox.sell! 1.0, 100.0
|
179
189
|
def sell!(amount, price)
|
180
|
-
parse_orders(post('/
|
190
|
+
parse_orders(post('/api/0/sellBTC.php', {:amount => amount, :price => price})['orders'])
|
181
191
|
end
|
182
192
|
|
183
193
|
# Cancel an open order
|
@@ -200,13 +210,13 @@ module MtGox
|
|
200
210
|
def cancel(args)
|
201
211
|
if args.is_a?(Hash)
|
202
212
|
order = args.delete_if{|k, v| !['oid', 'type'].include?(k.to_s)}
|
203
|
-
parse_orders(post('/
|
213
|
+
parse_orders(post('/api/0/cancelOrder.php', order)['orders'])
|
204
214
|
else
|
205
|
-
orders = post('/
|
215
|
+
orders = post('/api/0/getOrders.php', {})['orders']
|
206
216
|
order = orders.find{|order| order['oid'] == args.to_s}
|
207
217
|
if order
|
208
218
|
order = order.delete_if{|k, v| !['oid', 'type'].include?(k.to_s)}
|
209
|
-
parse_orders(post('/
|
219
|
+
parse_orders(post('/api/0/cancelOrder.php', order)['orders'])
|
210
220
|
else
|
211
221
|
raise Faraday::Error::ResourceNotFound, {:status => 404, :headers => {}, :body => 'Order not found.'}
|
212
222
|
end
|
@@ -223,7 +233,7 @@ module MtGox
|
|
223
233
|
# # Withdraw 1 BTC from your account
|
224
234
|
# MtGox.withdraw! 1.0, '1KxSo9bGBfPVFEtWNLpnUK1bfLNNT4q31L'
|
225
235
|
def withdraw!(amount, btca)
|
226
|
-
parse_balance(post('/
|
236
|
+
parse_balance(post('/api/0/withdraw.php', {:group1 => 'BTC', :amount => amount, :btca => btca}))
|
227
237
|
end
|
228
238
|
|
229
239
|
private
|
@@ -248,9 +258,5 @@ module MtGox
|
|
248
258
|
end
|
249
259
|
{:buys => buys, :sells => sells}
|
250
260
|
end
|
251
|
-
|
252
|
-
def pass_params
|
253
|
-
{:name => MtGox.username, :pass => MtGox.password}
|
254
|
-
end
|
255
261
|
end
|
256
262
|
end
|
data/lib/mtgox/configuration.rb
CHANGED
@@ -5,8 +5,8 @@ module MtGox
|
|
5
5
|
# An array of valid keys in the options hash when configuring a {MtGox::Client}
|
6
6
|
VALID_OPTIONS_KEYS = [
|
7
7
|
:commission,
|
8
|
-
:
|
9
|
-
:
|
8
|
+
:key,
|
9
|
+
:secret,
|
10
10
|
]
|
11
11
|
|
12
12
|
DEFAULT_COMMISSION = 0.0065.freeze
|
@@ -33,8 +33,8 @@ module MtGox
|
|
33
33
|
# Reset all configuration options to defaults
|
34
34
|
def reset
|
35
35
|
self.commission = DEFAULT_COMMISSION
|
36
|
-
self.
|
37
|
-
self.
|
36
|
+
self.key = nil
|
37
|
+
self.secret = nil
|
38
38
|
self
|
39
39
|
end
|
40
40
|
end
|
data/lib/mtgox/connection.rb
CHANGED
data/lib/mtgox/request.rb
CHANGED
@@ -1,3 +1,5 @@
|
|
1
|
+
require 'base64'
|
2
|
+
|
1
3
|
module MtGox
|
2
4
|
module Request
|
3
5
|
def get(path, options={})
|
@@ -17,10 +19,28 @@ module MtGox
|
|
17
19
|
request.url(path, options)
|
18
20
|
when :post
|
19
21
|
request.path = path
|
20
|
-
request.body = options
|
22
|
+
request.body = body_from_options(options)
|
23
|
+
request.headers = headers(request.body)
|
21
24
|
end
|
22
25
|
end
|
23
26
|
response.body
|
24
27
|
end
|
28
|
+
|
29
|
+
def headers(request)
|
30
|
+
signature = Base64.strict_encode64(
|
31
|
+
OpenSSL::HMAC.digest 'sha512',
|
32
|
+
Base64.decode64(MtGox.secret),
|
33
|
+
request
|
34
|
+
)
|
35
|
+
{'Rest-Key' => MtGox.key, 'Rest-Sign' => signature}
|
36
|
+
end
|
37
|
+
|
38
|
+
def body_from_options(options)
|
39
|
+
add_nonce(options).collect{|k, v| "#{k}=#{v}"} * '&'
|
40
|
+
end
|
41
|
+
|
42
|
+
def add_nonce(options)
|
43
|
+
options.merge!({:nonce => (Time.now.to_f * 1000000).to_i})
|
44
|
+
end
|
25
45
|
end
|
26
46
|
end
|
data/lib/mtgox/version.rb
CHANGED
@@ -1,3 +1,30 @@
|
|
1
1
|
module MtGox
|
2
|
-
|
2
|
+
class Version
|
3
|
+
|
4
|
+
# @return [Integer]
|
5
|
+
def self.major
|
6
|
+
0
|
7
|
+
end
|
8
|
+
|
9
|
+
# @return [Integer]
|
10
|
+
def self.minor
|
11
|
+
7
|
12
|
+
end
|
13
|
+
|
14
|
+
# @return [Integer]
|
15
|
+
def self.patch
|
16
|
+
2
|
17
|
+
end
|
18
|
+
|
19
|
+
# @return [String, NilClass]
|
20
|
+
def self.pre
|
21
|
+
nil
|
22
|
+
end
|
23
|
+
|
24
|
+
# @return [String]
|
25
|
+
def self.to_s
|
26
|
+
[major, minor, patch, pre].compact.join('.')
|
27
|
+
end
|
28
|
+
|
29
|
+
end
|
3
30
|
end
|
data/mtgox.gemspec
CHANGED
@@ -1,29 +1,25 @@
|
|
1
|
-
#
|
1
|
+
# encoding: utf-8
|
2
2
|
require File.expand_path('../lib/mtgox/version', __FILE__)
|
3
3
|
|
4
4
|
Gem::Specification.new do |gem|
|
5
|
-
gem.
|
6
|
-
gem.
|
5
|
+
gem.add_dependency 'faraday', '~> 0.7'
|
6
|
+
gem.add_dependency 'faraday_middleware', '~> 0.7'
|
7
|
+
gem.add_dependency 'multi_json', '~> 1.0'
|
8
|
+
gem.add_development_dependency 'json'
|
9
|
+
gem.add_development_dependency 'rake'
|
10
|
+
gem.add_development_dependency 'rdiscount'
|
11
|
+
gem.add_development_dependency 'rspec'
|
12
|
+
gem.add_development_dependency 'webmock'
|
13
|
+
gem.add_development_dependency 'yard'
|
7
14
|
gem.author = "Erik Michaels-Ober"
|
15
|
+
gem.description = %q{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.}
|
8
16
|
gem.email = 'sferik@gmail.com'
|
17
|
+
gem.files = `git ls-files`.split("\n")
|
9
18
|
gem.homepage = 'https://github.com/sferik/mtgox'
|
10
|
-
gem.
|
11
|
-
gem.description = %q{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.}
|
12
|
-
|
13
|
-
gem.files = `git ls-files`.split("\n")
|
14
|
-
gem.test_files = `git ls-files -- {test,spec,features}/*`.split("\n")
|
15
|
-
gem.executables = `git ls-files -- bin/*`.split("\n").map{|f| File.basename(f)}
|
19
|
+
gem.name = 'mtgox'
|
16
20
|
gem.require_paths = ['lib']
|
17
|
-
|
18
|
-
gem.
|
19
|
-
gem.
|
20
|
-
gem.
|
21
|
-
gem.add_development_dependency 'rspec', '~> 2.6'
|
22
|
-
gem.add_development_dependency 'simplecov', '~> 0.4'
|
23
|
-
gem.add_development_dependency 'webmock', '~> 1.6'
|
24
|
-
gem.add_development_dependency 'yard', '~> 0.7'
|
25
|
-
|
26
|
-
gem.add_runtime_dependency 'faraday', '~> 0.7.4'
|
27
|
-
gem.add_runtime_dependency 'faraday_middleware', '~> 0.7.0'
|
28
|
-
gem.add_runtime_dependency 'multi_json', '~> 1.0.3'
|
21
|
+
gem.required_ruby_version = '>= 1.9.2'
|
22
|
+
gem.summary = %q{Ruby wrapper for the Mt. Gox Trade API}
|
23
|
+
gem.test_files = `git ls-files -- {test,spec,features}/*`.split("\n")
|
24
|
+
gem.version = MtGox::Version.to_s
|
29
25
|
end
|
@@ -0,0 +1 @@
|
|
1
|
+
{"addr": "171dH9Uum6wWLSwH2g8g2yto6SG7NEGyXG"}
|
data/spec/helper.rb
CHANGED
@@ -2,6 +2,7 @@ $:.unshift File.expand_path('..', __FILE__)
|
|
2
2
|
$:.unshift File.expand_path('../../lib', __FILE__)
|
3
3
|
require 'simplecov'
|
4
4
|
SimpleCov.start
|
5
|
+
require 'base64'
|
5
6
|
require 'mtgox'
|
6
7
|
require 'rspec'
|
7
8
|
require 'webmock/rspec'
|
@@ -29,3 +30,35 @@ end
|
|
29
30
|
def fixture(file)
|
30
31
|
File.new(fixture_path + '/' + file)
|
31
32
|
end
|
33
|
+
|
34
|
+
module MtGox
|
35
|
+
module Request
|
36
|
+
private
|
37
|
+
def add_nonce(options)
|
38
|
+
options.merge!({:nonce => 1321745961249676})
|
39
|
+
end
|
40
|
+
end
|
41
|
+
end
|
42
|
+
|
43
|
+
def test_headers(body=test_body)
|
44
|
+
signed_headers(body).merge!(
|
45
|
+
{
|
46
|
+
'Accept' => 'application/json',
|
47
|
+
'Content-Type' => 'application/x-www-form-urlencoded',
|
48
|
+
'User-Agent' => "mtgox gem #{MtGox::Version}",
|
49
|
+
}
|
50
|
+
)
|
51
|
+
end
|
52
|
+
|
53
|
+
def signed_headers(body)
|
54
|
+
signature = Base64.strict_encode64(
|
55
|
+
OpenSSL::HMAC.digest 'sha512',
|
56
|
+
Base64.decode64(MtGox.secret),
|
57
|
+
body
|
58
|
+
)
|
59
|
+
{'Rest-Key' => MtGox.key, 'Rest-Sign' => signature}
|
60
|
+
end
|
61
|
+
|
62
|
+
def test_body(options={})
|
63
|
+
options.merge!({:nonce => 1321745961249676}).collect{|k, v| "#{k}=#{v}"} * '&'
|
64
|
+
end
|
data/spec/mtgox/client_spec.rb
CHANGED
@@ -4,20 +4,34 @@ describe MtGox::Client do
|
|
4
4
|
before do
|
5
5
|
@client = MtGox::Client.new
|
6
6
|
MtGox.configure do |config|
|
7
|
-
config.
|
8
|
-
config.
|
7
|
+
config.key = "key"
|
8
|
+
config.secret = "secret"
|
9
9
|
end
|
10
10
|
end
|
11
11
|
|
12
|
+
describe '#address' do
|
13
|
+
before do
|
14
|
+
stub_post('/api/0/btcAddress.php').
|
15
|
+
to_return(:status => 200, :body => fixture('address.json'))
|
16
|
+
end
|
17
|
+
|
18
|
+
it "should fetch a deposit address" do
|
19
|
+
address = @client.address
|
20
|
+
a_post('/api/0/btcAddress.php').
|
21
|
+
should have_been_made
|
22
|
+
address.should == '171dH9Uum6wWLSwH2g8g2yto6SG7NEGyXG'
|
23
|
+
end
|
24
|
+
end
|
25
|
+
|
12
26
|
describe '#ticker' do
|
13
27
|
before do
|
14
|
-
stub_get('/
|
28
|
+
stub_get('/api/0/data/ticker.php').
|
15
29
|
to_return(:status => 200, :body => fixture('ticker.json'))
|
16
30
|
end
|
17
31
|
|
18
32
|
it "should fetch the ticker" do
|
19
33
|
ticker = @client.ticker
|
20
|
-
a_get('/
|
34
|
+
a_get('/api/0/data/ticker.php').
|
21
35
|
should have_been_made
|
22
36
|
ticker.buy.should == 26.4
|
23
37
|
ticker.sell.should == 26.6099
|
@@ -30,14 +44,14 @@ describe MtGox::Client do
|
|
30
44
|
|
31
45
|
describe 'depth methods' do
|
32
46
|
before :each do
|
33
|
-
stub_get('/
|
47
|
+
stub_get('/api/0/data/getDepth.php').
|
34
48
|
to_return(:status => 200, :body => fixture('depth.json'))
|
35
49
|
end
|
36
50
|
|
37
51
|
describe '#asks' do
|
38
52
|
it "should fetch open asks" do
|
39
53
|
asks = @client.asks
|
40
|
-
a_get('/
|
54
|
+
a_get('/api/0/data/getDepth.php').
|
41
55
|
should have_been_made
|
42
56
|
asks.last.price.should == 23.75
|
43
57
|
asks.last.eprice.should == 23.905385002516354
|
@@ -54,7 +68,7 @@ describe MtGox::Client do
|
|
54
68
|
describe "#bids" do
|
55
69
|
it "should fetch open bids" do
|
56
70
|
bids = @client.bids
|
57
|
-
a_get('/
|
71
|
+
a_get('/api/0/data/getDepth.php').
|
58
72
|
should have_been_made
|
59
73
|
bids.last.price.should == 14.62101
|
60
74
|
bids.last.eprice.should == 14.525973435000001
|
@@ -70,7 +84,7 @@ describe MtGox::Client do
|
|
70
84
|
describe "#offers" do
|
71
85
|
it "should fetch both bids and asks, with only one call" do
|
72
86
|
offers = @client.offers
|
73
|
-
a_get('/
|
87
|
+
a_get('/api/0/data/getDepth.php').
|
74
88
|
should have_been_made.once
|
75
89
|
offers[:asks].last.price.should == 23.75
|
76
90
|
offers[:asks].last.eprice.should == 23.905385002516354
|
@@ -84,7 +98,7 @@ describe MtGox::Client do
|
|
84
98
|
describe '#min_ask' do
|
85
99
|
it "should fetch the lowest priced ask" do
|
86
100
|
min_ask = @client.min_ask
|
87
|
-
a_get('/
|
101
|
+
a_get('/api/0/data/getDepth.php').
|
88
102
|
should have_been_made.once
|
89
103
|
min_ask.price.should == 17.00009
|
90
104
|
min_ask.eprice.should == 17.11131353799698
|
@@ -95,7 +109,7 @@ describe MtGox::Client do
|
|
95
109
|
describe '#max_bid' do
|
96
110
|
it "should fetch the highest priced bid" do
|
97
111
|
max_bid = @client.max_bid
|
98
|
-
a_get('/
|
112
|
+
a_get('/api/0/data/getDepth.php').
|
99
113
|
should have_been_made.once
|
100
114
|
max_bid.price.should == 17.0
|
101
115
|
max_bid.eprice.should == 16.8895
|
@@ -107,37 +121,32 @@ describe MtGox::Client do
|
|
107
121
|
|
108
122
|
describe '#trades' do
|
109
123
|
before do
|
110
|
-
stub_get('/
|
124
|
+
stub_get('/api/0/data/getTrades.php').
|
111
125
|
to_return(:status => 200, :body => fixture('trades.json'))
|
112
126
|
end
|
113
127
|
|
114
128
|
it "should fetch trades" do
|
115
129
|
trades = @client.trades
|
116
|
-
a_get('/
|
130
|
+
a_get('/api/0/data/getTrades.php').
|
117
131
|
should have_been_made
|
118
132
|
trades.last.date.should == Time.utc(2011, 6, 27, 18, 28, 8)
|
119
133
|
trades.last.price.should == 17.00009
|
120
134
|
trades.last.amount.should == 0.5
|
121
135
|
trades.last.id.should == 1309199288687054
|
122
136
|
end
|
123
|
-
|
124
|
-
it "should be sorted in chronological order" do
|
125
|
-
trades = @client.trades
|
126
|
-
trades.sort_by(&:date).should == trades
|
127
|
-
end
|
128
137
|
end
|
129
138
|
|
130
139
|
describe '#balance' do
|
131
140
|
before do
|
132
|
-
stub_post('/
|
133
|
-
with(:body =>
|
141
|
+
stub_post('/api/0/getFunds.php').
|
142
|
+
with(:body => test_body, :headers => test_headers).
|
134
143
|
to_return(:status => 200, :body => fixture('balance.json'))
|
135
144
|
end
|
136
145
|
|
137
146
|
it "should fetch balance" do
|
138
147
|
balance = @client.balance
|
139
|
-
a_post("/
|
140
|
-
with(:body =>
|
148
|
+
a_post("/api/0/getFunds.php").
|
149
|
+
with(:body => test_body, :headers => test_headers).
|
141
150
|
should have_been_made
|
142
151
|
balance.first.currency.should == "BTC"
|
143
152
|
balance.first.amount.should == 22.0
|
@@ -148,16 +157,16 @@ describe MtGox::Client do
|
|
148
157
|
|
149
158
|
describe "order methods" do
|
150
159
|
before :each do
|
151
|
-
stub_post('/
|
152
|
-
with(:body =>
|
160
|
+
stub_post('/api/0/getOrders.php').
|
161
|
+
with(:body => test_body, :headers => test_headers).
|
153
162
|
to_return(:status => 200, :body => fixture('orders.json'))
|
154
163
|
end
|
155
164
|
|
156
165
|
describe "#buys" do
|
157
166
|
it "should fetch orders" do
|
158
167
|
buys = @client.buys
|
159
|
-
a_post("/
|
160
|
-
with(:body =>
|
168
|
+
a_post("/api/0/getOrders.php").
|
169
|
+
with(:body => test_body, :headers => test_headers).
|
161
170
|
should have_been_made
|
162
171
|
buys.last.price.should == 7
|
163
172
|
buys.last.date.should == Time.utc(2011, 6, 27, 18, 20, 38)
|
@@ -167,8 +176,8 @@ describe MtGox::Client do
|
|
167
176
|
describe "#sells" do
|
168
177
|
it "should fetch sells" do
|
169
178
|
sells = @client.sells
|
170
|
-
a_post("/
|
171
|
-
with(:body =>
|
179
|
+
a_post("/api/0/getOrders.php").
|
180
|
+
with(:body => test_body, :headers => test_headers).
|
172
181
|
should have_been_made
|
173
182
|
sells.last.price.should == 99.0
|
174
183
|
sells.last.date.should == Time.utc(2011, 6, 27, 18, 20, 20)
|
@@ -178,8 +187,8 @@ describe MtGox::Client do
|
|
178
187
|
describe "#orders" do
|
179
188
|
it "should fetch both buys and sells, with only one call" do
|
180
189
|
orders = @client.orders
|
181
|
-
a_post("/
|
182
|
-
with(:body =>
|
190
|
+
a_post("/api/0/getOrders.php").
|
191
|
+
with(:body => test_body, :headers => test_headers).
|
183
192
|
should have_been_made
|
184
193
|
orders[:buys].last.price.should == 7.0
|
185
194
|
orders[:buys].last.date.should == Time.utc(2011, 6, 27, 18, 20, 38)
|
@@ -191,15 +200,17 @@ describe MtGox::Client do
|
|
191
200
|
|
192
201
|
describe "#buy!" do
|
193
202
|
before do
|
194
|
-
|
195
|
-
|
203
|
+
body = test_body({"amount" => "0.88", "price" => "0.89"})
|
204
|
+
stub_post('/api/0/buyBTC.php').
|
205
|
+
with(:body => body, :headers => test_headers(body)).
|
196
206
|
to_return(:status => 200, :body => fixture('buy.json'))
|
197
207
|
end
|
198
208
|
|
199
209
|
it "should place a bid" do
|
200
210
|
buy = @client.buy!(0.88, 0.89)
|
201
|
-
|
202
|
-
|
211
|
+
body = test_body({"amount" => "0.88", "price" => "0.89"})
|
212
|
+
a_post("/api/0/buyBTC.php").
|
213
|
+
with(:body => body, :headers => test_headers(body)).
|
203
214
|
should have_been_made
|
204
215
|
buy[:buys].last.price.should == 2.0
|
205
216
|
buy[:buys].last.date.should == Time.utc(2011, 6, 27, 18, 26, 21)
|
@@ -210,15 +221,17 @@ describe MtGox::Client do
|
|
210
221
|
|
211
222
|
describe "#sell!" do
|
212
223
|
before do
|
213
|
-
|
214
|
-
|
224
|
+
body = test_body({"amount" => "0.88", "price" => "89.0"})
|
225
|
+
stub_post('/api/0/sellBTC.php').
|
226
|
+
with(:body => body, :headers => test_headers(body)).
|
215
227
|
to_return(:status => 200, :body => fixture('sell.json'))
|
216
228
|
end
|
217
229
|
|
218
230
|
it "should place an ask" do
|
231
|
+
body = test_body({"amount" => "0.88", "price" => "89.0"})
|
219
232
|
sell = @client.sell!(0.88, 89.0)
|
220
|
-
a_post("/
|
221
|
-
with(:body =>
|
233
|
+
a_post("/api/0/sellBTC.php").
|
234
|
+
with(:body => body, :headers => test_headers(body)).
|
222
235
|
should have_been_made
|
223
236
|
sell[:buys].last.price.should == 2.0
|
224
237
|
sell[:buys].last.date.should == Time.utc(2011, 6, 27, 18, 26, 21)
|
@@ -229,22 +242,24 @@ describe MtGox::Client do
|
|
229
242
|
|
230
243
|
describe "#cancel" do
|
231
244
|
before do
|
232
|
-
|
233
|
-
|
245
|
+
cancel_body = test_body({"oid" => "bddd042c-e837-4a88-a92e-3b7c05e483df", "type" => "2"})
|
246
|
+
stub_post('/api/0/getOrders.php').
|
247
|
+
with(:body => test_body, :headers => test_headers).
|
234
248
|
to_return(:status => 200, :body => fixture('orders.json'))
|
235
|
-
stub_post('/
|
236
|
-
with(:body =>
|
249
|
+
stub_post('/api/0/cancelOrder.php').
|
250
|
+
with(:body => cancel_body, :headers => test_headers(cancel_body)).
|
237
251
|
to_return(:status => 200, :body => fixture('cancel.json'))
|
238
252
|
end
|
239
253
|
|
240
254
|
context "with a valid oid passed" do
|
241
255
|
it "should cancel an order" do
|
242
256
|
cancel = @client.cancel("bddd042c-e837-4a88-a92e-3b7c05e483df")
|
243
|
-
|
244
|
-
|
257
|
+
cancel_body = test_body({"oid" => "bddd042c-e837-4a88-a92e-3b7c05e483df", "type" => "2"})
|
258
|
+
a_post("/api/0/getOrders.php").
|
259
|
+
with(:body => test_body, :headers => test_headers).
|
245
260
|
should have_been_made.once
|
246
|
-
a_post('/
|
247
|
-
with(:body =>
|
261
|
+
a_post('/api/0/cancelOrder.php').
|
262
|
+
with(:body => cancel_body, :headers => test_headers(cancel_body)).
|
248
263
|
should have_been_made
|
249
264
|
cancel[:buys].last.price.should == 7.0
|
250
265
|
cancel[:buys].last.date.should == Time.utc(2011, 6, 27, 18, 20, 38)
|
@@ -264,8 +279,9 @@ describe MtGox::Client do
|
|
264
279
|
context "with an order passed" do
|
265
280
|
it "should cancel an order" do
|
266
281
|
cancel = @client.cancel({'oid' => "bddd042c-e837-4a88-a92e-3b7c05e483df", 'type' => 2})
|
267
|
-
|
268
|
-
|
282
|
+
body = test_body({"oid" => "bddd042c-e837-4a88-a92e-3b7c05e483df", "type" => "2"})
|
283
|
+
a_post('/api/0/cancelOrder.php').
|
284
|
+
with(:body => body, :headers => test_headers(body)).
|
269
285
|
should have_been_made
|
270
286
|
cancel[:buys].last.price.should == 7.0
|
271
287
|
cancel[:buys].last.date.should == Time.utc(2011, 6, 27, 18, 20, 38)
|
@@ -277,15 +293,17 @@ describe MtGox::Client do
|
|
277
293
|
|
278
294
|
describe "#withdraw!" do
|
279
295
|
before do
|
280
|
-
|
281
|
-
|
296
|
+
body = test_body({"group1" => "BTC", "amount" => "1.0", "btca" => "1KxSo9bGBfPVFEtWNLpnUK1bfLNNT4q31L"})
|
297
|
+
stub_post('/api/0/withdraw.php').
|
298
|
+
with(:body => body, :headers => test_headers(body)).
|
282
299
|
to_return(:status => 200, :body => fixture('withdraw.json'))
|
283
300
|
end
|
284
301
|
|
285
302
|
it "should withdraw funds" do
|
286
303
|
withdraw = @client.withdraw!(1.0, "1KxSo9bGBfPVFEtWNLpnUK1bfLNNT4q31L")
|
287
|
-
|
288
|
-
|
304
|
+
body = test_body({"group1" => "BTC", "amount" => "1.0", "btca" => "1KxSo9bGBfPVFEtWNLpnUK1bfLNNT4q31L"})
|
305
|
+
a_post("/api/0/withdraw.php").
|
306
|
+
with(:body => body, :headers => test_headers(body)).
|
289
307
|
should have_been_made
|
290
308
|
withdraw.first.currency.should == "BTC"
|
291
309
|
withdraw.first.amount.should == 9.0
|
data/spec/mtgox_spec.rb
CHANGED
@@ -8,14 +8,14 @@ describe MtGox do
|
|
8
8
|
end
|
9
9
|
|
10
10
|
describe ".configure" do
|
11
|
-
it "should set '
|
11
|
+
it "should set 'key' and 'secret'" do
|
12
12
|
MtGox.configure do |config|
|
13
|
-
config.
|
14
|
-
config.
|
13
|
+
config.key = "key"
|
14
|
+
config.secret = "secret"
|
15
15
|
end
|
16
16
|
|
17
|
-
MtGox.
|
18
|
-
MtGox.
|
17
|
+
MtGox.key.should == "key"
|
18
|
+
MtGox.secret.should == "secret"
|
19
19
|
end
|
20
20
|
end
|
21
21
|
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: mtgox
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.7.
|
4
|
+
version: 0.7.2
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -9,119 +9,107 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2011-
|
13
|
-
default_executable:
|
12
|
+
date: 2011-12-02 00:00:00.000000000Z
|
14
13
|
dependencies:
|
15
14
|
- !ruby/object:Gem::Dependency
|
16
|
-
name:
|
17
|
-
requirement: &
|
15
|
+
name: faraday
|
16
|
+
requirement: &70341100916500 !ruby/object:Gem::Requirement
|
18
17
|
none: false
|
19
18
|
requirements:
|
20
19
|
- - ~>
|
21
20
|
- !ruby/object:Gem::Version
|
22
|
-
version: '
|
23
|
-
type: :
|
21
|
+
version: '0.7'
|
22
|
+
type: :runtime
|
24
23
|
prerelease: false
|
25
|
-
version_requirements: *
|
24
|
+
version_requirements: *70341100916500
|
26
25
|
- !ruby/object:Gem::Dependency
|
27
|
-
name:
|
28
|
-
requirement: &
|
26
|
+
name: faraday_middleware
|
27
|
+
requirement: &70341100915580 !ruby/object:Gem::Requirement
|
29
28
|
none: false
|
30
29
|
requirements:
|
31
30
|
- - ~>
|
32
31
|
- !ruby/object:Gem::Version
|
33
|
-
version: '0.
|
34
|
-
type: :
|
32
|
+
version: '0.7'
|
33
|
+
type: :runtime
|
35
34
|
prerelease: false
|
36
|
-
version_requirements: *
|
35
|
+
version_requirements: *70341100915580
|
37
36
|
- !ruby/object:Gem::Dependency
|
38
|
-
name:
|
39
|
-
requirement: &
|
37
|
+
name: multi_json
|
38
|
+
requirement: &70341100914960 !ruby/object:Gem::Requirement
|
40
39
|
none: false
|
41
40
|
requirements:
|
42
41
|
- - ~>
|
43
42
|
- !ruby/object:Gem::Version
|
44
|
-
version: '0
|
45
|
-
type: :
|
43
|
+
version: '1.0'
|
44
|
+
type: :runtime
|
46
45
|
prerelease: false
|
47
|
-
version_requirements: *
|
46
|
+
version_requirements: *70341100914960
|
48
47
|
- !ruby/object:Gem::Dependency
|
49
|
-
name:
|
50
|
-
requirement: &
|
48
|
+
name: json
|
49
|
+
requirement: &70341100914260 !ruby/object:Gem::Requirement
|
51
50
|
none: false
|
52
51
|
requirements:
|
53
|
-
- -
|
52
|
+
- - ! '>='
|
54
53
|
- !ruby/object:Gem::Version
|
55
|
-
version: '
|
54
|
+
version: '0'
|
56
55
|
type: :development
|
57
56
|
prerelease: false
|
58
|
-
version_requirements: *
|
57
|
+
version_requirements: *70341100914260
|
59
58
|
- !ruby/object:Gem::Dependency
|
60
|
-
name:
|
61
|
-
requirement: &
|
59
|
+
name: rake
|
60
|
+
requirement: &70341100913100 !ruby/object:Gem::Requirement
|
62
61
|
none: false
|
63
62
|
requirements:
|
64
|
-
- -
|
63
|
+
- - ! '>='
|
65
64
|
- !ruby/object:Gem::Version
|
66
|
-
version: '0
|
65
|
+
version: '0'
|
67
66
|
type: :development
|
68
67
|
prerelease: false
|
69
|
-
version_requirements: *
|
68
|
+
version_requirements: *70341100913100
|
70
69
|
- !ruby/object:Gem::Dependency
|
71
|
-
name:
|
72
|
-
requirement: &
|
70
|
+
name: rdiscount
|
71
|
+
requirement: &70341100911140 !ruby/object:Gem::Requirement
|
73
72
|
none: false
|
74
73
|
requirements:
|
75
|
-
- -
|
74
|
+
- - ! '>='
|
76
75
|
- !ruby/object:Gem::Version
|
77
|
-
version: '
|
76
|
+
version: '0'
|
78
77
|
type: :development
|
79
78
|
prerelease: false
|
80
|
-
version_requirements: *
|
79
|
+
version_requirements: *70341100911140
|
81
80
|
- !ruby/object:Gem::Dependency
|
82
|
-
name:
|
83
|
-
requirement: &
|
81
|
+
name: rspec
|
82
|
+
requirement: &70341100910600 !ruby/object:Gem::Requirement
|
84
83
|
none: false
|
85
84
|
requirements:
|
86
|
-
- -
|
85
|
+
- - ! '>='
|
87
86
|
- !ruby/object:Gem::Version
|
88
|
-
version: '0
|
87
|
+
version: '0'
|
89
88
|
type: :development
|
90
89
|
prerelease: false
|
91
|
-
version_requirements: *
|
92
|
-
- !ruby/object:Gem::Dependency
|
93
|
-
name: faraday
|
94
|
-
requirement: &70114478662280 !ruby/object:Gem::Requirement
|
95
|
-
none: false
|
96
|
-
requirements:
|
97
|
-
- - ~>
|
98
|
-
- !ruby/object:Gem::Version
|
99
|
-
version: 0.7.4
|
100
|
-
type: :runtime
|
101
|
-
prerelease: false
|
102
|
-
version_requirements: *70114478662280
|
90
|
+
version_requirements: *70341100910600
|
103
91
|
- !ruby/object:Gem::Dependency
|
104
|
-
name:
|
105
|
-
requirement: &
|
92
|
+
name: webmock
|
93
|
+
requirement: &70341100910040 !ruby/object:Gem::Requirement
|
106
94
|
none: false
|
107
95
|
requirements:
|
108
|
-
- -
|
96
|
+
- - ! '>='
|
109
97
|
- !ruby/object:Gem::Version
|
110
|
-
version: 0
|
111
|
-
type: :
|
98
|
+
version: '0'
|
99
|
+
type: :development
|
112
100
|
prerelease: false
|
113
|
-
version_requirements: *
|
101
|
+
version_requirements: *70341100910040
|
114
102
|
- !ruby/object:Gem::Dependency
|
115
|
-
name:
|
116
|
-
requirement: &
|
103
|
+
name: yard
|
104
|
+
requirement: &70341100909260 !ruby/object:Gem::Requirement
|
117
105
|
none: false
|
118
106
|
requirements:
|
119
|
-
- -
|
107
|
+
- - ! '>='
|
120
108
|
- !ruby/object:Gem::Version
|
121
|
-
version:
|
122
|
-
type: :
|
109
|
+
version: '0'
|
110
|
+
type: :development
|
123
111
|
prerelease: false
|
124
|
-
version_requirements: *
|
112
|
+
version_requirements: *70341100909260
|
125
113
|
description: Ruby wrapper for the Mt. Gox Trade API. Mt. Gox allows you to trade US
|
126
114
|
Dollars (USD) for Bitcoins (BTC) or Bitcoins for US Dollars.
|
127
115
|
email: sferik@gmail.com
|
@@ -129,7 +117,6 @@ executables: []
|
|
129
117
|
extensions: []
|
130
118
|
extra_rdoc_files: []
|
131
119
|
files:
|
132
|
-
- .autotest
|
133
120
|
- .gemtest
|
134
121
|
- .gitignore
|
135
122
|
- .rspec
|
@@ -161,6 +148,7 @@ files:
|
|
161
148
|
- lib/mtgox/version.rb
|
162
149
|
- mtgox.gemspec
|
163
150
|
- spec/faraday/response_spec.rb
|
151
|
+
- spec/fixtures/address.json
|
164
152
|
- spec/fixtures/balance.json
|
165
153
|
- spec/fixtures/buy.json
|
166
154
|
- spec/fixtures/cancel.json
|
@@ -175,7 +163,6 @@ files:
|
|
175
163
|
- spec/helper.rb
|
176
164
|
- spec/mtgox/client_spec.rb
|
177
165
|
- spec/mtgox_spec.rb
|
178
|
-
has_rdoc: true
|
179
166
|
homepage: https://github.com/sferik/mtgox
|
180
167
|
licenses: []
|
181
168
|
post_install_message:
|
@@ -187,7 +174,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
187
174
|
requirements:
|
188
175
|
- - ! '>='
|
189
176
|
- !ruby/object:Gem::Version
|
190
|
-
version:
|
177
|
+
version: 1.9.2
|
191
178
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
192
179
|
none: false
|
193
180
|
requirements:
|
@@ -196,12 +183,13 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
196
183
|
version: '0'
|
197
184
|
requirements: []
|
198
185
|
rubyforge_project:
|
199
|
-
rubygems_version: 1.
|
186
|
+
rubygems_version: 1.8.10
|
200
187
|
signing_key:
|
201
188
|
specification_version: 3
|
202
189
|
summary: Ruby wrapper for the Mt. Gox Trade API
|
203
190
|
test_files:
|
204
191
|
- spec/faraday/response_spec.rb
|
192
|
+
- spec/fixtures/address.json
|
205
193
|
- spec/fixtures/balance.json
|
206
194
|
- spec/fixtures/buy.json
|
207
195
|
- spec/fixtures/cancel.json
|
@@ -216,3 +204,4 @@ test_files:
|
|
216
204
|
- spec/helper.rb
|
217
205
|
- spec/mtgox/client_spec.rb
|
218
206
|
- spec/mtgox_spec.rb
|
207
|
+
has_rdoc:
|
data/.autotest
DELETED
@@ -1 +0,0 @@
|
|
1
|
-
require 'autotest/bundler'
|