betfair 0.0.12

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1,3 @@
1
+ module Betfair
2
+ VERSION = "0.0.12"
3
+ end
@@ -0,0 +1,214 @@
1
+ require 'spec_helper'
2
+
3
+ module Betfair
4
+
5
+ describe "Helper methods for mashing the data from the API" do
6
+
7
+ before(:all) do
8
+ @bf = Betfair::API.new
9
+ @session_token = @bf.login('username', 'password', 82, 0, 0, nil)
10
+ @helpers = Betfair::Helpers.new
11
+ end
12
+
13
+ describe "Create a hash for the market details" do
14
+ it "pulls the relevant stuff out of market details and puts it in a hash" do
15
+ savon.expects(:get_market).returns(:success)
16
+ market = @bf.get_market(@session_token, 2, 10038633)
17
+ market_info = @helpers.market_info(market)
18
+ market_info.should_not be_nil
19
+ end
20
+ end
21
+
22
+ describe "Cleans up the get market details" do
23
+ it "sort the runners for each market out " do
24
+ savon.expects(:get_market).returns(:success)
25
+ market = @bf.get_market(@session_token, 2, 10038633)
26
+ details = @helpers.details(market)
27
+ details.should_not be_nil
28
+ end
29
+ end
30
+
31
+ describe "Get the price string for a runner" do
32
+ it "so that we can combine it together with market info" do
33
+ savon.expects(:get_market_prices_compressed).returns(:success)
34
+ prices = @bf.get_market_prices_compressed(@session_token, 2, 10038633)
35
+ prices = @helpers.prices(prices)
36
+ prices.should_not be_nil
37
+ end
38
+ end
39
+
40
+ describe "Combine market details and runner prices api call" do
41
+ it "Combines the two api calls of get_market and get_market_prices_compressed " do
42
+
43
+ savon.expects(:get_market).returns(:success)
44
+ market = @bf.get_market(@session_token, 2, 10038633)
45
+
46
+ savon.expects(:get_market_prices_compressed).returns(:success)
47
+ prices = @bf.get_market_prices_compressed(@session_token, 2, 10038633)
48
+
49
+ combined = @helpers.combine(market, prices)
50
+ combined.should_not be_nil
51
+ end
52
+ end
53
+
54
+ end
55
+
56
+ describe "Placing and cancelling bets" do
57
+
58
+ before(:all) do
59
+ @bf = Betfair::API.new
60
+ @session_token = @bf.login('username', 'password', 82, 0, 0, nil)
61
+ end
62
+
63
+ describe "place bet success" do
64
+ it "should place a bet on the exchange via the api" do
65
+ savon.expects(:place_bets).returns(:success)
66
+ bet = @bf.place_bet(@session_token, 1, 104184109, 58805, 'B', 10.0, 5.0)
67
+ bet.should_not be_nil
68
+ end
69
+ end
70
+
71
+ describe "place bet fail" do
72
+ it "should return an error message" do
73
+ savon.expects(:place_bets).returns(:fail)
74
+ error_code = @bf.place_bet(@session_token, 1, 104184109, 58805, 'B', 2.0, 2.0)
75
+ error_code[:result_code].should eq('INVALID_SIZE')
76
+ end
77
+ end
78
+
79
+ describe "cancel bet success" do
80
+ it "should cancel a bet on the exchange via the api" do
81
+ savon.expects(:cancel_bets).returns(:success)
82
+ bet = @bf.cancel_bet(@session_token, 3, 16939689578)
83
+ bet.should_not be_nil
84
+ end
85
+ end
86
+
87
+ describe "cancel bet fail" do
88
+ it "should fail to cancel a bet on the exchange via the api" do
89
+ savon.expects(:cancel_bets).returns(:fail)
90
+ error_code = @bf.cancel_bet(@session_token, 3, 16939689578)
91
+ error_code.should eq('API_ERROR')
92
+ end
93
+ end
94
+
95
+ end
96
+
97
+ describe "Basic read methods from the API" do
98
+
99
+ before(:all) do
100
+ @bf = Betfair::API.new
101
+ @session_token = @bf.login('username', 'password', 82, 0, 0, nil)
102
+ end
103
+
104
+ describe "get all markets success" do
105
+ it "should return a hash of all markets given the exchange id and and array of market type ids" do
106
+ savon.expects(:get_all_markets).returns(:success)
107
+ markets = @bf.get_all_markets(@session_token, 1, [1,3], nil, nil, nil, nil)
108
+ markets.should_not be_nil
109
+ end
110
+ end
111
+
112
+ describe "get all markets fail" do
113
+ it "should return an error message given the exchange id and and array of market type ids and no session id" do
114
+ savon.expects(:get_all_markets).returns(:fail)
115
+ error_code = @bf.get_all_markets(@session_token, 1, [1,3], nil, nil, nil, nil)
116
+ error_code.should eq('API_ERROR')
117
+ end
118
+ end
119
+
120
+ describe "get market success" do
121
+ it "should return the details for a market given the exchange id and market id" do
122
+ savon.expects(:get_market).returns(:success)
123
+ market = @bf.get_market(@session_token, 2, 10038633)
124
+ market.should_not be_nil
125
+ end
126
+ end
127
+
128
+ describe "get markets fail" do
129
+ it "should return an error message given the wrong exchange id or market id" do
130
+ savon.expects(:get_market).returns(:fail)
131
+ error_code = @bf.get_market(@session_token, 2, 10038633)
132
+ error_code.should eq('INVALID_MARKET')
133
+ end
134
+ end
135
+
136
+ describe "get market prices compressed success" do
137
+ it "should return comrpessed market prices given the exchange id and market id" do
138
+ savon.expects(:get_market_prices_compressed).returns(:success)
139
+ market = @bf.get_market_prices_compressed(@session_token, 2, 10038633)
140
+ market.should_not be_nil
141
+ end
142
+ end
143
+
144
+ describe "get market prices compressed fail" do
145
+ it "should return an error message given the wrong exchange id or market id" do
146
+ savon.expects(:get_market_prices_compressed).returns(:fail)
147
+ error_code = @bf.get_market_prices_compressed(@session_token, 2, 10038633)
148
+ error_code.should eq('INVALID_MARKET')
149
+ end
150
+ end
151
+
152
+ describe "get active event types success" do
153
+ it "should return active event types given the locale" do
154
+ savon.expects(:get_active_event_types).returns(:success)
155
+ events = @bf.get_active_event_types(@session_token, 'en')
156
+ events.should_not be_nil
157
+ end
158
+ end
159
+
160
+ end
161
+
162
+ describe "General logins, logouts methods and proxys and Savon logging etc" do
163
+
164
+ before(:all) do
165
+ @bf = Betfair::API.new
166
+ end
167
+
168
+ describe "login success" do
169
+ it "should return a session token" do
170
+ savon.expects(:login).returns(:success)
171
+ session_token = @bf.login('username', 'password', 82, 0, 0, nil).to_s
172
+ session_token.should be_an_instance_of(String)
173
+ end
174
+ end
175
+
176
+ describe "login fail" do
177
+ it "should return an error" do
178
+ savon.expects(:login).returns(:fail)
179
+ error_code = @bf.login('username', 'password', 82, 0, 0, nil)
180
+ error_code.should eq('PRODUCT_REQUIRES_FUNDED_ACCOUNT')
181
+ end
182
+ end
183
+
184
+ describe "proxy success" do
185
+ it "should return a session token" do
186
+ savon.expects(:login).returns(:success)
187
+ proxy = 'http://localhost:8888'
188
+ session_token = Betfair::API.new(proxy).login('username', 'password', 82, 0, 0, nil).to_s
189
+ session_token.should be_an_instance_of(String)
190
+ end
191
+ end
192
+
193
+ describe "proxy fail" do
194
+ it "should return an error" do
195
+ savon.expects(:login).returns(:fail)
196
+ proxy = 'http://localhost:8888'
197
+ error_code = Betfair::API.new(proxy).login('username', 'password', 82, 0, 0, nil)
198
+ error_code.should eq('PRODUCT_REQUIRES_FUNDED_ACCOUNT')
199
+ end
200
+ end
201
+
202
+ describe "savon logging on" do
203
+ it "should return a session token" do
204
+ savon.expects(:login).returns(:success)
205
+ proxy = nil
206
+ logging = true
207
+ session_token = Betfair::API.new(proxy, logging).login('username', 'password', 82, 0, 0, nil).to_s
208
+ session_token.should be_an_instance_of(String)
209
+ end
210
+ end
211
+
212
+ end
213
+
214
+ end
@@ -0,0 +1,17 @@
1
+ <soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:n2="http://www.betfair.com/publicapi/types/exchange/v5/" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
2
+ <soap:Body>
3
+ <n:cancelBetsResponse xmlns:n="http://www.betfair.com/publicapi/v5/BFExchangeService/">
4
+ <n:Result xsi:type="n2:CancelBetsResp">
5
+ <header xsi:type="n2:APIResponseHeader">
6
+ <errorCode xsi:type="n2:APIErrorEnum">NO_SESSION</errorCode>
7
+ <minorErrorCode xsi:nil="1"></minorErrorCode>
8
+ <sessionToken xsi:nil="1"></sessionToken>
9
+ <timestamp xsi:type="xsd:dateTime">2011-10-30T08:31:56.390Z</timestamp>
10
+ </header>
11
+ <betResults xsi:nil="1"></betResults>
12
+ <errorCode xsi:type="n2:CancelBetsErrorEnum">API_ERROR</errorCode>
13
+ <minorErrorCode xsi:nil="1"></minorErrorCode>
14
+ </n:Result>
15
+ </n:cancelBetsResponse>
16
+ </soap:Body>
17
+ </soap:Envelope>
@@ -0,0 +1,25 @@
1
+ <soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:n2="http://www.betfair.com/publicapi/types/exchange/v5/" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
2
+ <soap:Body>
3
+ <n:cancelBetsResponse xmlns:n="http://www.betfair.com/publicapi/v5/BFExchangeService/">
4
+ <n:Result xsi:type="n2:CancelBetsResp">
5
+ <header xsi:type="n2:APIResponseHeader">
6
+ <errorCode xsi:type="n2:APIErrorEnum">OK</errorCode>
7
+ <minorErrorCode xsi:nil="1"></minorErrorCode>
8
+ <sessionToken xsi:type="xsd:string">T0fSCYclMyf2iuL4FbGQyoINXuNeaxpKxtAq/7VnAjo=</sessionToken>
9
+ <timestamp xsi:type="xsd:dateTime">2011-10-30T08:37:42.257Z</timestamp>
10
+ </header>
11
+ <betResults xsi:type="n2:ArrayOfCancelBetsResult">
12
+ <n2:CancelBetsResult xsi:type="n2:CancelBetsResult">
13
+ <betId xsi:type="xsd:long">16939730542</betId>
14
+ <resultCode xsi:type="n2:CancelBetsResultEnum">REMAINING_CANCELLED</resultCode>
15
+ <sizeCancelled xsi:type="xsd:double">5.0</sizeCancelled>
16
+ <sizeMatched xsi:type="xsd:double">0.0</sizeMatched>
17
+ <success xsi:type="xsd:boolean">true</success>
18
+ </n2:CancelBetsResult>
19
+ </betResults>
20
+ <errorCode xsi:type="n2:CancelBetsErrorEnum">OK</errorCode>
21
+ <minorErrorCode xsi:nil="1"></minorErrorCode>
22
+ </n:Result>
23
+ </n:cancelBetsResponse>
24
+ </soap:Body>
25
+ </soap:Envelope>
@@ -0,0 +1,211 @@
1
+ <?xml version="1.0" encoding="UTF-8"?>
2
+ <soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:n2="http://www.betfair.com/publicapi/types/global/v3/" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
3
+ <soap:Body>
4
+ <n:getActiveEventTypesResponse xmlns:n="http://www.betfair.com/publicapi/v3/BFGlobalService/">
5
+ <n:Result xsi:type="n2:GetEventTypesResp">
6
+ <header xsi:type="n2:APIResponseHeader">
7
+ <errorCode xsi:type="n2:APIErrorEnum">OK</errorCode>
8
+ <minorErrorCode xsi:nil="1"/>
9
+ <sessionToken xsi:type="xsd:string">Xh7ZPGvr9slMNP/bNJiXUZ6jBvs+YEUBQCioGgne5Uw=</sessionToken>
10
+ <timestamp xsi:type="xsd:dateTime">2012-01-09T11:41:16.782Z</timestamp>
11
+ </header>
12
+ <eventTypeItems xsi:type="n2:ArrayOfEventType">
13
+ <n2:EventType xsi:type="n2:EventType">
14
+ <id xsi:type="xsd:int">6423</id>
15
+ <name xsi:type="xsd:string">American Football</name>
16
+ <nextMarketId xsi:type="xsd:int">0</nextMarketId>
17
+ <exchangeId xsi:type="xsd:int">0</exchangeId>
18
+ </n2:EventType>
19
+ <n2:EventType xsi:type="n2:EventType">
20
+ <id xsi:type="xsd:int">61420</id>
21
+ <name xsi:type="xsd:string">Australian Rules</name>
22
+ <nextMarketId xsi:type="xsd:int">0</nextMarketId>
23
+ <exchangeId xsi:type="xsd:int">0</exchangeId>
24
+ </n2:EventType>
25
+ <n2:EventType xsi:type="n2:EventType">
26
+ <id xsi:type="xsd:int">998919</id>
27
+ <name xsi:type="xsd:string">Bandy</name>
28
+ <nextMarketId xsi:type="xsd:int">0</nextMarketId>
29
+ <exchangeId xsi:type="xsd:int">0</exchangeId>
30
+ </n2:EventType>
31
+ <n2:EventType xsi:type="n2:EventType">
32
+ <id xsi:type="xsd:int">7511</id>
33
+ <name xsi:type="xsd:string">Baseball</name>
34
+ <nextMarketId xsi:type="xsd:int">0</nextMarketId>
35
+ <exchangeId xsi:type="xsd:int">0</exchangeId>
36
+ </n2:EventType>
37
+ <n2:EventType xsi:type="n2:EventType">
38
+ <id xsi:type="xsd:int">7522</id>
39
+ <name xsi:type="xsd:string">Basketball</name>
40
+ <nextMarketId xsi:type="xsd:int">0</nextMarketId>
41
+ <exchangeId xsi:type="xsd:int">0</exchangeId>
42
+ </n2:EventType>
43
+ <n2:EventType xsi:type="n2:EventType">
44
+ <id xsi:type="xsd:int">998918</id>
45
+ <name xsi:type="xsd:string">Bowls</name>
46
+ <nextMarketId xsi:type="xsd:int">0</nextMarketId>
47
+ <exchangeId xsi:type="xsd:int">0</exchangeId>
48
+ </n2:EventType>
49
+ <n2:EventType xsi:type="n2:EventType">
50
+ <id xsi:type="xsd:int">4</id>
51
+ <name xsi:type="xsd:string">Cricket</name>
52
+ <nextMarketId xsi:type="xsd:int">0</nextMarketId>
53
+ <exchangeId xsi:type="xsd:int">0</exchangeId>
54
+ </n2:EventType>
55
+ <n2:EventType xsi:type="n2:EventType">
56
+ <id xsi:type="xsd:int">11</id>
57
+ <name xsi:type="xsd:string">Cycling</name>
58
+ <nextMarketId xsi:type="xsd:int">0</nextMarketId>
59
+ <exchangeId xsi:type="xsd:int">0</exchangeId>
60
+ </n2:EventType>
61
+ <n2:EventType xsi:type="n2:EventType">
62
+ <id xsi:type="xsd:int">3503</id>
63
+ <name xsi:type="xsd:string">Darts</name>
64
+ <nextMarketId xsi:type="xsd:int">0</nextMarketId>
65
+ <exchangeId xsi:type="xsd:int">0</exchangeId>
66
+ </n2:EventType>
67
+ <n2:EventType xsi:type="n2:EventType">
68
+ <id xsi:type="xsd:int">6231</id>
69
+ <name xsi:type="xsd:string">Financial Bets</name>
70
+ <nextMarketId xsi:type="xsd:int">0</nextMarketId>
71
+ <exchangeId xsi:type="xsd:int">0</exchangeId>
72
+ </n2:EventType>
73
+ <n2:EventType xsi:type="n2:EventType">
74
+ <id xsi:type="xsd:int">998920</id>
75
+ <name xsi:type="xsd:string">Floorball</name>
76
+ <nextMarketId xsi:type="xsd:int">0</nextMarketId>
77
+ <exchangeId xsi:type="xsd:int">0</exchangeId>
78
+ </n2:EventType>
79
+ <n2:EventType xsi:type="n2:EventType">
80
+ <id xsi:type="xsd:int">2152880</id>
81
+ <name xsi:type="xsd:string">Gaelic Games</name>
82
+ <nextMarketId xsi:type="xsd:int">0</nextMarketId>
83
+ <exchangeId xsi:type="xsd:int">0</exchangeId>
84
+ </n2:EventType>
85
+ <n2:EventType xsi:type="n2:EventType">
86
+ <id xsi:type="xsd:int">3</id>
87
+ <name xsi:type="xsd:string">Golf</name>
88
+ <nextMarketId xsi:type="xsd:int">0</nextMarketId>
89
+ <exchangeId xsi:type="xsd:int">0</exchangeId>
90
+ </n2:EventType>
91
+ <n2:EventType xsi:type="n2:EventType">
92
+ <id xsi:type="xsd:int">4339</id>
93
+ <name xsi:type="xsd:string">Greyhound Racing</name>
94
+ <nextMarketId xsi:type="xsd:int">0</nextMarketId>
95
+ <exchangeId xsi:type="xsd:int">0</exchangeId>
96
+ </n2:EventType>
97
+ <n2:EventType xsi:type="n2:EventType">
98
+ <id xsi:type="xsd:int">15</id>
99
+ <name xsi:type="xsd:string">Greyhound - Todays Card</name>
100
+ <nextMarketId xsi:type="xsd:int">100432129</nextMarketId>
101
+ <exchangeId xsi:type="xsd:int">2</exchangeId>
102
+ </n2:EventType>
103
+ <n2:EventType xsi:type="n2:EventType">
104
+ <id xsi:type="xsd:int">468328</id>
105
+ <name xsi:type="xsd:string">Handball</name>
106
+ <nextMarketId xsi:type="xsd:int">0</nextMarketId>
107
+ <exchangeId xsi:type="xsd:int">0</exchangeId>
108
+ </n2:EventType>
109
+ <n2:EventType xsi:type="n2:EventType">
110
+ <id xsi:type="xsd:int">7</id>
111
+ <name xsi:type="xsd:string">Horse Racing</name>
112
+ <nextMarketId xsi:type="xsd:int">0</nextMarketId>
113
+ <exchangeId xsi:type="xsd:int">0</exchangeId>
114
+ </n2:EventType>
115
+ <n2:EventType xsi:type="n2:EventType">
116
+ <id xsi:type="xsd:int">13</id>
117
+ <name xsi:type="xsd:string">Horse Racing - Todays Card</name>
118
+ <nextMarketId xsi:type="xsd:int">104635474</nextMarketId>
119
+ <exchangeId xsi:type="xsd:int">1</exchangeId>
120
+ </n2:EventType>
121
+ <n2:EventType xsi:type="n2:EventType">
122
+ <id xsi:type="xsd:int">7524</id>
123
+ <name xsi:type="xsd:string">Ice Hockey</name>
124
+ <nextMarketId xsi:type="xsd:int">0</nextMarketId>
125
+ <exchangeId xsi:type="xsd:int">0</exchangeId>
126
+ </n2:EventType>
127
+ <n2:EventType xsi:type="n2:EventType">
128
+ <id xsi:type="xsd:int">26420387</id>
129
+ <name xsi:type="xsd:string">Mixed Martial Arts</name>
130
+ <nextMarketId xsi:type="xsd:int">0</nextMarketId>
131
+ <exchangeId xsi:type="xsd:int">0</exchangeId>
132
+ </n2:EventType>
133
+ <n2:EventType xsi:type="n2:EventType">
134
+ <id xsi:type="xsd:int">8</id>
135
+ <name xsi:type="xsd:string">Motor Sport</name>
136
+ <nextMarketId xsi:type="xsd:int">0</nextMarketId>
137
+ <exchangeId xsi:type="xsd:int">0</exchangeId>
138
+ </n2:EventType>
139
+ <n2:EventType xsi:type="n2:EventType">
140
+ <id xsi:type="xsd:int">26686903</id>
141
+ <name xsi:type="xsd:string">Olympics 2012</name>
142
+ <nextMarketId xsi:type="xsd:int">0</nextMarketId>
143
+ <exchangeId xsi:type="xsd:int">0</exchangeId>
144
+ </n2:EventType>
145
+ <n2:EventType xsi:type="n2:EventType">
146
+ <id xsi:type="xsd:int">2378961</id>
147
+ <name xsi:type="xsd:string">Politics</name>
148
+ <nextMarketId xsi:type="xsd:int">0</nextMarketId>
149
+ <exchangeId xsi:type="xsd:int">0</exchangeId>
150
+ </n2:EventType>
151
+ <n2:EventType xsi:type="n2:EventType">
152
+ <id xsi:type="xsd:int">1477</id>
153
+ <name xsi:type="xsd:string">Rugby League</name>
154
+ <nextMarketId xsi:type="xsd:int">0</nextMarketId>
155
+ <exchangeId xsi:type="xsd:int">0</exchangeId>
156
+ </n2:EventType>
157
+ <n2:EventType xsi:type="n2:EventType">
158
+ <id xsi:type="xsd:int">5</id>
159
+ <name xsi:type="xsd:string">Rugby Union</name>
160
+ <nextMarketId xsi:type="xsd:int">0</nextMarketId>
161
+ <exchangeId xsi:type="xsd:int">0</exchangeId>
162
+ </n2:EventType>
163
+ <n2:EventType xsi:type="n2:EventType">
164
+ <id xsi:type="xsd:int">6422</id>
165
+ <name xsi:type="xsd:string">Snooker</name>
166
+ <nextMarketId xsi:type="xsd:int">0</nextMarketId>
167
+ <exchangeId xsi:type="xsd:int">0</exchangeId>
168
+ </n2:EventType>
169
+ <n2:EventType xsi:type="n2:EventType">
170
+ <id xsi:type="xsd:int">1</id>
171
+ <name xsi:type="xsd:string">Soccer</name>
172
+ <nextMarketId xsi:type="xsd:int">0</nextMarketId>
173
+ <exchangeId xsi:type="xsd:int">0</exchangeId>
174
+ </n2:EventType>
175
+ <n2:EventType xsi:type="n2:EventType">
176
+ <id xsi:type="xsd:int">14</id>
177
+ <name xsi:type="xsd:string">Soccer - Fixtures</name>
178
+ <nextMarketId xsi:type="xsd:int">0</nextMarketId>
179
+ <exchangeId xsi:type="xsd:int">0</exchangeId>
180
+ </n2:EventType>
181
+ <n2:EventType xsi:type="n2:EventType">
182
+ <id xsi:type="xsd:int">10</id>
183
+ <name xsi:type="xsd:string">Special Bets</name>
184
+ <nextMarketId xsi:type="xsd:int">0</nextMarketId>
185
+ <exchangeId xsi:type="xsd:int">0</exchangeId>
186
+ </n2:EventType>
187
+ <n2:EventType xsi:type="n2:EventType">
188
+ <id xsi:type="xsd:int">2</id>
189
+ <name xsi:type="xsd:string">Tennis</name>
190
+ <nextMarketId xsi:type="xsd:int">0</nextMarketId>
191
+ <exchangeId xsi:type="xsd:int">0</exchangeId>
192
+ </n2:EventType>
193
+ <n2:EventType xsi:type="n2:EventType">
194
+ <id xsi:type="xsd:int">998917</id>
195
+ <name xsi:type="xsd:string">Volleyball</name>
196
+ <nextMarketId xsi:type="xsd:int">0</nextMarketId>
197
+ <exchangeId xsi:type="xsd:int">0</exchangeId>
198
+ </n2:EventType>
199
+ <n2:EventType xsi:type="n2:EventType">
200
+ <id xsi:type="xsd:int">451485</id>
201
+ <name xsi:type="xsd:string">Winter Sports</name>
202
+ <nextMarketId xsi:type="xsd:int">0</nextMarketId>
203
+ <exchangeId xsi:type="xsd:int">0</exchangeId>
204
+ </n2:EventType>
205
+ </eventTypeItems>
206
+ <minorErrorCode xsi:nil="1"/>
207
+ <errorCode xsi:type="n2:GetEventsErrorEnum">OK</errorCode>
208
+ </n:Result>
209
+ </n:getActiveEventTypesResponse>
210
+ </soap:Body>
211
+ </soap:Envelope>