mtgox 0.3.1 → 0.4.0

Sign up to get free protection for your applications and to get access to all the features.
@@ -1,13 +1,10 @@
1
1
  require 'mtgox/client'
2
+ require 'mtgox/configuration'
2
3
  require 'mtgox/error'
3
4
 
4
5
  module MtGox
6
+ extend Configuration
5
7
  class << self
6
- attr_accessor :name, :pass
7
- def configure
8
- yield self
9
- end
10
-
11
8
  # Alias for MtGox::Client.new
12
9
  #
13
10
  # @return [MtGox::Client]
@@ -85,11 +85,9 @@ module MtGox
85
85
  # @authenticated true
86
86
  # @return [<Hashie::Rash>] with keys `buy` and `sell`, which contain arrays as described in {MtGox::Client#buys} and {MtGox::Client#sells}
87
87
  # @example
88
- # 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>]
88
+ # MtGox.orders[0, 3] #=> [<#Hashie::Rash amount=0.73 dark="0" date=2011-06-13 00:13:16 -0700 oid="929284" price=2 status=:active type=2>, <#Hashie::Rash amount=0.36 dark="0" date=2011-06-13 00:13:21 -0700 oid="929288" price=4 status=:active type=2>, <#Hashie::Rash amount=0.24 dark="0" date=2011-06-13 00:13:32 -0700 oid="929292" price=6 status=:active type=2>]
89
89
  def orders
90
- post('/code/getOrders.php', pass_params)['orders'].each do |order|
91
- order['date'] = Time.at(order['date'])
92
- end
90
+ parse_orders(post('/code/getOrders.php', pass_params)['orders'])
93
91
  end
94
92
 
95
93
  # Fetch your open buys
@@ -97,7 +95,7 @@ module MtGox
97
95
  # @authenticated true
98
96
  # @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`
99
97
  # @example
100
- # 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>]
98
+ # MtGox.buys[0, 3] #=> [<#Hashie::Rash amount=0.73 dark="0" date=2011-06-13 00:13:16 -0700 oid="929284" price=2 status=:active type=2>, <#Hashie::Rash amount=0.36 dark="0" date=2011-06-13 00:13:21 -0700 oid="929288" price=4 status=:active type=2>, <#Hashie::Rash amount=0.24 dark="0" date=2011-06-13 00:13:32 -0700 oid="929292" price=6 status=:active type=2>]
101
99
  def buys
102
100
  orders.select do |o|
103
101
  o['type'] == ORDER_TYPES[:buy]
@@ -109,7 +107,7 @@ module MtGox
109
107
  # @authenticated true
110
108
  # @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`
111
109
  # @example
112
- # 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>]
110
+ # MtGox.sells[0, 3] #=> [<#Hashie::Rash amount=0.1 dark="0" date=2011-06-13 00:16:24 -0700 oid="663465" price=24.92 status=nil type=1>, <#Hashie::Rash amount=0.12 dark="0" date=2011-06-13 00:16:31 -0700 oid="663468" price=25.65 status=nil type=1>, <#Hashie::Rash amount=0.15 dark="0" date=2011-06-13 00:16:36 -0700 oid="663470" price=26.38 status=nil type=1>]
113
111
  def sells
114
112
  orders.select do |o|
115
113
  o['type'] == ORDER_TYPES[:sell]
@@ -126,9 +124,7 @@ module MtGox
126
124
  # # Buy one bitcoin for $0.011
127
125
  # MtGox.buy! 1.0, 0.011
128
126
  def buy!(amount, price)
129
- post('/code/buyBTC.php', pass_params.merge({:amount => amount, :price => price}))['orders'].each do |order|
130
- order['date'] = Time.at(order['date'])
131
- end
127
+ parse_orders(post('/code/buyBTC.php', pass_params.merge({:amount => amount, :price => price}))['orders'])
132
128
  end
133
129
 
134
130
  # Place a limit order to sell BTC
@@ -141,9 +137,7 @@ module MtGox
141
137
  # # Sell one bitcoin for $100
142
138
  # MtGox.sell! 1.0, 100.0
143
139
  def sell!(amount, price)
144
- post('/code/sellBTC.php', pass_params.merge({:amount => amount, :price => price}))['orders'].each do |order|
145
- order['date'] = Time.at(order['date'])
146
- end
140
+ parse_orders(post('/code/sellBTC.php', pass_params.merge({:amount => amount, :price => price}))['orders'])
147
141
  end
148
142
 
149
143
  # Cancel an open order
@@ -193,6 +187,12 @@ module MtGox
193
187
 
194
188
  private
195
189
 
190
+ def parse_orders(orders)
191
+ orders.each do |order|
192
+ order['date'] = Time.at(order['date'])
193
+ end
194
+ end
195
+
196
196
  def pass_params
197
197
  {:name => MtGox.name, :pass => MtGox.pass}
198
198
  end
@@ -0,0 +1,41 @@
1
+ require 'mtgox/version'
2
+
3
+ module MtGox
4
+ module Configuration
5
+ # An array of valid keys in the options hash when configuring a {MtGox::Client}
6
+ VALID_OPTIONS_KEYS = [
7
+ :commission,
8
+ :name,
9
+ :pass,
10
+ ]
11
+
12
+ DEFAULT_COMMISSION = 0.0065.freeze
13
+
14
+ attr_accessor *VALID_OPTIONS_KEYS
15
+
16
+ # When this module is extended, set all configuration options to their default values
17
+ def self.extended(base)
18
+ base.reset
19
+ end
20
+
21
+ # Convenience method to allow configuration options to be set in a block
22
+ def configure
23
+ yield self
24
+ end
25
+
26
+ # Create a hash of options and their values
27
+ def options
28
+ options = {}
29
+ VALID_OPTIONS_KEYS.each{|k| options[k] = send(k)}
30
+ options
31
+ end
32
+
33
+ # Reset all configuration options to defaults
34
+ def reset
35
+ self.commission = DEFAULT_COMMISSION
36
+ self.name = nil
37
+ self.pass = nil
38
+ self
39
+ end
40
+ end
41
+ end
@@ -1,3 +1,3 @@
1
1
  module MtGox
2
- VERSION = "0.3.1"
2
+ VERSION = "0.4.0".freeze unless defined? ::MtGox::VERSION
3
3
  end
@@ -3,7 +3,7 @@ require File.expand_path('../lib/mtgox/version', __FILE__)
3
3
 
4
4
  Gem::Specification.new do |gem|
5
5
  gem.name = 'mtgox'
6
- gem.version = MtGox::VERSION
6
+ gem.version = MtGox::VERSION.dup
7
7
  gem.author = "Erik Michaels-Ober"
8
8
  gem.email = 'sferik@gmail.com'
9
9
  gem.homepage = 'https://github.com/sferik/mtgox'
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.3.1
4
+ version: 0.4.0
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -9,12 +9,12 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2011-07-03 00:00:00.000000000 -07:00
12
+ date: 2011-07-08 00:00:00.000000000 -07:00
13
13
  default_executable:
14
14
  dependencies:
15
15
  - !ruby/object:Gem::Dependency
16
16
  name: ZenTest
17
- requirement: &70364608964540 !ruby/object:Gem::Requirement
17
+ requirement: &70146027121000 !ruby/object:Gem::Requirement
18
18
  none: false
19
19
  requirements:
20
20
  - - ~>
@@ -22,10 +22,10 @@ dependencies:
22
22
  version: '4.5'
23
23
  type: :development
24
24
  prerelease: false
25
- version_requirements: *70364608964540
25
+ version_requirements: *70146027121000
26
26
  - !ruby/object:Gem::Dependency
27
27
  name: maruku
28
- requirement: &70364608964000 !ruby/object:Gem::Requirement
28
+ requirement: &70146027120280 !ruby/object:Gem::Requirement
29
29
  none: false
30
30
  requirements:
31
31
  - - ~>
@@ -33,10 +33,10 @@ dependencies:
33
33
  version: '0.6'
34
34
  type: :development
35
35
  prerelease: false
36
- version_requirements: *70364608964000
36
+ version_requirements: *70146027120280
37
37
  - !ruby/object:Gem::Dependency
38
38
  name: rake
39
- requirement: &70364608963420 !ruby/object:Gem::Requirement
39
+ requirement: &70146027119500 !ruby/object:Gem::Requirement
40
40
  none: false
41
41
  requirements:
42
42
  - - ~>
@@ -44,10 +44,10 @@ dependencies:
44
44
  version: '0.9'
45
45
  type: :development
46
46
  prerelease: false
47
- version_requirements: *70364608963420
47
+ version_requirements: *70146027119500
48
48
  - !ruby/object:Gem::Dependency
49
49
  name: rspec
50
- requirement: &70364608962220 !ruby/object:Gem::Requirement
50
+ requirement: &70146027118500 !ruby/object:Gem::Requirement
51
51
  none: false
52
52
  requirements:
53
53
  - - ~>
@@ -55,10 +55,10 @@ dependencies:
55
55
  version: '2.6'
56
56
  type: :development
57
57
  prerelease: false
58
- version_requirements: *70364608962220
58
+ version_requirements: *70146027118500
59
59
  - !ruby/object:Gem::Dependency
60
60
  name: simplecov
61
- requirement: &70364608961080 !ruby/object:Gem::Requirement
61
+ requirement: &70146027117600 !ruby/object:Gem::Requirement
62
62
  none: false
63
63
  requirements:
64
64
  - - ~>
@@ -66,10 +66,10 @@ dependencies:
66
66
  version: '0.4'
67
67
  type: :development
68
68
  prerelease: false
69
- version_requirements: *70364608961080
69
+ version_requirements: *70146027117600
70
70
  - !ruby/object:Gem::Dependency
71
71
  name: webmock
72
- requirement: &70364608943460 !ruby/object:Gem::Requirement
72
+ requirement: &70146027117040 !ruby/object:Gem::Requirement
73
73
  none: false
74
74
  requirements:
75
75
  - - ~>
@@ -77,10 +77,10 @@ dependencies:
77
77
  version: '1.6'
78
78
  type: :development
79
79
  prerelease: false
80
- version_requirements: *70364608943460
80
+ version_requirements: *70146027117040
81
81
  - !ruby/object:Gem::Dependency
82
82
  name: yard
83
- requirement: &70364608942360 !ruby/object:Gem::Requirement
83
+ requirement: &70146027116380 !ruby/object:Gem::Requirement
84
84
  none: false
85
85
  requirements:
86
86
  - - ~>
@@ -88,10 +88,10 @@ dependencies:
88
88
  version: '0.7'
89
89
  type: :development
90
90
  prerelease: false
91
- version_requirements: *70364608942360
91
+ version_requirements: *70146027116380
92
92
  - !ruby/object:Gem::Dependency
93
93
  name: faraday
94
- requirement: &70364608941420 !ruby/object:Gem::Requirement
94
+ requirement: &70146027115280 !ruby/object:Gem::Requirement
95
95
  none: false
96
96
  requirements:
97
97
  - - ~>
@@ -99,10 +99,10 @@ dependencies:
99
99
  version: 0.6.1
100
100
  type: :runtime
101
101
  prerelease: false
102
- version_requirements: *70364608941420
102
+ version_requirements: *70146027115280
103
103
  - !ruby/object:Gem::Dependency
104
104
  name: faraday_middleware
105
- requirement: &70364608940880 !ruby/object:Gem::Requirement
105
+ requirement: &70146027113940 !ruby/object:Gem::Requirement
106
106
  none: false
107
107
  requirements:
108
108
  - - ~>
@@ -110,10 +110,10 @@ dependencies:
110
110
  version: 0.6.3
111
111
  type: :runtime
112
112
  prerelease: false
113
- version_requirements: *70364608940880
113
+ version_requirements: *70146027113940
114
114
  - !ruby/object:Gem::Dependency
115
115
  name: hashie
116
- requirement: &70364608940240 !ruby/object:Gem::Requirement
116
+ requirement: &70146027113000 !ruby/object:Gem::Requirement
117
117
  none: false
118
118
  requirements:
119
119
  - - ~>
@@ -121,10 +121,10 @@ dependencies:
121
121
  version: 1.0.0
122
122
  type: :runtime
123
123
  prerelease: false
124
- version_requirements: *70364608940240
124
+ version_requirements: *70146027113000
125
125
  - !ruby/object:Gem::Dependency
126
126
  name: multi_json
127
- requirement: &70364608939620 !ruby/object:Gem::Requirement
127
+ requirement: &70146027112000 !ruby/object:Gem::Requirement
128
128
  none: false
129
129
  requirements:
130
130
  - - ~>
@@ -132,10 +132,10 @@ dependencies:
132
132
  version: 1.0.3
133
133
  type: :runtime
134
134
  prerelease: false
135
- version_requirements: *70364608939620
135
+ version_requirements: *70146027112000
136
136
  - !ruby/object:Gem::Dependency
137
137
  name: rash
138
- requirement: &70364608939040 !ruby/object:Gem::Requirement
138
+ requirement: &70146027107100 !ruby/object:Gem::Requirement
139
139
  none: false
140
140
  requirements:
141
141
  - - ~>
@@ -143,7 +143,7 @@ dependencies:
143
143
  version: 0.3.0
144
144
  type: :runtime
145
145
  prerelease: false
146
- version_requirements: *70364608939040
146
+ version_requirements: *70146027107100
147
147
  description: Ruby wrapper for the Mt. Gox Trade API. Mt. Gox allows you to trade US
148
148
  Dollars (USD) for Bitcoins (BTC) or Bitcoins for US Dollars.
149
149
  email: sferik@gmail.com
@@ -164,6 +164,7 @@ files:
164
164
  - lib/faraday/response/raise_mtgox_error.rb
165
165
  - lib/mtgox.rb
166
166
  - lib/mtgox/client.rb
167
+ - lib/mtgox/configuration.rb
167
168
  - lib/mtgox/connection.rb
168
169
  - lib/mtgox/error.rb
169
170
  - lib/mtgox/request.rb