betfair 1.0.3 → 1.0.6
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/Gemfile +3 -2
- data/README.md +23 -22
- data/betfair.gemspec +4 -3
- data/examples/README.md +3 -0
- data/lib/betfair/api.rb +193 -216
- data/lib/betfair/version.rb +1 -1
- data/spec/betfair/api_spec.rb +75 -68
- data/spec/spec_helper.rb +9 -1
- metadata +54 -25
- data/README_OLD +0 -170
- data/examples/bar.rb +0 -23
- data/examples/foo.rb +0 -42
- data/examples/simplebot.log +0 -4
- data/examples/simplebot/README.md +0 -51
- data/examples/simplebot/daemonize.rb +0 -8
- data/examples/simplebot/monit.conf +0 -6
- data/examples/simplebot/simplebot.rb +0 -170
data/lib/betfair/version.rb
CHANGED
data/spec/betfair/api_spec.rb
CHANGED
@@ -3,15 +3,17 @@ require 'spec_helper'
|
|
3
3
|
|
4
4
|
module Betfair
|
5
5
|
|
6
|
+
|
6
7
|
describe "Helper methods for mashing the data from the API - " do
|
7
8
|
|
9
|
+
include LoginHelper
|
10
|
+
|
8
11
|
before(:all) do
|
9
|
-
|
10
|
-
@session_token = @bf.login('username', 'password', 82, 0, 0, nil)
|
12
|
+
login()
|
11
13
|
@helpers = Betfair::Helpers.new
|
12
14
|
end
|
13
15
|
|
14
|
-
describe "
|
16
|
+
describe "Create a hash from the get_all_markets API call" do
|
15
17
|
it "pulls the relevant stuff out of get_all_markets and puts it in a hash" do
|
16
18
|
savon.expects(:get_all_markets).returns(:success)
|
17
19
|
markets = @bf.get_all_markets(@session_token, 2)
|
@@ -20,7 +22,7 @@ module Betfair
|
|
20
22
|
end
|
21
23
|
end
|
22
24
|
|
23
|
-
describe "
|
25
|
+
describe "Create a hash for the market details" do
|
24
26
|
it "pulls the relevant stuff out of market details and puts it in a hash" do
|
25
27
|
savon.expects(:get_market).returns(:success)
|
26
28
|
market = @bf.get_market(@session_token, 2, 10038633)
|
@@ -29,8 +31,8 @@ module Betfair
|
|
29
31
|
end
|
30
32
|
end
|
31
33
|
|
32
|
-
describe "
|
33
|
-
it "sort the
|
34
|
+
describe "Cleans up the get market details" do
|
35
|
+
it "sort the selections for each market out " do
|
34
36
|
savon.expects(:get_market).returns(:success)
|
35
37
|
market = @bf.get_market(@session_token, 2, 10038633)
|
36
38
|
details = @helpers.details(market)
|
@@ -38,7 +40,7 @@ module Betfair
|
|
38
40
|
end
|
39
41
|
end
|
40
42
|
|
41
|
-
describe "
|
43
|
+
describe "Get the price string for a selection" do
|
42
44
|
it "so that we can combine it together with market info" do
|
43
45
|
savon.expects(:get_market_prices_compressed).returns(:success)
|
44
46
|
prices = @bf.get_market_prices_compressed(@session_token, 2, 10038633)
|
@@ -47,8 +49,8 @@ module Betfair
|
|
47
49
|
end
|
48
50
|
end
|
49
51
|
|
50
|
-
describe "
|
51
|
-
it "
|
52
|
+
describe "Combine market details and selection prices api call" do
|
53
|
+
it "Combines the two api calls of get_market and get_market_prices_compressed " do
|
52
54
|
|
53
55
|
savon.expects(:get_market).returns(:success)
|
54
56
|
market = @bf.get_market(@session_token, 2, 10038633)
|
@@ -60,60 +62,60 @@ module Betfair
|
|
60
62
|
combined.should_not be_nil
|
61
63
|
end
|
62
64
|
end
|
63
|
-
|
64
|
-
describe "set up an odds tables of all possible Betfair Odds" do
|
65
|
-
it "should return a hash of all possible Betfair odds with correct increments" do
|
66
|
-
odds_table = @helpers.odds_table
|
67
|
-
odds_table.should_not be_nil
|
68
|
-
odds_table.should be_an_instance_of(Array)
|
69
|
-
odds_table.count.should eq(350)
|
70
|
-
odds_table[256].should eq(85)
|
71
|
-
end
|
72
|
-
|
73
|
-
it "should return a standard hash" do
|
74
|
-
betfair_odds = @helpers.set_betfair_odds(275, 0, false, false)
|
75
|
-
betfair_odds.should be_an_instance_of(Hash)
|
76
|
-
betfair_odds[:price].should eq(275)
|
77
|
-
betfair_odds[:prc].should eq(280)
|
78
|
-
betfair_odds[:increment].should eq(10)
|
79
|
-
betfair_odds[:pips].should eq(0)
|
80
|
-
end
|
81
|
-
|
82
|
-
it "should return a standard hash with prc at 1 pip and price rounded up" do
|
83
|
-
betfair_odds = @helpers.set_betfair_odds(2.31, 1, true, false)
|
84
|
-
betfair_odds.should be_an_instance_of(Hash)
|
85
|
-
betfair_odds[:price].should eq(2.31)
|
86
|
-
betfair_odds[:prc].should eq(2.34)
|
87
|
-
betfair_odds[:increment].should eq(0.02)
|
88
|
-
betfair_odds[:pips].should eq(1)
|
89
|
-
end
|
90
|
-
|
91
|
-
it "should return a standard hash with prc at 2 pip and price rounded down" do
|
92
|
-
betfair_odds = @helpers.set_betfair_odds(2.31, 5, false, true)
|
93
|
-
betfair_odds.should be_an_instance_of(Hash)
|
94
|
-
betfair_odds[:price].should eq(2.31)
|
95
|
-
betfair_odds[:prc].should eq(2.4)
|
96
|
-
betfair_odds[:increment].should eq(0.02)
|
97
|
-
betfair_odds[:pips].should eq(5)
|
98
|
-
end
|
99
|
-
|
100
|
-
it "should return an even spread off odds based on the odds_table method" do
|
101
|
-
spread = @helpers.get_odds_spread(271, 343)
|
102
|
-
spread.should eq(70.0)
|
103
|
-
spread = @helpers.get_odds_spread(1.28, 3.43)
|
104
|
-
spread.should eq(2.17)
|
105
|
-
end
|
106
|
-
|
107
|
-
end
|
108
|
-
|
109
|
-
|
110
|
-
end
|
111
65
|
|
66
|
+
describe "set up an odds tables of all possible Betfair Odds" do
|
67
|
+
it "should return a hash of all possible Betfair odds with correct increments" do
|
68
|
+
odds_table = @helpers.odds_table
|
69
|
+
odds_table.should_not be_nil
|
70
|
+
odds_table.should be_an_instance_of(Array)
|
71
|
+
odds_table.count.should eq(350)
|
72
|
+
odds_table[256].should eq(85)
|
73
|
+
end
|
74
|
+
|
75
|
+
it "should return a standard hash" do
|
76
|
+
betfair_odds = @helpers.set_betfair_odds(275, 0, false, false)
|
77
|
+
betfair_odds.should be_an_instance_of(Hash)
|
78
|
+
betfair_odds[:price].should eq(275)
|
79
|
+
betfair_odds[:prc].should eq(280)
|
80
|
+
betfair_odds[:increment].should eq(10)
|
81
|
+
betfair_odds[:pips].should eq(0)
|
82
|
+
end
|
83
|
+
|
84
|
+
it "should return a standard hash with prc at 1 pip and price rounded up" do
|
85
|
+
betfair_odds = @helpers.set_betfair_odds(2.31, 1, true, false)
|
86
|
+
betfair_odds.should be_an_instance_of(Hash)
|
87
|
+
betfair_odds[:price].should eq(2.31)
|
88
|
+
betfair_odds[:prc].should eq(2.34)
|
89
|
+
betfair_odds[:increment].should eq(0.02)
|
90
|
+
betfair_odds[:pips].should eq(1)
|
91
|
+
end
|
92
|
+
|
93
|
+
it "should return a standard hash with prc at 2 pip and price rounded down" do
|
94
|
+
betfair_odds = @helpers.set_betfair_odds(2.31, 5, false, true)
|
95
|
+
betfair_odds.should be_an_instance_of(Hash)
|
96
|
+
betfair_odds[:price].should eq(2.31)
|
97
|
+
betfair_odds[:prc].should eq(2.4)
|
98
|
+
betfair_odds[:increment].should eq(0.02)
|
99
|
+
betfair_odds[:pips].should eq(5)
|
100
|
+
end
|
101
|
+
|
102
|
+
it "should return an even spread of odds based on the odds_table method" do
|
103
|
+
spread = @helpers.get_odds_spread(271, 343)
|
104
|
+
spread.should eq(70.0)
|
105
|
+
spread = @helpers.get_odds_spread(1.28, 3.43)
|
106
|
+
spread.should eq(2.17)
|
107
|
+
end
|
108
|
+
|
109
|
+
end
|
110
|
+
|
111
|
+
end
|
112
|
+
|
112
113
|
describe "Placing and cancelling bets - " do
|
113
114
|
|
115
|
+
include LoginHelper
|
116
|
+
|
114
117
|
before(:all) do
|
115
|
-
|
116
|
-
@session_token = @bf.login('username', 'password', 82, 0, 0, nil)
|
118
|
+
login()
|
117
119
|
end
|
118
120
|
|
119
121
|
describe "place bet success" do
|
@@ -136,9 +138,9 @@ module Betfair
|
|
136
138
|
it "should place mutliple bets on the exchange via the api" do
|
137
139
|
savon.expects(:place_bets).returns(:success)
|
138
140
|
bets = []
|
139
|
-
bets << { market_id: 104184109,
|
141
|
+
bets << { market_id: 104184109, selection_id: 58805, bet_type: 'B', price: 2.0, size: 2.0, asian_line_id: 0,
|
140
142
|
bet_category_type: 'E', bet_peristence_type: 'NONE', bsp_liability: 0 }
|
141
|
-
bets << { market_id: 104184109,
|
143
|
+
bets << { market_id: 104184109, selection_id: 12234, bet_type: 'L', price: 1.5, size: 2.0, asian_line_id: 0,
|
142
144
|
bet_category_type: 'E', bet_peristence_type: 'NONE', bsp_liability: 0 }
|
143
145
|
bets = @bf.place_multiple_bets(@session_token, 1, bets)
|
144
146
|
bets[:bet_id].should eq('16939643915')
|
@@ -149,9 +151,9 @@ module Betfair
|
|
149
151
|
it "should return an error message" do
|
150
152
|
savon.expects(:place_bets).returns(:fail)
|
151
153
|
bets = []
|
152
|
-
bets << { market_id: 104184109,
|
154
|
+
bets << { market_id: 104184109, selection_id: 58805, bet_type: 'B', price: 2.0, size: 2.0, asian_line_id: 0,
|
153
155
|
bet_category_type: 'E', bet_peristence_type: 'NONE', bsp_liability: 0 }
|
154
|
-
bets << { market_id: 104184109,
|
156
|
+
bets << { market_id: 104184109, selection_id: 12234, bet_type: 'L', price: 1.5, size: 2.0, asian_line_id: 0,
|
155
157
|
bet_category_type: 'E', bet_peristence_type: 'NONE', bsp_liability: 0 }
|
156
158
|
error_code = @bf.place_multiple_bets(@session_token, 1, bets)
|
157
159
|
error_code[:result_code].should eq('INVALID_SIZE')
|
@@ -235,9 +237,11 @@ module Betfair
|
|
235
237
|
end
|
236
238
|
|
237
239
|
describe "Reading account details - " do
|
240
|
+
|
241
|
+
include LoginHelper
|
242
|
+
|
238
243
|
before(:all) do
|
239
|
-
|
240
|
-
@session_token = @bf.login('username', 'password', 82, 0, 0, nil)
|
244
|
+
login()
|
241
245
|
end
|
242
246
|
|
243
247
|
describe "reading wallet contents" do
|
@@ -251,9 +255,10 @@ module Betfair
|
|
251
255
|
|
252
256
|
describe "Basic read methods from the API - " do
|
253
257
|
|
258
|
+
include LoginHelper
|
259
|
+
|
254
260
|
before(:all) do
|
255
|
-
|
256
|
-
@session_token = @bf.login('username', 'password', 82, 0, 0, nil)
|
261
|
+
login()
|
257
262
|
end
|
258
263
|
|
259
264
|
describe "get all markets success" do
|
@@ -351,6 +356,7 @@ module Betfair
|
|
351
356
|
savon.expects(:keep_alive).returns(:success)
|
352
357
|
session_token = @bf.keep_alive(@session_token)
|
353
358
|
session_token.should eq('AXwtUFENz+/mWaatVtjUosug26+TYLYWiHPhRFRiabs=')
|
359
|
+
session_token.should be_success
|
354
360
|
end
|
355
361
|
end
|
356
362
|
|
@@ -359,6 +365,7 @@ module Betfair
|
|
359
365
|
savon.expects(:keep_alive).returns(:fail)
|
360
366
|
error_code = @bf.keep_alive(@session_token)
|
361
367
|
error_code.should eq('NO_SESSION')
|
368
|
+
error_code.should_not be_success
|
362
369
|
end
|
363
370
|
end
|
364
371
|
|
@@ -458,4 +465,4 @@ module Betfair
|
|
458
465
|
|
459
466
|
end
|
460
467
|
|
461
|
-
end
|
468
|
+
end
|
data/spec/spec_helper.rb
CHANGED
@@ -8,5 +8,13 @@ RSpec.configure do |config|
|
|
8
8
|
HTTPI.log = false
|
9
9
|
Savon.log = false
|
10
10
|
config.include Savon::Spec::Macros
|
11
|
-
Savon::Spec::Fixture.path = File.expand_path(
|
11
|
+
Savon::Spec::Fixture.path = File.expand_path('../fixtures', __FILE__)
|
12
|
+
end
|
13
|
+
|
14
|
+
module LoginHelper
|
15
|
+
def login( response=:success )
|
16
|
+
@bf = Betfair::API.new
|
17
|
+
savon.expects(:login).returns( response )
|
18
|
+
@session_token = @bf.login('username', 'password', 82, 0, 0, nil)
|
19
|
+
end
|
12
20
|
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.
|
4
|
+
version: 1.0.6
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -9,22 +9,27 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2012-
|
12
|
+
date: 2012-07-28 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: savon
|
16
|
-
requirement:
|
16
|
+
requirement: !ruby/object:Gem::Requirement
|
17
17
|
none: false
|
18
18
|
requirements:
|
19
|
-
- -
|
19
|
+
- - <=
|
20
20
|
- !ruby/object:Gem::Version
|
21
|
-
version:
|
21
|
+
version: 0.8.6
|
22
22
|
type: :runtime
|
23
23
|
prerelease: false
|
24
|
-
version_requirements:
|
24
|
+
version_requirements: !ruby/object:Gem::Requirement
|
25
|
+
none: false
|
26
|
+
requirements:
|
27
|
+
- - <=
|
28
|
+
- !ruby/object:Gem::Version
|
29
|
+
version: 0.8.6
|
25
30
|
- !ruby/object:Gem::Dependency
|
26
31
|
name: rake
|
27
|
-
requirement:
|
32
|
+
requirement: !ruby/object:Gem::Requirement
|
28
33
|
none: false
|
29
34
|
requirements:
|
30
35
|
- - ! '>='
|
@@ -32,10 +37,15 @@ dependencies:
|
|
32
37
|
version: '0'
|
33
38
|
type: :development
|
34
39
|
prerelease: false
|
35
|
-
version_requirements:
|
40
|
+
version_requirements: !ruby/object:Gem::Requirement
|
41
|
+
none: false
|
42
|
+
requirements:
|
43
|
+
- - ! '>='
|
44
|
+
- !ruby/object:Gem::Version
|
45
|
+
version: '0'
|
36
46
|
- !ruby/object:Gem::Dependency
|
37
47
|
name: rspec
|
38
|
-
requirement:
|
48
|
+
requirement: !ruby/object:Gem::Requirement
|
39
49
|
none: false
|
40
50
|
requirements:
|
41
51
|
- - ! '>='
|
@@ -43,18 +53,44 @@ dependencies:
|
|
43
53
|
version: '0'
|
44
54
|
type: :development
|
45
55
|
prerelease: false
|
46
|
-
version_requirements:
|
47
|
-
- !ruby/object:Gem::Dependency
|
48
|
-
name: savon_spec
|
49
|
-
requirement: &70101392498480 !ruby/object:Gem::Requirement
|
56
|
+
version_requirements: !ruby/object:Gem::Requirement
|
50
57
|
none: false
|
51
58
|
requirements:
|
52
59
|
- - ! '>='
|
53
60
|
- !ruby/object:Gem::Version
|
54
61
|
version: '0'
|
62
|
+
- !ruby/object:Gem::Dependency
|
63
|
+
name: savon_spec
|
64
|
+
requirement: !ruby/object:Gem::Requirement
|
65
|
+
none: false
|
66
|
+
requirements:
|
67
|
+
- - '='
|
68
|
+
- !ruby/object:Gem::Version
|
69
|
+
version: 0.1.5
|
70
|
+
type: :development
|
71
|
+
prerelease: false
|
72
|
+
version_requirements: !ruby/object:Gem::Requirement
|
73
|
+
none: false
|
74
|
+
requirements:
|
75
|
+
- - '='
|
76
|
+
- !ruby/object:Gem::Version
|
77
|
+
version: 0.1.5
|
78
|
+
- !ruby/object:Gem::Dependency
|
79
|
+
name: mocha
|
80
|
+
requirement: !ruby/object:Gem::Requirement
|
81
|
+
none: false
|
82
|
+
requirements:
|
83
|
+
- - '='
|
84
|
+
- !ruby/object:Gem::Version
|
85
|
+
version: 0.10.4
|
55
86
|
type: :development
|
56
87
|
prerelease: false
|
57
|
-
version_requirements:
|
88
|
+
version_requirements: !ruby/object:Gem::Requirement
|
89
|
+
none: false
|
90
|
+
requirements:
|
91
|
+
- - '='
|
92
|
+
- !ruby/object:Gem::Version
|
93
|
+
version: 0.10.4
|
58
94
|
description: Gem for accessing the Betfair API.
|
59
95
|
email:
|
60
96
|
- lukeb@lukebyrne.com
|
@@ -66,16 +102,9 @@ files:
|
|
66
102
|
- API Ref Doc.pdf
|
67
103
|
- Gemfile
|
68
104
|
- README.md
|
69
|
-
- README_OLD
|
70
105
|
- Rakefile
|
71
106
|
- betfair.gemspec
|
72
|
-
- examples/
|
73
|
-
- examples/foo.rb
|
74
|
-
- examples/simplebot.log
|
75
|
-
- examples/simplebot/README.md
|
76
|
-
- examples/simplebot/daemonize.rb
|
77
|
-
- examples/simplebot/monit.conf
|
78
|
-
- examples/simplebot/simplebot.rb
|
107
|
+
- examples/README.md
|
79
108
|
- lib/betfair.rb
|
80
109
|
- lib/betfair/api.rb
|
81
110
|
- lib/betfair/version.rb
|
@@ -120,7 +149,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
120
149
|
version: '0'
|
121
150
|
segments:
|
122
151
|
- 0
|
123
|
-
hash:
|
152
|
+
hash: 741636228280030738
|
124
153
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
125
154
|
none: false
|
126
155
|
requirements:
|
@@ -129,10 +158,10 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
129
158
|
version: '0'
|
130
159
|
segments:
|
131
160
|
- 0
|
132
|
-
hash:
|
161
|
+
hash: 741636228280030738
|
133
162
|
requirements: []
|
134
163
|
rubyforge_project: betfair
|
135
|
-
rubygems_version: 1.8.
|
164
|
+
rubygems_version: 1.8.24
|
136
165
|
signing_key:
|
137
166
|
specification_version: 3
|
138
167
|
summary: Betfair API gem.
|
data/README_OLD
DELETED
@@ -1,170 +0,0 @@
|
|
1
|
-
BETFAIR API
|
2
|
-
===========
|
3
|
-
|
4
|
-
------------
|
5
|
-
Installation
|
6
|
-
------------
|
7
|
-
|
8
|
-
Betfair is available through
|
9
|
-
[Rubygems](http://rubygems.org/gems/betfair) and can be installed via:
|
10
|
-
|
11
|
-
gem install betfair
|
12
|
-
|
13
|
-
OR with bundler: `gem 'betfair'` and `bundle install`
|
14
|
-
|
15
|
-
------------
|
16
|
-
Introduction
|
17
|
-
------------
|
18
|
-
|
19
|
-
irb
|
20
|
-
|
21
|
-
require 'betfair'
|
22
|
-
|
23
|
-
or from a Gemfile
|
24
|
-
|
25
|
-
gem 'betfair'
|
26
|
-
|
27
|
-
# create a client for the General API so that you can log in.
|
28
|
-
bf = Betfair::API.new
|
29
|
-
|
30
|
-
If you want to use a proxy or turn on Savon's logging then just pass
|
31
|
-
in like so:
|
32
|
-
|
33
|
-
# This is a local squid proxy I tunnel to from my local
|
34
|
-
# machine to access the host server in UK for dev purposes.
|
35
|
-
proxy = 'http://localhost:8888'
|
36
|
-
logging = true
|
37
|
-
bf = Betfair::API.new(proxy, logging)
|
38
|
-
|
39
|
-
Proxies can be useful if you want to host on a cloud service such as
|
40
|
-
Heroku, as you will be denied access to the Betfair API from the
|
41
|
-
USA. Just proxy via a server from a country that Betfair allows, such
|
42
|
-
as the UK.
|
43
|
-
|
44
|
-
At the heart of the Betfair API is the `session_token`. In order to
|
45
|
-
get one of these simply call:
|
46
|
-
|
47
|
-
session_token = bf.login('username', 'password', 82, 0, 0, nil)
|
48
|
-
|
49
|
-
Username and Password are fairly obvious. The `session_token` value
|
50
|
-
you get back responds to #success? which will tell you whether login
|
51
|
-
was successful or not. If `session_token.success?` returns false,
|
52
|
-
`session_token.to_s` will give you the error message.
|
53
|
-
|
54
|
-
82 is the standard Product Id, you may have a different one depending
|
55
|
-
on the level of Betfair API access that you have.
|
56
|
-
|
57
|
-
You can ignore the rest and leave as is, but they refer to Vendor
|
58
|
-
Software Id, Location Id, Ip Address as required by the Betfair API.
|
59
|
-
|
60
|
-
-----
|
61
|
-
Read
|
62
|
-
-----
|
63
|
-
|
64
|
-
markets =
|
65
|
-
bf.get_all_markets(session_token, 1, [1,3], nil, nil, nil, nil)
|
66
|
-
|
67
|
-
# We can either pull the market ID out of `markets`, or use a
|
68
|
-
# stored value:
|
69
|
-
|
70
|
-
market_id = 100386338
|
71
|
-
exchange_id = 1 # or 2 for the Australian exchange
|
72
|
-
|
73
|
-
# get_market returns a Hash with the details of the identified
|
74
|
-
# market, including the commission as
|
75
|
-
# `details[:market_base_rate]`, and information on the runners
|
76
|
-
# (including their ids, which you need to place a bet) as
|
77
|
-
# `details[:runners]`.
|
78
|
-
|
79
|
-
details =
|
80
|
-
bf.get_market(session_token, exchange_id, market_id)
|
81
|
-
|
82
|
-
# This returns an encoded string with some back prices and depths
|
83
|
-
# for the given market.
|
84
|
-
|
85
|
-
prices = bf.get_market_prices_compressed(session_token,
|
86
|
-
exchange_id,
|
87
|
-
market_id)
|
88
|
-
|
89
|
-
helpers = Betfair::Helpers.new
|
90
|
-
|
91
|
-
helpers.market_info(details)
|
92
|
-
helpers.combine(details, prices)
|
93
|
-
|
94
|
-
# The get_all_markets api call returns all markets in one huge
|
95
|
-
# string. This helper provides them all in handy hashes with
|
96
|
-
# market id as key.
|
97
|
-
|
98
|
-
helpers.all_markets(markets)
|
99
|
-
|
100
|
-
---
|
101
|
-
Bet
|
102
|
-
---
|
103
|
-
|
104
|
-
bf.place_bet(session_token, 1, 104184109, 58805, 'B', 10.0, 5.0)
|
105
|
-
bf.cancel_bet(session_token, 1, 16939730542)
|
106
|
-
|
107
|
-
----------
|
108
|
-
API Limits
|
109
|
-
----------
|
110
|
-
http://bdp.betfair.com/index.php?option=com_content&task=view&id=36&Itemid=64
|
111
|
-
|
112
|
-
------------
|
113
|
-
Requirements
|
114
|
-
------------
|
115
|
-
|
116
|
-
savon
|
117
|
-
|
118
|
-
------------------------
|
119
|
-
Requirements for testing
|
120
|
-
------------------------
|
121
|
-
|
122
|
-
savon_spec
|
123
|
-
rspec
|
124
|
-
rake
|
125
|
-
|
126
|
-
----------
|
127
|
-
To Do
|
128
|
-
----------
|
129
|
-
|
130
|
-
- The WOM of money in Helpers#price_string returns 0 if either all b1,b2,b3 or l1,l2,l3 are all 0
|
131
|
-
- Add some error checking to the Betfair::Helper methods
|
132
|
-
- Finish of the mash method, to return a nice hash of all market and
|
133
|
-
runner info
|
134
|
-
- Write a spec for the mashed method
|
135
|
-
|
136
|
-
----------
|
137
|
-
Contribute
|
138
|
-
----------
|
139
|
-
|
140
|
-
I have only added the Betfair API method calls that I need.
|
141
|
-
|
142
|
-
Feel free to fork this repo, add what you need to with the relevant
|
143
|
-
RSpec tests and send me a pull request.
|
144
|
-
|
145
|
-
-------
|
146
|
-
License
|
147
|
-
-------
|
148
|
-
|
149
|
-
(The MIT License)
|
150
|
-
|
151
|
-
Copyright (c) 2011 Luke Byrne
|
152
|
-
|
153
|
-
Permission is hereby granted, free of charge, to any person obtaining
|
154
|
-
a copy of this software and associated documentation files (the
|
155
|
-
'Software'), to deal in the Software without restriction, including
|
156
|
-
without limitation the rights to use, copy, modify, merge, publish,
|
157
|
-
distribute, sublicense, and/or sell copies of the Software, and to
|
158
|
-
permit persons to whom the Software is furnished to do so, subject to
|
159
|
-
the following conditions:
|
160
|
-
|
161
|
-
The above copyright notice and this permission notice shall be
|
162
|
-
included in all copies or substantial portions of the Software.
|
163
|
-
|
164
|
-
THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND,
|
165
|
-
EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
|
166
|
-
MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
|
167
|
-
NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
|
168
|
-
LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
|
169
|
-
OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
|
170
|
-
WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|