betfair 1.0.2 → 1.0.3

Sign up to get free protection for your applications and to get access to all the features.
data/README.md CHANGED
@@ -42,12 +42,12 @@ as the UK.
42
42
  At the heart of the Betfair API is the `session_token`. In order to
43
43
  get one of these simply call:
44
44
 
45
- username = 'foo'
46
- password = 'bar'
47
- product_id = 82
48
- vendor_software_id = 0
49
- location_id = 0
50
- ip_address = nil
45
+ username = 'foo'
46
+ password = 'bar'
47
+ product_id = 82
48
+ vendor_software_id = 0
49
+ location_id = 0
50
+ ip_address = nil
51
51
 
52
52
  session_token = bf.login(username, password, product_id, vendor_software_id, location_id, ip_address)
53
53
 
@@ -172,14 +172,14 @@ The API PlaceBets service allows you to place multiple (1 to 60) bets on a singl
172
172
  ## Update Bet ##
173
173
  The API UpdateBets service allows you to edit multiple (1 to 15) bets on a single Market.
174
174
 
175
- exchange_id = 1
176
- bet_id: 1234,
177
- new_bet_persistence_type = 'NONE'
178
- new_price = 10.0
179
- new_size = 10.0
180
- old_bet_persistence_type = 'NONE'
181
- old_price= 5.0
182
- old_size = 5.0
175
+ exchange_id = 1
176
+ bet_id = 1234,
177
+ new_bet_persistence_type = 'NONE'
178
+ new_price = 10.0
179
+ new_size = 10.0
180
+ old_bet_persistence_type = 'NONE'
181
+ old_price = 5.0
182
+ old_size = 5.0
183
183
 
184
184
  update_bet =
185
185
  bf.update_bet(session_token, exchange_id, bet_id, new_bet_persistence_type, new_price, new_size, old_bet_persistence_type, old_price, old_size)
@@ -188,7 +188,7 @@ The API UpdateBets service allows you to edit multiple (1 to 15) bets on a singl
188
188
  The API UpdateBets service allows you to edit multiple (1 to 15) bets on a single Market.
189
189
 
190
190
  exchange_id = 1
191
- bets = []
191
+ bets = []
192
192
  bets << { bet_id: 1234, new_bet_persistence_type: 'NONE', new_price: 10.0, new_size: 10.0,
193
193
  old_bet_persistence_type: 'NONE', old_price: 5.0, old_size: 5.0 }
194
194
  bets << { bet_id: 1235, new_bet_persistence_type: 'NONE', new_price: 2.0, new_size: 10.0,
@@ -247,7 +247,7 @@ This function does the same as the #all_markets method. Not sure how/why it has
247
247
  duplicated, but it has so here is how it works.
248
248
 
249
249
  all_markets = bf.get_all_markets(session_token, 2, [61420], nil, nil, nil, nil)
250
- foo = helpers.split_markets_string(all_markets)
250
+ foo = helpers.split_markets_string(all_markets)
251
251
 
252
252
  The output looks a little different to the #all_markets method.
253
253
 
@@ -262,8 +262,8 @@ foo.first returns
262
262
  ## Market Info ##
263
263
  This helper sorts out a nice hash from the
264
264
 
265
- market = bf.get_market(session_token, 2, 100388290)
266
- foo = helpers.market_info(details)
265
+ market = bf.get_market(session_token, 2, 100388290)
266
+ foo = helpers.market_info(details)
267
267
 
268
268
  Which returns
269
269
 
@@ -272,15 +272,15 @@ Which returns
272
272
  ## Prices ##
273
273
  This helper cleans up the prices
274
274
 
275
- prices = bf.get_market_prices_compressed(session_token, 2, 100388290)
276
- foo = helpers.prices(prices)
275
+ prices = bf.get_market_prices_compressed(session_token, 2, 100388290)
276
+ foo = helpers.prices(prices)
277
277
 
278
278
  ## Combine ##
279
279
  Use this to combine `runner_names` and prices from the #market_info and #prices helpers
280
280
 
281
- market = bf.get_market(session_token, 2, 100388290)
282
- prices = bf.get_market_prices_compressed(session_token, 2, 100388290)
283
- foo = helpers.combine(market, prices)
281
+ market = bf.get_market(session_token, 2, 100388290)
282
+ prices = bf.get_market_prices_compressed(session_token, 2, 100388290)
283
+ foo = helpers.combine(market, prices)
284
284
 
285
285
  foo.first returns
286
286
 
@@ -293,8 +293,8 @@ foo.first returns
293
293
  ## Details ##
294
294
  Gets the `market_id`/`market_name` and the `runner_id`/`runner_name`
295
295
 
296
- market = bf.get_market(session_token, 2, 100388290)
297
- foo = helpers.details(market)
296
+ market = bf.get_market(session_token, 2, 100388290)
297
+ foo = helpers.details(market)
298
298
 
299
299
  Which returns
300
300
 
@@ -313,8 +313,8 @@ Which returns
313
313
  ## Prices Complete ##
314
314
  Helper to deal with the prices string from a market.
315
315
 
316
- prices = bf.get_market_prices_compressed(session_token, 2, 100388290)
317
- foo = helpers.prices_complete(prices)
316
+ prices = bf.get_market_prices_compressed(session_token, 2, 100388290)
317
+ foo = helpers.prices_complete(prices)
318
318
 
319
319
  foo.first returns
320
320
 
@@ -326,8 +326,8 @@ foo.first returns
326
326
 
327
327
  ## Prices String ##
328
328
 
329
- prices = bf.get_market_prices_compressed(session_token, 2, 100388290)
330
- foo = helpers.price_string(prices, true)
329
+ prices = bf.get_market_prices_compressed(session_token, 2, 100388290)
330
+ foo = helpers.price_string(prices, true)
331
331
 
332
332
  { :prices_string=>nil, :runner_matched=>0, :last_back_price=>0, :wom=>0.6054936499440416, :b1=>4.2, :b1_available=>430.35, :b2=>4.1, :b2_available=>311.51, :b3=>3.85,
333
333
  :b3_available=>4.75, :l1=>4.4, :l1_available=>155.46, :l2=>4.6, :l2_available=>230.69, :l3=>5.9, :l3_available=>100.3
@@ -375,6 +375,7 @@ trying to set a threshold on when to place a bet.
375
375
  * rake
376
376
 
377
377
  ## To Do ##
378
+ * Work out how to implement this https://github.com/jfairbairn/em-net-http, so that the libary uses eventmachine no blocking
378
379
  * The WOM of money in Helpers#price_string returns 0 if either all b1,b2,b3 or l1,l2,l3 are all 0
379
380
  * Add some error checking to the Betfair::Helper methods
380
381
  * Finish of the mash method, to return a nice hash of all market and runner info
@@ -33,7 +33,7 @@ class SimpleBot
33
33
  ODDS = 2.0 # Bet on odds below this
34
34
  BET_SIDE = 'L' # What type of bet, B for back and L for Lay
35
35
  BET_AMOUNT = 2.0 # Note this needs to be a minimum of $5 if you have an AUS account
36
- BET_PIP = 0.01 # Place bet one pip above the ODDS I am checking for, ie this will try and lay 2.0 pounds on odds of 2.01
36
+ BET_PIP = 1 # Place bet one pip above the ODDS I am checking for, ie this will try and lay 2.0 pounds on odds of 2.01
37
37
 
38
38
  BF = Betfair::API.new # Initialize BF API methods
39
39
  HELPERS = Betfair::Helpers.new # Initialize Helper API methods
@@ -153,7 +153,9 @@ class SimpleBot
153
153
  begin
154
154
  foo = []
155
155
  bets.each do |bet|
156
- foo << { market_id: market_id, runner_id: bet[:selection_id], bet_type: BET_SIDE, price: bet[:b1]+BET_PIP.to_f, size: BET_AMOUNT, asian_line_id: 0,
156
+ price = @helpers.set_betfair_odds(bet[:b1], BET_PIP, false, false)[:prc]
157
+
158
+ foo << { market_id: market_id, runner_id: bet[:selection_id], bet_type: BET_SIDE, price: price, size: BET_AMOUNT, asian_line_id: 0,
157
159
  bet_category_type: 'E', bet_peristence_type: 'NONE', bsp_liability: 0 }
158
160
  end
159
161
  bets = BF.place_multiple_bets(token, exchange_id, foo)
@@ -4,13 +4,8 @@ module Betfair
4
4
 
5
5
  ## Some handy constants...
6
6
 
7
- EXCHANGE_IDS = {
8
- :aus => 2,
9
- :uk => 1
10
- }
11
-
7
+ EXCHANGE_IDS = { aus: 2, uk: 1 }
12
8
  PRODUCT_ID_FREE = 82
13
-
14
9
  BET_TYPE_LAY = 'L'
15
10
  BET_TYPE_BACK = 'B'
16
11
 
@@ -31,70 +26,70 @@ module Betfair
31
26
  ## Bet Placement API METHODS
32
27
  #
33
28
 
34
- def place_bet(session_token, exchange_id, market_id, selection_id, bet_type, price, size)
35
- bf_bet = {
36
- :marketId => market_id,
37
- :selectionId => selection_id,
38
- :betType => bet_type,
39
- :price => price,
40
- :size => size,
41
- :asianLineId => 0,
42
- :betCategoryType => 'E',
43
- :betPersistenceType => 'NONE',
44
- :bspLiability => 0
29
+ def place_bet(session_token, exchange_id, market_id, selection_id, bet_type, price, size)
30
+ bf_bet = {
31
+ marketId: market_id,
32
+ selectionId: selection_id,
33
+ betType: bet_type,
34
+ price: price,
35
+ size: size,
36
+ asianLineId: 0,
37
+ betCategoryType: 'E',
38
+ betPersistenceType: 'NONE',
39
+ bspLiability: 0
45
40
  }
46
41
 
47
42
  response = exchange(exchange_id).
48
43
  session_request( session_token,
49
- :placeBets,
44
+ :placeBets,
50
45
  :place_bets_response,
51
- :bets => { 'PlaceBets' => [bf_bet] } )
46
+ bets: { 'PlaceBets' => [bf_bet] } )
52
47
 
53
48
  return response.maybe_result( :bet_results, :place_bets_result )
54
49
  end
55
50
 
56
51
 
57
- def place_multiple_bets(session_token, exchange_id, bets)
52
+ def place_multiple_bets(session_token, exchange_id, bets)
58
53
  bf_bets = []
59
54
  bets.each do |bet|
60
- bf_bets << {
61
- :marketId => bet[:market_id],
62
- :selectionId => bet[:runner_id],
63
- :betType => bet[:bet_type],
64
- :price => bet[:price],
65
- :size => bet[:size],
66
- :asianLineId => bet[:asian_line_id],
67
- :betCategoryType => bet[:bet_category_type],
68
- :betPersistenceType => bet[:bet_peristence_type],
69
- :bspLiability => bet[:bsp_liability]
55
+ bf_bets << {
56
+ marketId: bet[:market_id],
57
+ selectionId: bet[:runner_id],
58
+ betType: bet[:bet_type],
59
+ price: bet[:price],
60
+ size: bet[:size],
61
+ asianLineId: bet[:asian_line_id],
62
+ betCategoryType: bet[:bet_category_type],
63
+ betPersistenceType: bet[:bet_peristence_type],
64
+ bspLiability: bet[:bsp_liability]
70
65
  }
71
66
  end
72
67
 
73
68
  response = exchange(exchange_id).
74
69
  session_request( session_token,
75
- :placeBets,
70
+ :placeBets,
76
71
  :place_bets_response,
77
- :bets => { 'PlaceBets' => bf_bets } )
72
+ bets: { 'PlaceBets' => bf_bets } )
78
73
 
79
74
  return response.maybe_result( :bet_results, :place_bets_result )
80
75
  end
81
76
 
82
77
  def update_bet(session_token, exchange_id, bet_id, new_bet_persitence_type, new_price, new_size, old_bet_persitance_type, old_price, old_size)
83
- bf_bet = {
84
- :betId => bet_id,
85
- :newBetPersistenceType => new_bet_persitence_type,
86
- :newPrice => new_price,
87
- :newSize => new_size,
88
- :oldBetPersistenceType => old_bet_persitance_type,
89
- :oldPrice => old_price,
90
- :oldSize => old_size
78
+ bf_bet = {
79
+ betId: bet_id,
80
+ newBetPersistenceType: new_bet_persitence_type,
81
+ newPrice: new_price,
82
+ newSize: new_size,
83
+ oldBetPersistenceType: old_bet_persitance_type,
84
+ oldPrice: old_price,
85
+ oldSize: old_size
91
86
  }
92
87
 
93
88
  response = exchange(exchange_id).
94
89
  session_request( session_token,
95
- :updateBets,
90
+ :updateBets,
96
91
  :update_bets_response,
97
- :bets => { 'UpdateBets' => [bf_bet] } )
92
+ bets: { 'UpdateBets' => [bf_bet] } )
98
93
 
99
94
  return response.maybe_result( :bet_results, :update_bets_result )
100
95
  end
@@ -102,47 +97,47 @@ module Betfair
102
97
  def update_multiple_bets(session_token, exchange_id, bets)
103
98
  bf_bets = []
104
99
  bets.each do |bet|
105
- bf_bets << {
106
- :betId => bet[:bet_id],
107
- :newBetPersistenceType => bet[:new_bet_persitence_type],
108
- :newPrice => bet[:new_price],
109
- :newSize => bet[:new_size],
110
- :oldBetPersistenceType => bet[:old_bet_persitance_type],
111
- :oldPrice => bet[:old_price],
112
- :oldSize => bet[:old_size]
100
+ bf_bets << {
101
+ betId: bet[:bet_id],
102
+ newBetPersistenceType: bet[:new_bet_persitence_type],
103
+ newPrice: bet[:new_price],
104
+ newSize: bet[:new_size],
105
+ oldBetPersistenceType: bet[:old_bet_persitance_type],
106
+ oldPrice: bet[:old_price],
107
+ oldSize: bet[:old_size]
113
108
  }
114
109
  end
115
110
 
116
111
  response = exchange(exchange_id).
117
112
  session_request( session_token,
118
- :updateBets,
113
+ :updateBets,
119
114
  :update_bets_response,
120
- :bets => { 'UpdateBets' => bf_bets } )
115
+ bets: { 'UpdateBets' => bf_bets } )
121
116
 
122
- return response.maybe_result( :bet_results, :update_bets_result )
117
+ return response.maybe_result( :bet_results, :update_bets_result )
123
118
  end
124
119
 
125
120
  def cancel_bet(session_token, exchange_id, bet_id)
126
- bf_bet = { :betId => bet_id }
121
+ bf_bet = { betId: bet_id }
127
122
 
128
123
  response = exchange(exchange_id).
129
124
  session_request( session_token,
130
- :cancelBets,
125
+ :cancelBets,
131
126
  :cancel_bets_response,
132
- :bets => { 'CancelBets' => [bf_bet] } ) # "CancelBets" has to be a string, not a symbol!
127
+ bets: { 'CancelBets' => [bf_bet] } ) # "CancelBets" has to be a string, not a symbol!
133
128
 
134
129
  return response.maybe_result( :bet_results, :cancel_bets_result )
135
130
  end
136
131
 
137
132
  def cancel_multiple_bets(session_token, exchange_id, bets)
138
133
  bf_bets = []
139
- bets.each { |bet_id| bf_bets << { :betId => bet_id } }
134
+ bets.each { |bet_id| bf_bets << { betId: bet_id } }
140
135
 
141
136
  response = exchange(exchange_id).
142
137
  session_request( session_token,
143
- :cancelBets,
138
+ :cancelBets,
144
139
  :cancel_bets_response,
145
- :bets => { 'CancelBets' => bf_bets } ) # "CancelBets" has to be a string, not a symbol!
140
+ bets: { 'CancelBets' => bf_bets } ) # "CancelBets" has to be a string, not a symbol!
146
141
 
147
142
  return response.maybe_result( :bet_results, :cancel_bets_result )
148
143
  end
@@ -156,31 +151,31 @@ module Betfair
156
151
 
157
152
  def get_mu_bets( session_token, exchange_id, market_id = 0, bet_status = 'MU', start_record = 0, record_count = 200, sort_order = 'ASC', order_by = 'PLACED_DATE') #, bet_ids = nil, , exclude_last_second = nil, matched_since = nil
158
153
  response = exchange(exchange_id).
159
- session_request( session_token,
160
- :getMUBets,
154
+ session_request( session_token,
155
+ :getMUBets,
161
156
  :get_mu_bets_response,
162
- #:betIds => bet_ids,
163
- :betStatus => bet_status,
164
- #:excludeLastSecond => exclude_last_second,
165
- :marketId => market_id,
166
- #:matchedSince => matched_since,
167
- :orderBy => order_by,
168
- :recordCount => record_count,
169
- :sortOrder => sort_order,
170
- :startRecord => start_record
157
+ #betIds: bet_ids,
158
+ betStatus: bet_status,
159
+ #excludeLastSecond: exclude_last_second,
160
+ marketId: market_id,
161
+ #matchedSince: matched_since,
162
+ orderBy: order_by,
163
+ recordCount: record_count,
164
+ sortOrder: sort_order,
165
+ startRecord: start_record
171
166
  )
172
167
 
173
168
  return response.maybe_result( :bets, :mu_bet )
174
169
  end
175
170
 
176
171
 
177
- def get_market(session_token, exchange_id, market_id, locale = nil)
172
+ def get_market(session_token, exchange_id, market_id, locale = nil)
178
173
  response = exchange(exchange_id).
179
- session_request( session_token,
180
- :getMarket,
174
+ session_request( session_token,
175
+ :getMarket,
181
176
  :get_market_response,
182
- :marketId => market_id,
183
- :locale => locale )
177
+ marketId: market_id,
178
+ locale: locale )
184
179
 
185
180
  return response.maybe_result( :market )
186
181
  end
@@ -189,10 +184,10 @@ module Betfair
189
184
  def get_market_prices_compressed(session_token, exchange_id, market_id, currency_code = nil)
190
185
  response = exchange(exchange_id).
191
186
  session_request( session_token,
192
- :getMarketPricesCompressed,
187
+ :getMarketPricesCompressed,
193
188
  :get_market_prices_compressed_response,
194
- :marketId => market_id,
195
- :currencyCode => currency_code )
189
+ marketId: market_id,
190
+ currencyCode: currency_code )
196
191
 
197
192
  return response.maybe_result( :market_prices )
198
193
  end
@@ -201,9 +196,9 @@ module Betfair
201
196
  def get_active_event_types(session_token, locale = nil)
202
197
  response = @global_service.
203
198
  session_request( session_token,
204
- :getActiveEventTypes,
199
+ :getActiveEventTypes,
205
200
  :get_active_event_types_response,
206
- :locale => locale )
201
+ locale: locale )
207
202
 
208
203
  return response.maybe_result( :event_type_items, :event_type )
209
204
  end
@@ -211,14 +206,14 @@ module Betfair
211
206
 
212
207
  def get_all_markets(session_token, exchange_id, event_type_ids = nil, locale = nil, countries = nil, from_date = nil, to_date = nil)
213
208
  response = exchange(exchange_id).
214
- session_request( session_token,
215
- :getAllMarkets,
209
+ session_request( session_token,
210
+ :getAllMarkets,
216
211
  :get_all_markets_response,
217
- :eventTypeIds => { 'int' => event_type_ids },
218
- :locale => locale,
219
- :countries => { 'Country' => countries },
220
- :fromDate => from_date,
221
- :toDate => to_date )
212
+ eventTypeIds: { 'int' => event_type_ids },
213
+ locale: locale,
214
+ countries: { 'Country' => countries },
215
+ fromDate: from_date,
216
+ toDate: to_date )
222
217
 
223
218
  return response.maybe_result( :market_data )
224
219
  end
@@ -226,22 +221,22 @@ module Betfair
226
221
 
227
222
  def get_account_funds( session_token, exchange_id )
228
223
  response = exchange(exchange_id).
229
- session_request( session_token,
230
- :getAccountFunds,
224
+ session_request( session_token,
225
+ :getAccountFunds,
231
226
  :get_account_funds_response )
232
227
 
233
228
  return response.maybe_result
234
229
  end
235
230
 
236
231
  def login(username, password, product_id, vendor_software_id, location_id, ip_address)
237
- response = @global_service.request( :login,
238
- :login_response,
239
- :username => username,
240
- :password => password,
241
- :productId => product_id,
242
- :vendorSoftwareId => vendor_software_id,
243
- :locationId => location_id,
244
- :ipAddress => ip_address )
232
+ response = @global_service.request( :login,
233
+ :login_response,
234
+ username: username,
235
+ password: password,
236
+ productId: product_id,
237
+ vendorSoftwareId: vendor_software_id,
238
+ locationId: location_id,
239
+ ipAddress: ip_address )
245
240
 
246
241
  return response.maybe_result( :header, :session_token )
247
242
  end
@@ -252,11 +247,11 @@ module Betfair
252
247
  def keep_alive(session_token)
253
248
  response = @global_service.
254
249
  session_request( session_token,
255
- :keep_alive,
250
+ :keep_alive,
256
251
  :keep_alive_response )
257
252
 
258
253
  # Need to do the old school way of checking as the keep_alive response doesn't return a minorErrorCode, so fails
259
- error_code = response[:header][:error_code]
254
+ error_code = response[:header][:error_code]
260
255
  #return error_code == 'OK' ? response[:header][:session_token] : error_code
261
256
  return error_code == 'OK' ? response[:header][:session_token].extend( Success ) : error_code.extend( Failure )
262
257
  end
@@ -264,7 +259,7 @@ module Betfair
264
259
  def logout(session_token)
265
260
  response = @global_service.
266
261
  session_request( session_token,
267
- :logout,
262
+ :logout,
268
263
  :logout_response )
269
264
  return response.maybe_result( :header, :session_token )
270
265
  end
@@ -273,11 +268,11 @@ module Betfair
273
268
  ## END OF API METHODS
274
269
 
275
270
 
276
- def exchange(exchange_id)
271
+ def exchange(exchange_id)
277
272
  exchange_id == EXCHANGE_IDS[:aus] ? @aus_service : @uk_service
278
273
  end
279
274
 
280
- def session_token(response_header)
275
+ def session_token(response_header)
281
276
  response_header[:error_code] == 'OK' ? response_header[:session_token] : response_header[:error_code]
282
277
  end
283
278
 
@@ -302,13 +297,13 @@ module Betfair
302
297
 
303
298
  # Handy constants
304
299
  NAMESPACES = {
305
- :aus => 'http://www.betfair.com/exchange/v3/BFExchangeService/AUS',
306
- :global => 'https://www.betfair.com/global/v3/BFGlobalService',
307
- :uk => 'http://www.betfair.com/exchange/v3/BFExchangeService/UK' }
300
+ aus: 'http://www.betfair.com/exchange/v3/BFExchangeService/AUS',
301
+ global: 'https://www.betfair.com/global/v3/BFGlobalService',
302
+ uk: 'http://www.betfair.com/exchange/v3/BFExchangeService/UK' }
308
303
  ENDPOINTS = {
309
- :aus => 'https://api-au.betfair.com/exchange/v5/BFExchangeService',
310
- :global => 'https://api.betfair.com/global/v3/BFGlobalService',
311
- :uk => 'https://api.betfair.com/exchange/v5/BFExchangeService' }
304
+ aus: 'https://api-au.betfair.com/exchange/v5/BFExchangeService',
305
+ global: 'https://api.betfair.com/global/v3/BFGlobalService',
306
+ uk: 'https://api.betfair.com/exchange/v5/BFExchangeService' }
312
307
 
313
308
 
314
309
  # Factory methods for building clients to the different endpoints
@@ -350,15 +345,15 @@ module Betfair
350
345
  # For those requests which take place in the context of a session,
351
346
  # this method constructs the correct header and delegates to #request.
352
347
  def session_request( session_token, method, result_field, body = {})
353
- header_body = { :header => api_request_header(session_token) }
348
+ header_body = { header: api_request_header(session_token) }
354
349
  full_body = header_body.merge( body )
355
350
 
356
351
  request method, result_field, full_body
357
352
  end
358
353
 
359
354
 
360
- def api_request_header(session_token)
361
- { :client_stamp => 0, :session_token => session_token }
355
+ def api_request_header(session_token)
356
+ { client_stamp: 0, session_token: session_token }
362
357
  end
363
358
  protected :api_request_header
364
359
 
@@ -371,7 +366,7 @@ module Betfair
371
366
  module ErrorPresenter
372
367
 
373
368
  def success?
374
- self[:error_code] == "OK"
369
+ self[:error_code] == 'OK'
375
370
  end
376
371
 
377
372
 
@@ -408,26 +403,26 @@ module Betfair
408
403
  markets.each do |piece|
409
404
  piece.gsub! "\0", '\:'
410
405
  foo = piece.split('~')
411
- market_hash[foo[0].to_i] = {
412
- :market_id => foo[0].to_i,
413
- :market_name => foo[1].to_s,
414
- :market_type => foo[2].to_s,
415
- :market_status => foo[3].to_s,
406
+ market_hash[foo[0].to_i] = {
407
+ market_id: foo[0].to_i,
408
+ market_name: foo[1].to_s,
409
+ market_type: foo[2].to_s,
410
+ market_status: foo[3].to_s,
411
+ # bf returns in this case time in Epoch, but in milliseconds
412
+ event_date: Time.at(foo[4].to_i/1000),
413
+ menu_path: foo[5].to_s,
414
+ event_hierarchy: foo[6].to_s,
415
+ bet_delay: foo[7].to_s,
416
+ exchange_id: foo[8].to_i,
417
+ iso3_country_code: foo[9].to_s,
416
418
  # bf returns in this case time in Epoch, but in milliseconds
417
- :event_date => Time.at(foo[4].to_i/1000),
418
- :menu_path => foo[5].to_s,
419
- :event_hierarchy => foo[6].to_s,
420
- :bet_delay => foo[7].to_s,
421
- :exchange_id => foo[8].to_i,
422
- :iso3_country_code => foo[9].to_s,
423
- # bf returns in this case time in Epoch, but in milliseconds
424
- :last_refresh => Time.at(foo[10].to_i/1000),
425
- :number_of_runners => foo[11].to_i,
426
- :number_of_winners => foo[12].to_i,
427
- :total_amount_matched => foo[13].to_f,
428
- :bsp_market => foo[14] == 'Y' ? true : false,
429
- :turning_in_play => foo[15] == 'Y' ? true : false
430
- }
419
+ last_refresh: Time.at(foo[10].to_i/1000),
420
+ number_of_runners: foo[11].to_i,
421
+ number_of_winners: foo[12].to_i,
422
+ total_amount_matched: foo[13].to_f,
423
+ bsp_market: foo[14] == 'Y' ? true : false,
424
+ turning_in_play: foo[15] == 'Y' ? true : false
425
+ }
431
426
  end
432
427
  return market_hash
433
428
  end
@@ -446,9 +441,25 @@ module Betfair
446
441
  event_date = Time.at(bar[4].to_i/1000).utc
447
442
  last_refresh = Time.at(bar[10].to_i/1000).utc
448
443
 
449
- doh = { market_id: bar[0].to_i, market_name: bar[1], market_type: bar[2], market_status: bar[3], event_date: event_date, menu_path: bar[5], event_heirachy: bar[6],
450
- bet_delay: bar[7].to_i, exchange_id: bar[8].to_i, iso3_country_code: bar[9], last_refresh: last_refresh, number_of_runners: bar[11].to_i, number_of_winners: bar[12].to_i,
451
- total_amount_matched: bar[13].to_f, bsp_market: bsp_market, turning_in_play: turning_in_play }
444
+ doh = {
445
+ market_id: bar[0].to_i,
446
+ market_name: bar[1],
447
+ market_type: bar[2],
448
+ market_status: bar[3],
449
+ event_date: event_date,
450
+ menu_path: bar[5],
451
+ event_heirachy: bar[6],
452
+ bet_delay: bar[7].to_i,
453
+ exchange_id: bar[8].to_i,
454
+ iso3_country_code: bar[9],
455
+ last_refresh: last_refresh,
456
+ number_of_runners: bar[11].to_i,
457
+ number_of_winners: bar[12].to_i,
458
+ total_amount_matched: bar[13].to_f,
459
+ bsp_market: bsp_market,
460
+ turning_in_play: turning_in_play
461
+ }
462
+
452
463
  foo << doh if !doh[:market_name].nil?
453
464
  end
454
465
  end
@@ -456,24 +467,24 @@ module Betfair
456
467
  end
457
468
 
458
469
  def market_info(details)
459
- { :exchange_id => nil,
460
- :market_type_id => nil,
461
- :market_matched => nil,
462
- :menu_path => details[:menu_path],
463
- :market_id => details[:market_id],
464
- :market_name => details[:name],
465
- :market_type_name => details[:menu_path].to_s.split('\\')[1]
470
+ { exchange_id: nil,
471
+ market_type_id: nil,
472
+ market_matched: nil,
473
+ menu_path: details[:menu_path],
474
+ market_id: details[:market_id],
475
+ market_name: details[:name],
476
+ market_type_name: details[:menu_path].to_s.split('\\')[1]
466
477
  }
467
478
  end
468
479
 
469
480
  def details(market)
470
481
  runners = []
471
- market[:runners][:runner].each { |runner| runners << { :runner_id => runner[:selection_id].to_i, :runner_name => runner[:name] } }
472
- return { :market_id => market[:market_id].to_i, :market_type_id => market[:event_type_id].to_i, :runners => runners }
482
+ market[:runners][:runner].each { |runner| runners << { runner_id: runner[:selection_id].to_i, runner_name: runner[:name] } }
483
+ return { market_id: market[:market_id].to_i, market_type_id: market[:event_type_id].to_i, runners: runners }
473
484
  end
474
485
 
475
486
  def prices(prices)
476
- price_hash = {}
487
+ price_hash = {}
477
488
  prices.gsub! '\:', "\0"
478
489
  pieces = prices.split ":"
479
490
  pieces.each do |piece|
@@ -484,11 +495,11 @@ module Betfair
484
495
  end
485
496
 
486
497
  def combine(market, prices)
487
- market = details(market)
498
+ market = details(market)
488
499
  prices = prices(prices)
489
500
  market[:runners].each do |runner|
490
- runner.merge!( { :market_id => market[:market_id] } )
491
- runner.merge!( { :market_type_id => market[:market_type_id] } )
501
+ runner.merge!( { market_id: market[:market_id] } )
502
+ runner.merge!( { market_type_id: market[:market_type_id] } )
492
503
  runner.merge!(price_string(prices[runner[:runner_id]]))
493
504
  end
494
505
  end
@@ -501,7 +512,7 @@ module Betfair
501
512
  ##
502
513
  def prices_complete(prices)
503
514
  aux_hash = {}
504
- price_hash = {}
515
+ price_hash = {}
505
516
 
506
517
  prices.gsub! '\:', "\0"
507
518
  pieces = prices.split ":"
@@ -510,21 +521,21 @@ module Betfair
510
521
  aux = pieces.first
511
522
  aux.gsub! "\0", '\:'
512
523
  foo = aux.split('~')
513
- aux_hash = {
514
- :market_id => foo[0].to_i,
515
- :currency => foo[1].to_s,
516
- :market_status => foo[2].to_s,
517
- :in_play_delay => foo[3].to_i,
518
- :number_of_winners => foo[4].to_i,
519
- :market_information => foo[5].to_s,
520
- :discount_allowed => foo[6] == 'true' ? true : false,
521
- :market_base_rate => foo[7].to_s,
522
- :refresh_time_in_milliseconds => foo[8].to_i,
523
- :removed_runners => foo[9].to_s,
524
- :bsp_market => foo[10] == 'Y' ? true : false
524
+ aux_hash = {
525
+ market_id: foo[0].to_i,
526
+ currency: foo[1].to_s,
527
+ market_status: foo[2].to_s,
528
+ in_play_delay: foo[3].to_i,
529
+ number_of_winners: foo[4].to_i,
530
+ market_information: foo[5].to_s,
531
+ discount_allowed: foo[6] == 'true' ? true : false,
532
+ market_base_rate: foo[7].to_s,
533
+ refresh_time_in_milliseconds: foo[8].to_i,
534
+ removed_runners: foo[9].to_s,
535
+ bsp_market: foo[10] == 'Y' ? true : false
525
536
  }
526
537
 
527
- # now iterating over the prices excluding the first piece that we already parsed above
538
+ # now iterating over the prices excluding the first piece that we already parsed above
528
539
  pieces[1..-1].each do |piece|
529
540
  piece.gsub! "\0", '\:'
530
541
 
@@ -532,17 +543,17 @@ module Betfair
532
543
  # using the selection_id as hash key
533
544
  price_hash_key = bar[0].to_i
534
545
 
535
- price_hash[price_hash_key] = {
536
- :selection_id => bar[0].to_i,
537
- :order_index => bar[1].to_i,
538
- :total_amount_matched => bar[2].to_f,
539
- :last_price_matched => bar[3].to_f,
540
- :handicap => bar[4].to_f,
541
- :reduction_factor => bar[5].to_f,
542
- :vacant => bar[6] == 'true' ? true : false,
543
- :far_sp_price => bar[7].to_f,
544
- :near_sp_price => bar[8].to_f,
545
- :actual_sp_price => bar[9].to_f
546
+ price_hash[price_hash_key] = {
547
+ selection_id: bar[0].to_i,
548
+ order_index: bar[1].to_i,
549
+ total_amount_matched: bar[2].to_f,
550
+ last_price_matched: bar[3].to_f,
551
+ handicap: bar[4].to_f,
552
+ reduction_factor: bar[5].to_f,
553
+ vacant: bar[6] == 'true' ? true : false,
554
+ far_sp_price: bar[7].to_f,
555
+ near_sp_price: bar[8].to_f,
556
+ actual_sp_price: bar[9].to_f
546
557
  }
547
558
 
548
559
  # merge lay and back prices into price_hash
@@ -558,13 +569,27 @@ module Betfair
558
569
  string_raw = string
559
570
  string = string.split('|')
560
571
 
561
- price = { :prices_string => nil, :runner_matched => 0, :last_back_price => 0, :wom => 0,
562
- :b1 => 0, :b1_available => 0, :b2 => 0, :b2_available => 0, :b3 => 0, :b3_available => 0,
563
- :l1 => 0, :l1_available => 0, :l2 => 0, :l2_available => 0, :l3 => 0, :l3_available => 0
572
+ price = {
573
+ prices_string: nil,
574
+ runner_matched: 0,
575
+ last_back_price: 0,
576
+ wom: 0,
577
+ b1: 0,
578
+ b1_available: 0,
579
+ b2: 0,
580
+ b2_available: 0,
581
+ b3: 0,
582
+ b3_available: 0,
583
+ l1: 0,
584
+ l1_available: 0,
585
+ l2: 0,
586
+ l2_available: 0,
587
+ l3: 0,
588
+ l3_available: 0
564
589
  }
565
590
 
566
591
  if !string[0].nil? and !prices_only
567
- str = string[0].split('~')
592
+ str = string[0].split('~')
568
593
  price[:prices_string] = string_raw
569
594
  price[:runner_matched] = str[2].to_f
570
595
  price[:last_back_price] = str[3].to_f
@@ -572,15 +597,15 @@ module Betfair
572
597
 
573
598
  # Get the b prices (which are actually the l prices)
574
599
  if !string[1].nil?
575
- b = string[1].split('~')
600
+ b = string[1].split('~')
576
601
  price[:b1] = b[0].to_f if !b[0].nil?
577
602
  price[:b1_available] = b[1].to_f if !b[1].nil?
578
603
  price[:b2] = b[4].to_f if !b[5].nil?
579
604
  price[:b2_available] = b[5].to_f if !b[6].nil?
580
605
  price[:b3] = b[8].to_f if !b[8].nil?
581
- price[:b3_available] = b[9].to_f if !b[9].nil?
606
+ price[:b3_available] = b[9].to_f if !b[9].nil?
582
607
  combined_b = price[:b1_available] + price[:b2_available] + price[:b3_available]
583
- end
608
+ end
584
609
 
585
610
  # Get the l prices (which are actually the l prices)
586
611
  if !string[2].nil?
@@ -590,27 +615,27 @@ module Betfair
590
615
  price[:l2] = l[4].to_f if !l[4].nil?
591
616
  price[:l2_available] = l[5].to_f if !l[5].nil?
592
617
  price[:l3] = l[8].to_f if !l[8].nil?
593
- price[:l3_available] = l[9].to_f if !l[9].nil?
618
+ price[:l3_available] = l[9].to_f if !l[9].nil?
594
619
  combined_l = price[:l1_available] + price[:l2_available] + price[:l3_available]
595
620
  end
596
621
 
597
622
  price[:wom] = combined_b / ( combined_b + combined_l ) unless combined_b.nil? or combined_l.nil?
598
623
 
599
- return price
624
+ return price
600
625
  end
601
626
 
602
627
  def odds_table
603
628
  odds_table = []
604
- (1.01..1.99).step(0.01).each { |i| odds_table << i.round(2) }
605
- (2..2.98).step(0.02).each { |i| odds_table << i.round(2) }
606
- (3..3.95).step(0.05).each { |i| odds_table << i.round(2) }
607
- (4..5.9).step(0.1).each {|i| odds_table << i.round(2) }
608
- (6..9.8).step(0.2).each {|i| odds_table << i.round(2) }
609
- (10..19.5).step(0.5).each {|i| odds_table << i.round(2) }
610
- (20..29).step(1).each {|i| odds_table << i.round }
611
- (30..48).step(2).each {|i| odds_table << i.round }
612
- (50..95).step(5).each {|i| odds_table << i.round }
613
- (100..1000).step(10).each {|i| odds_table << i.round }
629
+ (1.01..1.99).step(0.01).each { |i| odds_table << i.round(2) }
630
+ (2..2.98).step(0.02).each { |i| odds_table << i.round(2) }
631
+ (3..3.95).step(0.05).each { |i| odds_table << i.round(2) }
632
+ (4..5.9).step(0.1).each { |i| odds_table << i.round(2) }
633
+ (6..9.8).step(0.2).each { |i| odds_table << i.round(2) }
634
+ (10..19.5).step(0.5).each { |i| odds_table << i.round(2) }
635
+ (20..29).step(1).each { |i| odds_table << i.round }
636
+ (30..48).step(2).each { |i| odds_table << i.round }
637
+ (50..95).step(5).each { |i| odds_table << i.round }
638
+ (100..1000).step(10).each { |i| odds_table << i.round }
614
639
  return odds_table
615
640
  end
616
641
 
@@ -635,15 +660,15 @@ module Betfair
635
660
  end
636
661
 
637
662
  if round_up == true
638
- prc = ( (prc / increment).ceil * increment ).round(2)
663
+ prc = ( (prc / increment).ceil * increment ).round(2)
639
664
  elsif round_down == true
640
- prc = ( (prc / increment).floor * increment ).round(2)
665
+ prc = ( (prc / increment).floor * increment ).round(2)
641
666
  else
642
- prc = ( (prc / increment).round * increment ).round(2)
667
+ prc = ( (prc / increment).round * increment ).round(2)
643
668
  end
644
669
 
645
670
  ot = odds_table # Set up the odds table
646
- unless pips == 0 and odds_table.count > 0 # If pips is 0
671
+ unless pips == 0 and odds_table.count > 0 # If pips is 0
647
672
  index = ot.index(prc) + pips
648
673
  index = 0 if index < 0
649
674
  index = 349 if index > 349
@@ -654,7 +679,7 @@ module Betfair
654
679
 
655
680
  end
656
681
 
657
- def get_odds_spread(back_odds = 0, lay_odds = 0)
682
+ def get_odds_spread(back_odds = 0, lay_odds = 0)
658
683
  back_odds = set_betfair_odds(back_odds)
659
684
  lay_odds = set_betfair_odds(lay_odds)
660
685
  diff = lay_odds[:prc] - back_odds[:prc]
@@ -1,3 +1,3 @@
1
1
  module Betfair
2
- VERSION = "1.0.2"
2
+ VERSION = '1.0.3'
3
3
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: betfair
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.0.2
4
+ version: 1.0.3
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -9,11 +9,11 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2012-04-17 00:00:00.000000000Z
12
+ date: 2012-05-10 00:00:00.000000000Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: savon
16
- requirement: &70363472030920 !ruby/object:Gem::Requirement
16
+ requirement: &70101392500940 !ruby/object:Gem::Requirement
17
17
  none: false
18
18
  requirements:
19
19
  - - ! '>='
@@ -21,10 +21,10 @@ dependencies:
21
21
  version: '0'
22
22
  type: :runtime
23
23
  prerelease: false
24
- version_requirements: *70363472030920
24
+ version_requirements: *70101392500940
25
25
  - !ruby/object:Gem::Dependency
26
26
  name: rake
27
- requirement: &70363472037000 !ruby/object:Gem::Requirement
27
+ requirement: &70101392500220 !ruby/object:Gem::Requirement
28
28
  none: false
29
29
  requirements:
30
30
  - - ! '>='
@@ -32,10 +32,10 @@ dependencies:
32
32
  version: '0'
33
33
  type: :development
34
34
  prerelease: false
35
- version_requirements: *70363472037000
35
+ version_requirements: *70101392500220
36
36
  - !ruby/object:Gem::Dependency
37
37
  name: rspec
38
- requirement: &70363472064740 !ruby/object:Gem::Requirement
38
+ requirement: &70101392499420 !ruby/object:Gem::Requirement
39
39
  none: false
40
40
  requirements:
41
41
  - - ! '>='
@@ -43,10 +43,10 @@ dependencies:
43
43
  version: '0'
44
44
  type: :development
45
45
  prerelease: false
46
- version_requirements: *70363472064740
46
+ version_requirements: *70101392499420
47
47
  - !ruby/object:Gem::Dependency
48
48
  name: savon_spec
49
- requirement: &70363472247640 !ruby/object:Gem::Requirement
49
+ requirement: &70101392498480 !ruby/object:Gem::Requirement
50
50
  none: false
51
51
  requirements:
52
52
  - - ! '>='
@@ -54,7 +54,7 @@ dependencies:
54
54
  version: '0'
55
55
  type: :development
56
56
  prerelease: false
57
- version_requirements: *70363472247640
57
+ version_requirements: *70101392498480
58
58
  description: Gem for accessing the Betfair API.
59
59
  email:
60
60
  - lukeb@lukebyrne.com
@@ -75,7 +75,6 @@ files:
75
75
  - examples/simplebot/README.md
76
76
  - examples/simplebot/daemonize.rb
77
77
  - examples/simplebot/monit.conf
78
- - examples/simplebot/simplebot.log
79
78
  - examples/simplebot/simplebot.rb
80
79
  - lib/betfair.rb
81
80
  - lib/betfair/api.rb
@@ -121,7 +120,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
121
120
  version: '0'
122
121
  segments:
123
122
  - 0
124
- hash: -2850645110970383050
123
+ hash: 3477477127880861030
125
124
  required_rubygems_version: !ruby/object:Gem::Requirement
126
125
  none: false
127
126
  requirements:
@@ -130,7 +129,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
130
129
  version: '0'
131
130
  segments:
132
131
  - 0
133
- hash: -2850645110970383050
132
+ hash: 3477477127880861030
134
133
  requirements: []
135
134
  rubyforge_project: betfair
136
135
  rubygems_version: 1.8.10
File without changes