sports-odds-api 1.0.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.
Files changed (158) hide show
  1. checksums.yaml +7 -0
  2. data/.ignore +2 -0
  3. data/CHANGELOG.md +10 -0
  4. data/README.md +186 -0
  5. data/SECURITY.md +27 -0
  6. data/lib/sports_odds_api/client.rb +112 -0
  7. data/lib/sports_odds_api/errors.rb +228 -0
  8. data/lib/sports_odds_api/file_part.rb +55 -0
  9. data/lib/sports_odds_api/internal/next_cursor_page.rb +86 -0
  10. data/lib/sports_odds_api/internal/transport/base_client.rb +580 -0
  11. data/lib/sports_odds_api/internal/transport/pooled_net_requester.rb +201 -0
  12. data/lib/sports_odds_api/internal/type/array_of.rb +168 -0
  13. data/lib/sports_odds_api/internal/type/base_model.rb +534 -0
  14. data/lib/sports_odds_api/internal/type/base_page.rb +55 -0
  15. data/lib/sports_odds_api/internal/type/boolean.rb +77 -0
  16. data/lib/sports_odds_api/internal/type/converter.rb +327 -0
  17. data/lib/sports_odds_api/internal/type/enum.rb +131 -0
  18. data/lib/sports_odds_api/internal/type/file_input.rb +108 -0
  19. data/lib/sports_odds_api/internal/type/hash_of.rb +188 -0
  20. data/lib/sports_odds_api/internal/type/request_parameters.rb +42 -0
  21. data/lib/sports_odds_api/internal/type/union.rb +243 -0
  22. data/lib/sports_odds_api/internal/type/unknown.rb +81 -0
  23. data/lib/sports_odds_api/internal/util.rb +914 -0
  24. data/lib/sports_odds_api/internal.rb +20 -0
  25. data/lib/sports_odds_api/models/account_get_usage_params.rb +14 -0
  26. data/lib/sports_odds_api/models/account_usage.rb +91 -0
  27. data/lib/sports_odds_api/models/event.rb +686 -0
  28. data/lib/sports_odds_api/models/event_get_params.rb +195 -0
  29. data/lib/sports_odds_api/models/league.rb +39 -0
  30. data/lib/sports_odds_api/models/league_get_params.rb +30 -0
  31. data/lib/sports_odds_api/models/league_get_response.rb +8 -0
  32. data/lib/sports_odds_api/models/player.rb +128 -0
  33. data/lib/sports_odds_api/models/player_get_params.rb +58 -0
  34. data/lib/sports_odds_api/models/rate_limit_interval.rb +92 -0
  35. data/lib/sports_odds_api/models/sport.rb +197 -0
  36. data/lib/sports_odds_api/models/sport_get_params.rb +14 -0
  37. data/lib/sports_odds_api/models/sport_get_response.rb +8 -0
  38. data/lib/sports_odds_api/models/stat.rb +144 -0
  39. data/lib/sports_odds_api/models/stat_get_params.rb +43 -0
  40. data/lib/sports_odds_api/models/stat_get_response.rb +8 -0
  41. data/lib/sports_odds_api/models/stream_events_params.rb +38 -0
  42. data/lib/sports_odds_api/models/stream_events_response.rb +120 -0
  43. data/lib/sports_odds_api/models/team.rb +162 -0
  44. data/lib/sports_odds_api/models/team_get_params.rb +58 -0
  45. data/lib/sports_odds_api/models.rb +76 -0
  46. data/lib/sports_odds_api/request_options.rb +78 -0
  47. data/lib/sports_odds_api/resources/account.rb +33 -0
  48. data/lib/sports_odds_api/resources/events.rb +94 -0
  49. data/lib/sports_odds_api/resources/leagues.rb +39 -0
  50. data/lib/sports_odds_api/resources/players.rb +48 -0
  51. data/lib/sports_odds_api/resources/sports.rb +33 -0
  52. data/lib/sports_odds_api/resources/stats.rb +44 -0
  53. data/lib/sports_odds_api/resources/stream.rb +40 -0
  54. data/lib/sports_odds_api/resources/teams.rb +48 -0
  55. data/lib/sports_odds_api/version.rb +5 -0
  56. data/lib/sports_odds_api.rb +82 -0
  57. data/manifest.yaml +15 -0
  58. data/rbi/sports_odds_api/client.rbi +83 -0
  59. data/rbi/sports_odds_api/errors.rbi +205 -0
  60. data/rbi/sports_odds_api/file_part.rbi +37 -0
  61. data/rbi/sports_odds_api/internal/next_cursor_page.rbi +22 -0
  62. data/rbi/sports_odds_api/internal/transport/base_client.rbi +305 -0
  63. data/rbi/sports_odds_api/internal/transport/pooled_net_requester.rbi +80 -0
  64. data/rbi/sports_odds_api/internal/type/array_of.rbi +104 -0
  65. data/rbi/sports_odds_api/internal/type/base_model.rbi +310 -0
  66. data/rbi/sports_odds_api/internal/type/base_page.rbi +43 -0
  67. data/rbi/sports_odds_api/internal/type/boolean.rbi +58 -0
  68. data/rbi/sports_odds_api/internal/type/converter.rbi +225 -0
  69. data/rbi/sports_odds_api/internal/type/enum.rbi +82 -0
  70. data/rbi/sports_odds_api/internal/type/file_input.rbi +59 -0
  71. data/rbi/sports_odds_api/internal/type/hash_of.rbi +104 -0
  72. data/rbi/sports_odds_api/internal/type/request_parameters.rbi +31 -0
  73. data/rbi/sports_odds_api/internal/type/union.rbi +128 -0
  74. data/rbi/sports_odds_api/internal/type/unknown.rbi +58 -0
  75. data/rbi/sports_odds_api/internal/util.rbi +487 -0
  76. data/rbi/sports_odds_api/internal.rbi +18 -0
  77. data/rbi/sports_odds_api/models/account_get_usage_params.rbi +32 -0
  78. data/rbi/sports_odds_api/models/account_usage.rbi +173 -0
  79. data/rbi/sports_odds_api/models/event.rbi +1269 -0
  80. data/rbi/sports_odds_api/models/event_get_params.rbi +286 -0
  81. data/rbi/sports_odds_api/models/league.rbi +74 -0
  82. data/rbi/sports_odds_api/models/league_get_params.rbi +60 -0
  83. data/rbi/sports_odds_api/models/league_get_response.rbi +11 -0
  84. data/rbi/sports_odds_api/models/player.rbi +247 -0
  85. data/rbi/sports_odds_api/models/player_get_params.rbi +95 -0
  86. data/rbi/sports_odds_api/models/rate_limit_interval.rbi +176 -0
  87. data/rbi/sports_odds_api/models/sport.rbi +371 -0
  88. data/rbi/sports_odds_api/models/sport_get_params.rbi +29 -0
  89. data/rbi/sports_odds_api/models/sport_get_response.rbi +11 -0
  90. data/rbi/sports_odds_api/models/stat.rbi +273 -0
  91. data/rbi/sports_odds_api/models/stat_get_params.rbi +72 -0
  92. data/rbi/sports_odds_api/models/stat_get_response.rbi +11 -0
  93. data/rbi/sports_odds_api/models/stream_events_params.rbi +71 -0
  94. data/rbi/sports_odds_api/models/stream_events_response.rbi +247 -0
  95. data/rbi/sports_odds_api/models/team.rbi +305 -0
  96. data/rbi/sports_odds_api/models/team_get_params.rbi +92 -0
  97. data/rbi/sports_odds_api/models.rbi +35 -0
  98. data/rbi/sports_odds_api/request_options.rbi +59 -0
  99. data/rbi/sports_odds_api/resources/account.rbi +21 -0
  100. data/rbi/sports_odds_api/resources/events.rbi +96 -0
  101. data/rbi/sports_odds_api/resources/leagues.rbi +29 -0
  102. data/rbi/sports_odds_api/resources/players.rbi +41 -0
  103. data/rbi/sports_odds_api/resources/sports.rbi +21 -0
  104. data/rbi/sports_odds_api/resources/stats.rbi +34 -0
  105. data/rbi/sports_odds_api/resources/stream.rbi +32 -0
  106. data/rbi/sports_odds_api/resources/teams.rbi +39 -0
  107. data/rbi/sports_odds_api/version.rbi +5 -0
  108. data/sig/sports_odds_api/client.rbs +45 -0
  109. data/sig/sports_odds_api/errors.rbs +117 -0
  110. data/sig/sports_odds_api/file_part.rbs +21 -0
  111. data/sig/sports_odds_api/internal/next_cursor_page.rbs +13 -0
  112. data/sig/sports_odds_api/internal/transport/base_client.rbs +133 -0
  113. data/sig/sports_odds_api/internal/transport/pooled_net_requester.rbs +45 -0
  114. data/sig/sports_odds_api/internal/type/array_of.rbs +48 -0
  115. data/sig/sports_odds_api/internal/type/base_model.rbs +104 -0
  116. data/sig/sports_odds_api/internal/type/base_page.rbs +24 -0
  117. data/sig/sports_odds_api/internal/type/boolean.rbs +26 -0
  118. data/sig/sports_odds_api/internal/type/converter.rbs +79 -0
  119. data/sig/sports_odds_api/internal/type/enum.rbs +32 -0
  120. data/sig/sports_odds_api/internal/type/file_input.rbs +25 -0
  121. data/sig/sports_odds_api/internal/type/hash_of.rbs +48 -0
  122. data/sig/sports_odds_api/internal/type/request_parameters.rbs +19 -0
  123. data/sig/sports_odds_api/internal/type/union.rbs +52 -0
  124. data/sig/sports_odds_api/internal/type/unknown.rbs +26 -0
  125. data/sig/sports_odds_api/internal/util.rbs +185 -0
  126. data/sig/sports_odds_api/internal.rbs +10 -0
  127. data/sig/sports_odds_api/models/account_get_usage_params.rbs +15 -0
  128. data/sig/sports_odds_api/models/account_usage.rbs +116 -0
  129. data/sig/sports_odds_api/models/event.rbs +860 -0
  130. data/sig/sports_odds_api/models/event_get_params.rbs +168 -0
  131. data/sig/sports_odds_api/models/league.rbs +50 -0
  132. data/sig/sports_odds_api/models/league_get_params.rbs +32 -0
  133. data/sig/sports_odds_api/models/league_get_response.rbs +7 -0
  134. data/sig/sports_odds_api/models/player.rbs +162 -0
  135. data/sig/sports_odds_api/models/player_get_params.rbs +56 -0
  136. data/sig/sports_odds_api/models/rate_limit_interval.rbs +67 -0
  137. data/sig/sports_odds_api/models/sport.rbs +241 -0
  138. data/sig/sports_odds_api/models/sport_get_params.rbs +15 -0
  139. data/sig/sports_odds_api/models/sport_get_response.rbs +7 -0
  140. data/sig/sports_odds_api/models/stat.rbs +166 -0
  141. data/sig/sports_odds_api/models/stat_get_params.rbs +38 -0
  142. data/sig/sports_odds_api/models/stat_get_response.rbs +7 -0
  143. data/sig/sports_odds_api/models/stream_events_params.rbs +38 -0
  144. data/sig/sports_odds_api/models/stream_events_response.rbs +151 -0
  145. data/sig/sports_odds_api/models/team.rbs +201 -0
  146. data/sig/sports_odds_api/models/team_get_params.rbs +56 -0
  147. data/sig/sports_odds_api/models.rbs +33 -0
  148. data/sig/sports_odds_api/request_options.rbs +36 -0
  149. data/sig/sports_odds_api/resources/account.rbs +11 -0
  150. data/sig/sports_odds_api/resources/events.rbs +32 -0
  151. data/sig/sports_odds_api/resources/leagues.rbs +13 -0
  152. data/sig/sports_odds_api/resources/players.rbs +16 -0
  153. data/sig/sports_odds_api/resources/sports.rbs +11 -0
  154. data/sig/sports_odds_api/resources/stats.rbs +14 -0
  155. data/sig/sports_odds_api/resources/stream.rbs +14 -0
  156. data/sig/sports_odds_api/resources/teams.rbs +16 -0
  157. data/sig/sports_odds_api/version.rbs +3 -0
  158. metadata +215 -0
@@ -0,0 +1,162 @@
1
+ # frozen_string_literal: true
2
+
3
+ module SportsOddsAPI
4
+ module Models
5
+ # @see SportsOddsAPI::Resources::Teams#get
6
+ class Team < SportsOddsAPI::Internal::Type::BaseModel
7
+ # @!attribute colors
8
+ #
9
+ # @return [SportsOddsAPI::Models::Team::Colors, nil]
10
+ optional :colors, -> { SportsOddsAPI::Team::Colors }
11
+
12
+ # @!attribute league_id
13
+ #
14
+ # @return [String, nil]
15
+ optional :league_id, String, api_name: :leagueID
16
+
17
+ # @!attribute logo
18
+ #
19
+ # @return [String, nil]
20
+ optional :logo, String
21
+
22
+ # @!attribute lookups
23
+ #
24
+ # @return [SportsOddsAPI::Models::Team::Lookups, nil]
25
+ optional :lookups, -> { SportsOddsAPI::Team::Lookups }
26
+
27
+ # @!attribute names
28
+ #
29
+ # @return [SportsOddsAPI::Models::Team::Names, nil]
30
+ optional :names, -> { SportsOddsAPI::Team::Names }
31
+
32
+ # @!attribute sport_id
33
+ #
34
+ # @return [String, nil]
35
+ optional :sport_id, String, api_name: :sportID
36
+
37
+ # @!attribute standings
38
+ #
39
+ # @return [SportsOddsAPI::Models::Team::Standings, nil]
40
+ optional :standings, -> { SportsOddsAPI::Team::Standings }
41
+
42
+ # @!attribute team_id
43
+ #
44
+ # @return [String, nil]
45
+ optional :team_id, String, api_name: :teamID
46
+
47
+ # @!method initialize(colors: nil, league_id: nil, logo: nil, lookups: nil, names: nil, sport_id: nil, standings: nil, team_id: nil)
48
+ # @param colors [SportsOddsAPI::Models::Team::Colors]
49
+ # @param league_id [String]
50
+ # @param logo [String]
51
+ # @param lookups [SportsOddsAPI::Models::Team::Lookups]
52
+ # @param names [SportsOddsAPI::Models::Team::Names]
53
+ # @param sport_id [String]
54
+ # @param standings [SportsOddsAPI::Models::Team::Standings]
55
+ # @param team_id [String]
56
+
57
+ # @see SportsOddsAPI::Models::Team#colors
58
+ class Colors < SportsOddsAPI::Internal::Type::BaseModel
59
+ # @!attribute primary
60
+ #
61
+ # @return [String, nil]
62
+ optional :primary, String
63
+
64
+ # @!attribute primary_contrast
65
+ #
66
+ # @return [String, nil]
67
+ optional :primary_contrast, String, api_name: :primaryContrast
68
+
69
+ # @!attribute secondary
70
+ #
71
+ # @return [String, nil]
72
+ optional :secondary, String
73
+
74
+ # @!attribute secondary_contrast
75
+ #
76
+ # @return [String, nil]
77
+ optional :secondary_contrast, String, api_name: :secondaryContrast
78
+
79
+ # @!method initialize(primary: nil, primary_contrast: nil, secondary: nil, secondary_contrast: nil)
80
+ # @param primary [String]
81
+ # @param primary_contrast [String]
82
+ # @param secondary [String]
83
+ # @param secondary_contrast [String]
84
+ end
85
+
86
+ # @see SportsOddsAPI::Models::Team#lookups
87
+ class Lookups < SportsOddsAPI::Internal::Type::BaseModel
88
+ # @!attribute team_name
89
+ #
90
+ # @return [Array<String>, nil]
91
+ optional :team_name, SportsOddsAPI::Internal::Type::ArrayOf[String], api_name: :teamName
92
+
93
+ # @!method initialize(team_name: nil)
94
+ # @param team_name [Array<String>]
95
+ end
96
+
97
+ # @see SportsOddsAPI::Models::Team#names
98
+ class Names < SportsOddsAPI::Internal::Type::BaseModel
99
+ # @!attribute long
100
+ #
101
+ # @return [String, nil]
102
+ optional :long, String
103
+
104
+ # @!attribute medium
105
+ #
106
+ # @return [String, nil]
107
+ optional :medium, String
108
+
109
+ # @!attribute short
110
+ #
111
+ # @return [String, nil]
112
+ optional :short, String
113
+
114
+ # @!method initialize(long: nil, medium: nil, short: nil)
115
+ # @param long [String]
116
+ # @param medium [String]
117
+ # @param short [String]
118
+ end
119
+
120
+ # @see SportsOddsAPI::Models::Team#standings
121
+ class Standings < SportsOddsAPI::Internal::Type::BaseModel
122
+ # @!attribute losses
123
+ #
124
+ # @return [Float, nil]
125
+ optional :losses, Float
126
+
127
+ # @!attribute played
128
+ #
129
+ # @return [Float, nil]
130
+ optional :played, Float
131
+
132
+ # @!attribute position
133
+ #
134
+ # @return [String, nil]
135
+ optional :position, String
136
+
137
+ # @!attribute record
138
+ #
139
+ # @return [String, nil]
140
+ optional :record, String
141
+
142
+ # @!attribute ties
143
+ #
144
+ # @return [Float, nil]
145
+ optional :ties, Float
146
+
147
+ # @!attribute wins
148
+ #
149
+ # @return [Float, nil]
150
+ optional :wins, Float
151
+
152
+ # @!method initialize(losses: nil, played: nil, position: nil, record: nil, ties: nil, wins: nil)
153
+ # @param losses [Float]
154
+ # @param played [Float]
155
+ # @param position [String]
156
+ # @param record [String]
157
+ # @param ties [Float]
158
+ # @param wins [Float]
159
+ end
160
+ end
161
+ end
162
+ end
@@ -0,0 +1,58 @@
1
+ # frozen_string_literal: true
2
+
3
+ module SportsOddsAPI
4
+ module Models
5
+ # @see SportsOddsAPI::Resources::Teams#get
6
+ class TeamGetParams < SportsOddsAPI::Internal::Type::BaseModel
7
+ extend SportsOddsAPI::Internal::Type::RequestParameters::Converter
8
+ include SportsOddsAPI::Internal::Type::RequestParameters
9
+
10
+ # @!attribute cursor
11
+ # The cursor for the request. Used to get the next group of Teams. This should be
12
+ # the nextCursor from the prior response.
13
+ #
14
+ # @return [String, nil]
15
+ optional :cursor, String
16
+
17
+ # @!attribute league_id
18
+ # A single leagueID or comma-separated list of leagueIDs to get Teams for
19
+ #
20
+ # @return [String, nil]
21
+ optional :league_id, String
22
+
23
+ # @!attribute limit
24
+ # The maximum number of Teams to return
25
+ #
26
+ # @return [Float, nil]
27
+ optional :limit, Float
28
+
29
+ # @!attribute sport_id
30
+ # A single sportID or comma-separated list of sportIDs to get Teams for
31
+ #
32
+ # @return [String, nil]
33
+ optional :sport_id, String
34
+
35
+ # @!attribute team_id
36
+ # A single teamID or comma-separated list of teamIDs to get data for
37
+ #
38
+ # @return [String, nil]
39
+ optional :team_id, String
40
+
41
+ # @!method initialize(cursor: nil, league_id: nil, limit: nil, sport_id: nil, team_id: nil, request_options: {})
42
+ # Some parameter documentations has been truncated, see
43
+ # {SportsOddsAPI::Models::TeamGetParams} for more details.
44
+ #
45
+ # @param cursor [String] The cursor for the request. Used to get the next group of Teams. This should be
46
+ #
47
+ # @param league_id [String] A single leagueID or comma-separated list of leagueIDs to get Teams for
48
+ #
49
+ # @param limit [Float] The maximum number of Teams to return
50
+ #
51
+ # @param sport_id [String] A single sportID or comma-separated list of sportIDs to get Teams for
52
+ #
53
+ # @param team_id [String] A single teamID or comma-separated list of teamIDs to get data for
54
+ #
55
+ # @param request_options [SportsOddsAPI::RequestOptions, Hash{Symbol=>Object}]
56
+ end
57
+ end
58
+ end
@@ -0,0 +1,76 @@
1
+ # frozen_string_literal: true
2
+
3
+ module SportsOddsAPI
4
+ [
5
+ SportsOddsAPI::Internal::Type::BaseModel,
6
+ *SportsOddsAPI::Internal::Type::BaseModel.subclasses
7
+ ].each do |cls|
8
+ cls.define_sorbet_constant!(:OrHash) { T.type_alias { T.any(cls, SportsOddsAPI::Internal::AnyHash) } }
9
+ end
10
+
11
+ SportsOddsAPI::Internal::Util.walk_namespaces(SportsOddsAPI::Models).each do |mod|
12
+ case mod
13
+ in SportsOddsAPI::Internal::Type::Enum | SportsOddsAPI::Internal::Type::Union
14
+ mod.constants.each do |name|
15
+ case mod.const_get(name)
16
+ in true | false
17
+ mod.define_sorbet_constant!(:TaggedBoolean) { T.type_alias { T::Boolean } }
18
+ mod.define_sorbet_constant!(:OrBoolean) { T.type_alias { T::Boolean } }
19
+ in Integer
20
+ mod.define_sorbet_constant!(:TaggedInteger) { T.type_alias { Integer } }
21
+ mod.define_sorbet_constant!(:OrInteger) { T.type_alias { Integer } }
22
+ in Float
23
+ mod.define_sorbet_constant!(:TaggedFloat) { T.type_alias { Float } }
24
+ mod.define_sorbet_constant!(:OrFloat) { T.type_alias { Float } }
25
+ in Symbol
26
+ mod.define_sorbet_constant!(:TaggedSymbol) { T.type_alias { Symbol } }
27
+ mod.define_sorbet_constant!(:OrSymbol) { T.type_alias { T.any(Symbol, String) } }
28
+ else
29
+ end
30
+ end
31
+ else
32
+ end
33
+ end
34
+
35
+ SportsOddsAPI::Internal::Util.walk_namespaces(SportsOddsAPI::Models)
36
+ .lazy
37
+ .grep(SportsOddsAPI::Internal::Type::Union)
38
+ .each do |mod|
39
+ const = :Variants
40
+ next if mod.sorbet_constant_defined?(const)
41
+
42
+ mod.define_sorbet_constant!(const) { T.type_alias { mod.to_sorbet_type } }
43
+ end
44
+
45
+ AccountGetUsageParams = SportsOddsAPI::Models::AccountGetUsageParams
46
+
47
+ AccountUsage = SportsOddsAPI::Models::AccountUsage
48
+
49
+ Event = SportsOddsAPI::Models::Event
50
+
51
+ EventGetParams = SportsOddsAPI::Models::EventGetParams
52
+
53
+ League = SportsOddsAPI::Models::League
54
+
55
+ LeagueGetParams = SportsOddsAPI::Models::LeagueGetParams
56
+
57
+ Player = SportsOddsAPI::Models::Player
58
+
59
+ PlayerGetParams = SportsOddsAPI::Models::PlayerGetParams
60
+
61
+ RateLimitInterval = SportsOddsAPI::Models::RateLimitInterval
62
+
63
+ Sport = SportsOddsAPI::Models::Sport
64
+
65
+ SportGetParams = SportsOddsAPI::Models::SportGetParams
66
+
67
+ Stat = SportsOddsAPI::Models::Stat
68
+
69
+ StatGetParams = SportsOddsAPI::Models::StatGetParams
70
+
71
+ StreamEventsParams = SportsOddsAPI::Models::StreamEventsParams
72
+
73
+ Team = SportsOddsAPI::Models::Team
74
+
75
+ TeamGetParams = SportsOddsAPI::Models::TeamGetParams
76
+ end
@@ -0,0 +1,78 @@
1
+ # frozen_string_literal: true
2
+
3
+ module SportsOddsAPI
4
+ # Specify HTTP behaviour to use for a specific request. These options supplement
5
+ # or override those provided at the client level.
6
+ #
7
+ # When making a request, you can pass an actual {RequestOptions} instance, or
8
+ # simply pass a Hash with symbol keys matching the attributes on this class.
9
+ class RequestOptions < SportsOddsAPI::Internal::Type::BaseModel
10
+ # @api private
11
+ #
12
+ # @param opts [SportsOddsAPI::RequestOptions, Hash{Symbol=>Object}]
13
+ #
14
+ # @raise [ArgumentError]
15
+ def self.validate!(opts)
16
+ case opts
17
+ in SportsOddsAPI::RequestOptions | Hash
18
+ opts.to_h.each_key do |k|
19
+ unless fields.include?(k)
20
+ raise ArgumentError.new("Request `opts` keys must be one of #{fields.keys}, got #{k.inspect}")
21
+ end
22
+ end
23
+ else
24
+ raise ArgumentError.new("Request `opts` must be a Hash or RequestOptions, got #{opts.inspect}")
25
+ end
26
+ end
27
+
28
+ # @!attribute idempotency_key
29
+ # Idempotency key to send with request and all associated retries. Will only be
30
+ # sent for write requests.
31
+ #
32
+ # @return [String, nil]
33
+ optional :idempotency_key, String
34
+
35
+ # @!attribute extra_query
36
+ # Extra query params to send with the request. These are `.merge`’d into any
37
+ # `query` given at the client level.
38
+ #
39
+ # @return [Hash{String=>Array<String>, String, nil}, nil]
40
+ optional :extra_query,
41
+ SportsOddsAPI::Internal::Type::HashOf[SportsOddsAPI::Internal::Type::ArrayOf[String]]
42
+
43
+ # @!attribute extra_headers
44
+ # Extra headers to send with the request. These are `.merged`’d into any
45
+ # `extra_headers` given at the client level.
46
+ #
47
+ # @return [Hash{String=>String, nil}, nil]
48
+ optional :extra_headers, SportsOddsAPI::Internal::Type::HashOf[String, nil?: true]
49
+
50
+ # @!attribute extra_body
51
+ # Extra data to send with the request. These are deep merged into any data
52
+ # generated as part of the normal request.
53
+ #
54
+ # @return [Object, nil]
55
+ optional :extra_body, SportsOddsAPI::Internal::Type::HashOf[SportsOddsAPI::Internal::Type::Unknown]
56
+
57
+ # @!attribute max_retries
58
+ # Maximum number of retries to attempt after a failed initial request.
59
+ #
60
+ # @return [Integer, nil]
61
+ optional :max_retries, Integer
62
+
63
+ # @!attribute timeout
64
+ # Request timeout in seconds.
65
+ #
66
+ # @return [Float, nil]
67
+ optional :timeout, Float
68
+
69
+ # @!method initialize(values = {})
70
+ # Returns a new instance of RequestOptions.
71
+ #
72
+ # @param values [Hash{Symbol=>Object}]
73
+
74
+ define_sorbet_constant!(:OrHash) do
75
+ T.type_alias { T.any(SportsOddsAPI::RequestOptions, SportsOddsAPI::Internal::AnyHash) }
76
+ end
77
+ end
78
+ end
@@ -0,0 +1,33 @@
1
+ # frozen_string_literal: true
2
+
3
+ module SportsOddsAPI
4
+ module Resources
5
+ class Account
6
+ # Get rate-limits and usage data about your API key
7
+ #
8
+ # @overload get_usage(request_options: {})
9
+ #
10
+ # @param request_options [SportsOddsAPI::RequestOptions, Hash{Symbol=>Object}, nil]
11
+ #
12
+ # @return [SportsOddsAPI::Models::AccountUsage]
13
+ #
14
+ # @see SportsOddsAPI::Models::AccountGetUsageParams
15
+ def get_usage(params = {})
16
+ @client.request(
17
+ method: :get,
18
+ path: "account/usage",
19
+ unwrap: :data,
20
+ model: SportsOddsAPI::AccountUsage,
21
+ options: params[:request_options]
22
+ )
23
+ end
24
+
25
+ # @api private
26
+ #
27
+ # @param client [SportsOddsAPI::Client]
28
+ def initialize(client:)
29
+ @client = client
30
+ end
31
+ end
32
+ end
33
+ end
@@ -0,0 +1,94 @@
1
+ # frozen_string_literal: true
2
+
3
+ module SportsOddsAPI
4
+ module Resources
5
+ class Events
6
+ # Some parameter documentations has been truncated, see
7
+ # {SportsOddsAPI::Models::EventGetParams} for more details.
8
+ #
9
+ # Get a list of Events
10
+ #
11
+ # @overload get(bookmaker_id: nil, cancelled: nil, cursor: nil, ended: nil, event_id: nil, finalized: nil, include_alt_lines: nil, include_opposing_odds: nil, league_id: nil, limit: nil, live: nil, odd_id: nil, odds_available: nil, odds_present: nil, player_id: nil, sport_id: nil, started: nil, starts_after: nil, starts_before: nil, team_id: nil, type: nil, request_options: {})
12
+ #
13
+ # @param bookmaker_id [String] A bookmakerID or comma-separated list of bookmakerIDs to include odds for
14
+ #
15
+ # @param cancelled [Boolean] Only include cancelled Events (true), only non-cancelled Events (false) or all E
16
+ #
17
+ # @param cursor [String] The cursor for the request. Used to get the next group of Events. This should be
18
+ #
19
+ # @param ended [Boolean] Only include Events which have have ended (true), only Events which have not end
20
+ #
21
+ # @param event_id [String] An eventID or comma-separated list of eventIDs to get Event data for
22
+ #
23
+ # @param finalized [Boolean] Only include finalized Events (true), exclude unfinalized Events (false) or all
24
+ #
25
+ # @param include_alt_lines [Boolean] Whether to include alternate lines in the odds byBookmaker data
26
+ #
27
+ # @param include_opposing_odds [Boolean] Whether to include opposing odds for each included oddID
28
+ #
29
+ # @param league_id [String] A leagueID or comma-separated list of leagueIDs to get Events for
30
+ #
31
+ # @param limit [Float] The maximum number of Events to return
32
+ #
33
+ # @param live [Boolean] Only include live Events (true), only non-live Events (false) or all Events (omi
34
+ #
35
+ # @param odd_id [String] An oddID or comma-separated list of oddIDs to include odds for
36
+ #
37
+ # @param odds_available [Boolean] Whether you want only Events which do (true) or do not (false) have odds markets
38
+ #
39
+ # @param odds_present [Boolean] Whether you want only Events which do (true) or do not (false) have any associat
40
+ #
41
+ # @param player_id [String] A playerID or comma-separated list of playerIDs to include Events (and associate
42
+ #
43
+ # @param sport_id [String] A sportID or comma-separated list of sportIDs to get Events for
44
+ #
45
+ # @param started [Boolean] Only include Events which have have previously started (true), only Events which
46
+ #
47
+ # @param starts_after [Time] Get Events that start after this date
48
+ #
49
+ # @param starts_before [Time] Get Events that start before this date
50
+ #
51
+ # @param team_id [String] A teamID or comma-separated list of teamIDs to include Events for
52
+ #
53
+ # @param type [String] Only include Events of the specified type
54
+ #
55
+ # @param request_options [SportsOddsAPI::RequestOptions, Hash{Symbol=>Object}, nil]
56
+ #
57
+ # @return [SportsOddsAPI::Internal::NextCursorPage<SportsOddsAPI::Models::Event>]
58
+ #
59
+ # @see SportsOddsAPI::Models::EventGetParams
60
+ def get(params = {})
61
+ parsed, options = SportsOddsAPI::EventGetParams.dump_request(params)
62
+ @client.request(
63
+ method: :get,
64
+ path: "events/",
65
+ query: parsed.transform_keys(
66
+ bookmaker_id: "bookmakerID",
67
+ event_id: "eventID",
68
+ include_alt_lines: "includeAltLines",
69
+ include_opposing_odds: "includeOpposingOdds",
70
+ league_id: "leagueID",
71
+ odd_id: "oddID",
72
+ odds_available: "oddsAvailable",
73
+ odds_present: "oddsPresent",
74
+ player_id: "playerID",
75
+ sport_id: "sportID",
76
+ starts_after: "startsAfter",
77
+ starts_before: "startsBefore",
78
+ team_id: "teamID"
79
+ ),
80
+ page: SportsOddsAPI::Internal::NextCursorPage,
81
+ model: SportsOddsAPI::Event,
82
+ options: options
83
+ )
84
+ end
85
+
86
+ # @api private
87
+ #
88
+ # @param client [SportsOddsAPI::Client]
89
+ def initialize(client:)
90
+ @client = client
91
+ end
92
+ end
93
+ end
94
+ end
@@ -0,0 +1,39 @@
1
+ # frozen_string_literal: true
2
+
3
+ module SportsOddsAPI
4
+ module Resources
5
+ class Leagues
6
+ # Get a list of Leagues
7
+ #
8
+ # @overload get(league_id: nil, sport_id: nil, request_options: {})
9
+ #
10
+ # @param league_id [String] The league to get data for
11
+ #
12
+ # @param sport_id [String] The sport to get leagues for
13
+ #
14
+ # @param request_options [SportsOddsAPI::RequestOptions, Hash{Symbol=>Object}, nil]
15
+ #
16
+ # @return [Array<SportsOddsAPI::Models::League>]
17
+ #
18
+ # @see SportsOddsAPI::Models::LeagueGetParams
19
+ def get(params = {})
20
+ parsed, options = SportsOddsAPI::LeagueGetParams.dump_request(params)
21
+ @client.request(
22
+ method: :get,
23
+ path: "leagues/",
24
+ query: parsed.transform_keys(league_id: "leagueID", sport_id: "sportID"),
25
+ unwrap: :data,
26
+ model: SportsOddsAPI::Internal::Type::ArrayOf[SportsOddsAPI::League],
27
+ options: options
28
+ )
29
+ end
30
+
31
+ # @api private
32
+ #
33
+ # @param client [SportsOddsAPI::Client]
34
+ def initialize(client:)
35
+ @client = client
36
+ end
37
+ end
38
+ end
39
+ end
@@ -0,0 +1,48 @@
1
+ # frozen_string_literal: true
2
+
3
+ module SportsOddsAPI
4
+ module Resources
5
+ class Players
6
+ # Some parameter documentations has been truncated, see
7
+ # {SportsOddsAPI::Models::PlayerGetParams} for more details.
8
+ #
9
+ # Get a list of Players for a specific Team or Event
10
+ #
11
+ # @overload get(cursor: nil, event_id: nil, limit: nil, player_id: nil, team_id: nil, request_options: {})
12
+ #
13
+ # @param cursor [String] The cursor for the request. Used to get the next group of Players. This should b
14
+ #
15
+ # @param event_id [String] EventID to get Players data for
16
+ #
17
+ # @param limit [Float] The maximum number of Players to return
18
+ #
19
+ # @param player_id [String] PlayerID to get data for
20
+ #
21
+ # @param team_id [String] TeamID to get Players data for
22
+ #
23
+ # @param request_options [SportsOddsAPI::RequestOptions, Hash{Symbol=>Object}, nil]
24
+ #
25
+ # @return [SportsOddsAPI::Internal::NextCursorPage<SportsOddsAPI::Models::Player>]
26
+ #
27
+ # @see SportsOddsAPI::Models::PlayerGetParams
28
+ def get(params = {})
29
+ parsed, options = SportsOddsAPI::PlayerGetParams.dump_request(params)
30
+ @client.request(
31
+ method: :get,
32
+ path: "players/",
33
+ query: parsed.transform_keys(event_id: "eventID", player_id: "playerID", team_id: "teamID"),
34
+ page: SportsOddsAPI::Internal::NextCursorPage,
35
+ model: SportsOddsAPI::Player,
36
+ options: options
37
+ )
38
+ end
39
+
40
+ # @api private
41
+ #
42
+ # @param client [SportsOddsAPI::Client]
43
+ def initialize(client:)
44
+ @client = client
45
+ end
46
+ end
47
+ end
48
+ end
@@ -0,0 +1,33 @@
1
+ # frozen_string_literal: true
2
+
3
+ module SportsOddsAPI
4
+ module Resources
5
+ class Sports
6
+ # Get a list of sports
7
+ #
8
+ # @overload get(request_options: {})
9
+ #
10
+ # @param request_options [SportsOddsAPI::RequestOptions, Hash{Symbol=>Object}, nil]
11
+ #
12
+ # @return [Array<SportsOddsAPI::Models::Sport>]
13
+ #
14
+ # @see SportsOddsAPI::Models::SportGetParams
15
+ def get(params = {})
16
+ @client.request(
17
+ method: :get,
18
+ path: "sports/",
19
+ unwrap: :data,
20
+ model: SportsOddsAPI::Internal::Type::ArrayOf[SportsOddsAPI::Sport],
21
+ options: params[:request_options]
22
+ )
23
+ end
24
+
25
+ # @api private
26
+ #
27
+ # @param client [SportsOddsAPI::Client]
28
+ def initialize(client:)
29
+ @client = client
30
+ end
31
+ end
32
+ end
33
+ end
@@ -0,0 +1,44 @@
1
+ # frozen_string_literal: true
2
+
3
+ module SportsOddsAPI
4
+ module Resources
5
+ class Stats
6
+ # Some parameter documentations has been truncated, see
7
+ # {SportsOddsAPI::Models::StatGetParams} for more details.
8
+ #
9
+ # Get a list of StatIDs
10
+ #
11
+ # @overload get(sport_id: nil, stat_id: nil, stat_level: nil, request_options: {})
12
+ #
13
+ # @param sport_id [String] SportID to get StatIDs for
14
+ #
15
+ # @param stat_id [String] StatID to get data for
16
+ #
17
+ # @param stat_level [String] Level of the stat, must be used in combination with sportID. Must be one of all,
18
+ #
19
+ # @param request_options [SportsOddsAPI::RequestOptions, Hash{Symbol=>Object}, nil]
20
+ #
21
+ # @return [Array<SportsOddsAPI::Models::Stat>]
22
+ #
23
+ # @see SportsOddsAPI::Models::StatGetParams
24
+ def get(params = {})
25
+ parsed, options = SportsOddsAPI::StatGetParams.dump_request(params)
26
+ @client.request(
27
+ method: :get,
28
+ path: "stats/",
29
+ query: parsed.transform_keys(sport_id: "sportID", stat_id: "statID", stat_level: "statLevel"),
30
+ unwrap: :data,
31
+ model: SportsOddsAPI::Internal::Type::ArrayOf[SportsOddsAPI::Stat],
32
+ options: options
33
+ )
34
+ end
35
+
36
+ # @api private
37
+ #
38
+ # @param client [SportsOddsAPI::Client]
39
+ def initialize(client:)
40
+ @client = client
41
+ end
42
+ end
43
+ end
44
+ end