sports-odds-api 1.2.3 → 1.3.0
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.
- checksums.yaml +4 -4
- data/CHANGELOG.md +13 -0
- data/lib/sports_odds_api/client.rb +28 -1
- data/lib/sports_odds_api/internal/transport/base_client.rb +5 -0
- data/lib/sports_odds_api/internal/util.rb +53 -7
- data/lib/sports_odds_api/models/event.rb +197 -4
- data/lib/sports_odds_api/models/event_get_params.rb +22 -4
- data/lib/sports_odds_api/models/market.rb +206 -0
- data/lib/sports_odds_api/models/market_get_params.rb +150 -0
- data/lib/sports_odds_api/models/player_get_params.rb +3 -3
- data/lib/sports_odds_api/models/team.rb +107 -2
- data/lib/sports_odds_api/models/team_get_params.rb +3 -3
- data/lib/sports_odds_api/models.rb +4 -0
- data/lib/sports_odds_api/resources/account.rb +1 -0
- data/lib/sports_odds_api/resources/events.rb +11 -3
- data/lib/sports_odds_api/resources/leagues.rb +3 -1
- data/lib/sports_odds_api/resources/markets.rb +87 -0
- data/lib/sports_odds_api/resources/players.rb +4 -2
- data/lib/sports_odds_api/resources/sports.rb +1 -0
- data/lib/sports_odds_api/resources/stats.rb +3 -1
- data/lib/sports_odds_api/resources/stream.rb +3 -1
- data/lib/sports_odds_api/resources/teams.rb +4 -2
- data/lib/sports_odds_api/version.rb +1 -1
- data/lib/sports_odds_api.rb +3 -0
- data/rbi/sports_odds_api/client.rbi +12 -0
- data/rbi/sports_odds_api/internal/util.rbi +28 -0
- data/rbi/sports_odds_api/models/event.rbi +387 -3
- data/rbi/sports_odds_api/models/event_get_params.rbi +30 -4
- data/rbi/sports_odds_api/models/market.rbi +326 -0
- data/rbi/sports_odds_api/models/market_get_params.rbi +224 -0
- data/rbi/sports_odds_api/models/player_get_params.rbi +4 -4
- data/rbi/sports_odds_api/models/team.rbi +186 -3
- data/rbi/sports_odds_api/models/team_get_params.rbi +4 -4
- data/rbi/sports_odds_api/models.rbi +4 -0
- data/rbi/sports_odds_api/resources/account.rbi +1 -0
- data/rbi/sports_odds_api/resources/events.rbi +11 -2
- data/rbi/sports_odds_api/resources/leagues.rbi +1 -0
- data/rbi/sports_odds_api/resources/markets.rbi +79 -0
- data/rbi/sports_odds_api/resources/players.rbi +3 -2
- data/rbi/sports_odds_api/resources/sports.rbi +1 -0
- data/rbi/sports_odds_api/resources/stats.rbi +1 -0
- data/rbi/sports_odds_api/resources/stream.rbi +1 -0
- data/rbi/sports_odds_api/resources/teams.rbi +3 -2
- data/sig/sports_odds_api/client.rbs +2 -0
- data/sig/sports_odds_api/internal/util.rbs +14 -0
- data/sig/sports_odds_api/models/event.rbs +246 -3
- data/sig/sports_odds_api/models/event_get_params.rbs +14 -0
- data/sig/sports_odds_api/models/market.rbs +186 -0
- data/sig/sports_odds_api/models/market_get_params.rbs +133 -0
- data/sig/sports_odds_api/models/team.rbs +130 -3
- data/sig/sports_odds_api/models.rbs +4 -0
- data/sig/sports_odds_api/resources/events.rbs +2 -0
- data/sig/sports_odds_api/resources/markets.rbs +27 -0
- metadata +25 -2
|
@@ -0,0 +1,87 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
module SportsOddsAPI
|
|
4
|
+
module Resources
|
|
5
|
+
# Get metadata on supported Markets
|
|
6
|
+
class Markets
|
|
7
|
+
# Some parameter documentations has been truncated, see
|
|
8
|
+
# {SportsOddsAPI::Models::MarketGetParams} for more details.
|
|
9
|
+
#
|
|
10
|
+
# Get a list of Markets
|
|
11
|
+
#
|
|
12
|
+
# @overload get(bet_type_id: nil, bookmaker_id: nil, cursor: nil, is_main_market: nil, is_prop: nil, is_sub_period: nil, is_supported: nil, league_id: nil, limit: nil, odd_id: nil, period_id: nil, prop_type: nil, side_id: nil, sport_id: nil, stat_entity_id: nil, stat_id: nil, request_options: {})
|
|
13
|
+
#
|
|
14
|
+
# @param bet_type_id [String] A single betTypeID or comma-separated list of betTypeIDs to filter Markets by
|
|
15
|
+
#
|
|
16
|
+
# @param bookmaker_id [String] A single bookmakerID or comma-separated list of bookmakerIDs to filter Markets b
|
|
17
|
+
#
|
|
18
|
+
# @param cursor [String] The cursor for pagination. Use nextCursor from prior response.
|
|
19
|
+
#
|
|
20
|
+
# @param is_main_market [Boolean] Filter to only include main markets (main period moneyline, spread, and over/und
|
|
21
|
+
#
|
|
22
|
+
# @param is_prop [Boolean] Filter by whether it is any type of prop bet market
|
|
23
|
+
#
|
|
24
|
+
# @param is_sub_period [Boolean] Filter by whether it tracks a sub/non-main period
|
|
25
|
+
#
|
|
26
|
+
# @param is_supported [Boolean] Filter whether this market is fully supported by at least 1 bookmaker in at leas
|
|
27
|
+
#
|
|
28
|
+
# @param league_id [String] A single leagueID or comma-separated list of leagueIDs to filter Markets by
|
|
29
|
+
#
|
|
30
|
+
# @param limit [Float] The maximum number of Markets to return (default: 100, max: 10000)
|
|
31
|
+
#
|
|
32
|
+
# @param odd_id [String] A single oddID or comma-separated list of oddIDs. Used to specify specific Marke
|
|
33
|
+
#
|
|
34
|
+
# @param period_id [String] A single periodID or comma-separated list of periodIDs to filter Markets by
|
|
35
|
+
#
|
|
36
|
+
# @param prop_type [String] Filter by prop type (game_prop, team_prop, player_prop, other_prop)
|
|
37
|
+
#
|
|
38
|
+
# @param side_id [String] A single sideID or comma-separated list of sideIDs to filter Markets by
|
|
39
|
+
#
|
|
40
|
+
# @param sport_id [String] A single sportID or comma-separated list of sportIDs to filter Markets by
|
|
41
|
+
#
|
|
42
|
+
# @param stat_entity_id [String] A single statEntityID or comma-separated list of statEntityIDs to filter Markets
|
|
43
|
+
#
|
|
44
|
+
# @param stat_id [String] A single statID or comma-separated list of statIDs to filter Markets by
|
|
45
|
+
#
|
|
46
|
+
# @param request_options [SportsOddsAPI::RequestOptions, Hash{Symbol=>Object}, nil]
|
|
47
|
+
#
|
|
48
|
+
# @return [SportsOddsAPI::Internal::NextCursorPage<SportsOddsAPI::Models::Market>]
|
|
49
|
+
#
|
|
50
|
+
# @see SportsOddsAPI::Models::MarketGetParams
|
|
51
|
+
def get(params = {})
|
|
52
|
+
parsed, options = SportsOddsAPI::MarketGetParams.dump_request(params)
|
|
53
|
+
query = SportsOddsAPI::Internal::Util.encode_query_params(parsed)
|
|
54
|
+
@client.request(
|
|
55
|
+
method: :get,
|
|
56
|
+
path: "markets/",
|
|
57
|
+
query: query.transform_keys(
|
|
58
|
+
bet_type_id: "betTypeID",
|
|
59
|
+
bookmaker_id: "bookmakerID",
|
|
60
|
+
is_main_market: "isMainMarket",
|
|
61
|
+
is_prop: "isProp",
|
|
62
|
+
is_sub_period: "isSubPeriod",
|
|
63
|
+
is_supported: "isSupported",
|
|
64
|
+
league_id: "leagueID",
|
|
65
|
+
odd_id: "oddID",
|
|
66
|
+
period_id: "periodID",
|
|
67
|
+
prop_type: "propType",
|
|
68
|
+
side_id: "sideID",
|
|
69
|
+
sport_id: "sportID",
|
|
70
|
+
stat_entity_id: "statEntityID",
|
|
71
|
+
stat_id: "statID"
|
|
72
|
+
),
|
|
73
|
+
page: SportsOddsAPI::Internal::NextCursorPage,
|
|
74
|
+
model: SportsOddsAPI::Market,
|
|
75
|
+
options: options
|
|
76
|
+
)
|
|
77
|
+
end
|
|
78
|
+
|
|
79
|
+
# @api private
|
|
80
|
+
#
|
|
81
|
+
# @param client [SportsOddsAPI::Client]
|
|
82
|
+
def initialize(client:)
|
|
83
|
+
@client = client
|
|
84
|
+
end
|
|
85
|
+
end
|
|
86
|
+
end
|
|
87
|
+
end
|
|
@@ -2,6 +2,7 @@
|
|
|
2
2
|
|
|
3
3
|
module SportsOddsAPI
|
|
4
4
|
module Resources
|
|
5
|
+
# Get Player-related data
|
|
5
6
|
class Players
|
|
6
7
|
# Some parameter documentations has been truncated, see
|
|
7
8
|
# {SportsOddsAPI::Models::PlayerGetParams} for more details.
|
|
@@ -10,7 +11,7 @@ module SportsOddsAPI
|
|
|
10
11
|
#
|
|
11
12
|
# @overload get(cursor: nil, event_id: nil, limit: nil, player_id: nil, team_id: nil, request_options: {})
|
|
12
13
|
#
|
|
13
|
-
# @param cursor [String] The cursor for the request. Used to get the next group of Players. This
|
|
14
|
+
# @param cursor [String] The cursor for the request. Used to get the next group of Players. This is an op
|
|
14
15
|
#
|
|
15
16
|
# @param event_id [String] EventID to get Players data for
|
|
16
17
|
#
|
|
@@ -27,10 +28,11 @@ module SportsOddsAPI
|
|
|
27
28
|
# @see SportsOddsAPI::Models::PlayerGetParams
|
|
28
29
|
def get(params = {})
|
|
29
30
|
parsed, options = SportsOddsAPI::PlayerGetParams.dump_request(params)
|
|
31
|
+
query = SportsOddsAPI::Internal::Util.encode_query_params(parsed)
|
|
30
32
|
@client.request(
|
|
31
33
|
method: :get,
|
|
32
34
|
path: "players/",
|
|
33
|
-
query:
|
|
35
|
+
query: query.transform_keys(event_id: "eventID", player_id: "playerID", team_id: "teamID"),
|
|
34
36
|
page: SportsOddsAPI::Internal::NextCursorPage,
|
|
35
37
|
model: SportsOddsAPI::Player,
|
|
36
38
|
options: options
|
|
@@ -2,6 +2,7 @@
|
|
|
2
2
|
|
|
3
3
|
module SportsOddsAPI
|
|
4
4
|
module Resources
|
|
5
|
+
# Get data on specific Stats
|
|
5
6
|
class Stats
|
|
6
7
|
# Some parameter documentations has been truncated, see
|
|
7
8
|
# {SportsOddsAPI::Models::StatGetParams} for more details.
|
|
@@ -23,10 +24,11 @@ module SportsOddsAPI
|
|
|
23
24
|
# @see SportsOddsAPI::Models::StatGetParams
|
|
24
25
|
def get(params = {})
|
|
25
26
|
parsed, options = SportsOddsAPI::StatGetParams.dump_request(params)
|
|
27
|
+
query = SportsOddsAPI::Internal::Util.encode_query_params(parsed)
|
|
26
28
|
@client.request(
|
|
27
29
|
method: :get,
|
|
28
30
|
path: "stats/",
|
|
29
|
-
query:
|
|
31
|
+
query: query.transform_keys(sport_id: "sportID", stat_id: "statID", stat_level: "statLevel"),
|
|
30
32
|
unwrap: :data,
|
|
31
33
|
model: SportsOddsAPI::Internal::Type::ArrayOf[SportsOddsAPI::Stat],
|
|
32
34
|
options: options
|
|
@@ -2,6 +2,7 @@
|
|
|
2
2
|
|
|
3
3
|
module SportsOddsAPI
|
|
4
4
|
module Resources
|
|
5
|
+
# Get info about Events (includes odds, results, teams, and other metadata)
|
|
5
6
|
class Stream
|
|
6
7
|
# Setup streamed (WebSocket) connection
|
|
7
8
|
#
|
|
@@ -20,10 +21,11 @@ module SportsOddsAPI
|
|
|
20
21
|
# @see SportsOddsAPI::Models::StreamEventsParams
|
|
21
22
|
def events(params = {})
|
|
22
23
|
parsed, options = SportsOddsAPI::StreamEventsParams.dump_request(params)
|
|
24
|
+
query = SportsOddsAPI::Internal::Util.encode_query_params(parsed)
|
|
23
25
|
@client.request(
|
|
24
26
|
method: :get,
|
|
25
27
|
path: "stream/events",
|
|
26
|
-
query:
|
|
28
|
+
query: query.transform_keys(event_id: "eventID", league_id: "leagueID"),
|
|
27
29
|
model: SportsOddsAPI::Models::StreamEventsResponse,
|
|
28
30
|
options: options
|
|
29
31
|
)
|
|
@@ -2,6 +2,7 @@
|
|
|
2
2
|
|
|
3
3
|
module SportsOddsAPI
|
|
4
4
|
module Resources
|
|
5
|
+
# Get Team-related data
|
|
5
6
|
class Teams
|
|
6
7
|
# Some parameter documentations has been truncated, see
|
|
7
8
|
# {SportsOddsAPI::Models::TeamGetParams} for more details.
|
|
@@ -10,7 +11,7 @@ module SportsOddsAPI
|
|
|
10
11
|
#
|
|
11
12
|
# @overload get(cursor: nil, league_id: nil, limit: nil, sport_id: nil, team_id: nil, request_options: {})
|
|
12
13
|
#
|
|
13
|
-
# @param cursor [String] The cursor for the request. Used to get the next group of Teams. This
|
|
14
|
+
# @param cursor [String] The cursor for the request. Used to get the next group of Teams. This is an opaq
|
|
14
15
|
#
|
|
15
16
|
# @param league_id [String] A single leagueID or comma-separated list of leagueIDs to get Teams for
|
|
16
17
|
#
|
|
@@ -27,10 +28,11 @@ module SportsOddsAPI
|
|
|
27
28
|
# @see SportsOddsAPI::Models::TeamGetParams
|
|
28
29
|
def get(params = {})
|
|
29
30
|
parsed, options = SportsOddsAPI::TeamGetParams.dump_request(params)
|
|
31
|
+
query = SportsOddsAPI::Internal::Util.encode_query_params(parsed)
|
|
30
32
|
@client.request(
|
|
31
33
|
method: :get,
|
|
32
34
|
path: "teams/",
|
|
33
|
-
query:
|
|
35
|
+
query: query.transform_keys(league_id: "leagueID", sport_id: "sportID", team_id: "teamID"),
|
|
34
36
|
page: SportsOddsAPI::Internal::NextCursorPage,
|
|
35
37
|
model: SportsOddsAPI::Team,
|
|
36
38
|
options: options
|
data/lib/sports_odds_api.rb
CHANGED
|
@@ -60,6 +60,8 @@ require_relative "sports_odds_api/models/event_get_params"
|
|
|
60
60
|
require_relative "sports_odds_api/models/league"
|
|
61
61
|
require_relative "sports_odds_api/models/league_get_params"
|
|
62
62
|
require_relative "sports_odds_api/models/league_get_response"
|
|
63
|
+
require_relative "sports_odds_api/models/market"
|
|
64
|
+
require_relative "sports_odds_api/models/market_get_params"
|
|
63
65
|
require_relative "sports_odds_api/models/player"
|
|
64
66
|
require_relative "sports_odds_api/models/player_get_params"
|
|
65
67
|
require_relative "sports_odds_api/models/rate_limit_interval"
|
|
@@ -77,6 +79,7 @@ require_relative "sports_odds_api/models"
|
|
|
77
79
|
require_relative "sports_odds_api/resources/account"
|
|
78
80
|
require_relative "sports_odds_api/resources/events"
|
|
79
81
|
require_relative "sports_odds_api/resources/leagues"
|
|
82
|
+
require_relative "sports_odds_api/resources/markets"
|
|
80
83
|
require_relative "sports_odds_api/resources/players"
|
|
81
84
|
require_relative "sports_odds_api/resources/sports"
|
|
82
85
|
require_relative "sports_odds_api/resources/stats"
|
|
@@ -18,27 +18,39 @@ module SportsOddsAPI
|
|
|
18
18
|
sig { returns(T.nilable(String)) }
|
|
19
19
|
attr_reader :api_key_param
|
|
20
20
|
|
|
21
|
+
# Get info about Events (includes odds, results, teams, and other metadata)
|
|
21
22
|
sig { returns(SportsOddsAPI::Resources::Events) }
|
|
22
23
|
attr_reader :events
|
|
23
24
|
|
|
25
|
+
# Get metadata on supported Markets
|
|
26
|
+
sig { returns(SportsOddsAPI::Resources::Markets) }
|
|
27
|
+
attr_reader :markets
|
|
28
|
+
|
|
29
|
+
# Get Team-related data
|
|
24
30
|
sig { returns(SportsOddsAPI::Resources::Teams) }
|
|
25
31
|
attr_reader :teams
|
|
26
32
|
|
|
33
|
+
# Get Player-related data
|
|
27
34
|
sig { returns(SportsOddsAPI::Resources::Players) }
|
|
28
35
|
attr_reader :players
|
|
29
36
|
|
|
37
|
+
# Get League-related data
|
|
30
38
|
sig { returns(SportsOddsAPI::Resources::Leagues) }
|
|
31
39
|
attr_reader :leagues
|
|
32
40
|
|
|
41
|
+
# Get Sport-related data
|
|
33
42
|
sig { returns(SportsOddsAPI::Resources::Sports) }
|
|
34
43
|
attr_reader :sports
|
|
35
44
|
|
|
45
|
+
# Get data on specific Stats
|
|
36
46
|
sig { returns(SportsOddsAPI::Resources::Stats) }
|
|
37
47
|
attr_reader :stats
|
|
38
48
|
|
|
49
|
+
# Get data related to your Account & API key
|
|
39
50
|
sig { returns(SportsOddsAPI::Resources::Account) }
|
|
40
51
|
attr_reader :account
|
|
41
52
|
|
|
53
|
+
# Get info about Events (includes odds, results, teams, and other metadata)
|
|
42
54
|
sig { returns(SportsOddsAPI::Resources::Stream) }
|
|
43
55
|
attr_reader :stream
|
|
44
56
|
|
|
@@ -148,12 +148,20 @@ module SportsOddsAPI
|
|
|
148
148
|
end
|
|
149
149
|
end
|
|
150
150
|
|
|
151
|
+
# https://www.rfc-editor.org/rfc/rfc3986.html#section-3.3
|
|
152
|
+
RFC_3986_NOT_PCHARS = T.let(/[^A-Za-z0-9\-._~!$&'()*+,;=:@]+/, Regexp)
|
|
153
|
+
|
|
151
154
|
class << self
|
|
152
155
|
# @api private
|
|
153
156
|
sig { params(uri: URI::Generic).returns(String) }
|
|
154
157
|
def uri_origin(uri)
|
|
155
158
|
end
|
|
156
159
|
|
|
160
|
+
# @api private
|
|
161
|
+
sig { params(path: T.any(String, Integer)).returns(String) }
|
|
162
|
+
def encode_path(path)
|
|
163
|
+
end
|
|
164
|
+
|
|
157
165
|
# @api private
|
|
158
166
|
sig { params(path: T.any(String, T::Array[String])).returns(String) }
|
|
159
167
|
def interpolate_path(path)
|
|
@@ -301,6 +309,26 @@ module SportsOddsAPI
|
|
|
301
309
|
T.let(%r{^application/(:?x-(?:n|l)djson)|(:?(?:x-)?jsonl)}, Regexp)
|
|
302
310
|
|
|
303
311
|
class << self
|
|
312
|
+
# @api private
|
|
313
|
+
sig do
|
|
314
|
+
params(query: SportsOddsAPI::Internal::AnyHash).returns(
|
|
315
|
+
SportsOddsAPI::Internal::AnyHash
|
|
316
|
+
)
|
|
317
|
+
end
|
|
318
|
+
def encode_query_params(query)
|
|
319
|
+
end
|
|
320
|
+
|
|
321
|
+
# @api private
|
|
322
|
+
sig do
|
|
323
|
+
params(
|
|
324
|
+
collection: SportsOddsAPI::Internal::AnyHash,
|
|
325
|
+
key: String,
|
|
326
|
+
element: T.anything
|
|
327
|
+
).void
|
|
328
|
+
end
|
|
329
|
+
private def write_query_param_element!(collection, key, element)
|
|
330
|
+
end
|
|
331
|
+
|
|
304
332
|
# @api private
|
|
305
333
|
sig do
|
|
306
334
|
params(
|