1
+ use crate :: filters:: { EventTeamsFilter , EventSkillsFilter , EventAwardsFilter , DivisionMatchesFilter , DivisionRankingsFilter , TeamEventsFilter , TeamMatchesFilter , TeamRankingsFilter , TeamSkillsFilter , TeamAwardsFilter , SeasonEventsFilter } ;
2
+
1
3
use super :: {
2
4
filters:: { EventsFilter , SeasonsFilter , TeamsFilter } ,
3
5
schema:: * ,
@@ -69,6 +71,7 @@ impl RobotEvents {
69
71
. json ( )
70
72
. await ?)
71
73
}
74
+
72
75
/// Get a specific RobotEvents [`Team`] by ID.
73
76
pub async fn team ( & self , team_id : i32 ) -> Result < Team , reqwest:: Error > {
74
77
Ok ( self
@@ -78,6 +81,51 @@ impl RobotEvents {
78
81
. await ?)
79
82
}
80
83
84
+ /// Gets a List of Events that a given Team has attended.
85
+ pub async fn team_events ( & self , team_id : i32 , filter : TeamEventsFilter ) -> Result < PaginatedResponse < Event > , reqwest:: Error > {
86
+ Ok ( self
87
+ . request ( format ! ( "/teams/{team_id}/events{filter}" ) )
88
+ . await ?
89
+ . json ( )
90
+ . await ?)
91
+ }
92
+
93
+ /// Gets a List of Matches that a given Team has played in.
94
+ pub async fn team_matches ( & self , team_id : i32 , filter : TeamMatchesFilter ) -> Result < PaginatedResponse < Match > , reqwest:: Error > {
95
+ Ok ( self
96
+ . request ( format ! ( "/teams/{team_id}/matches{filter}" ) )
97
+ . await ?
98
+ . json ( )
99
+ . await ?)
100
+ }
101
+
102
+ /// Gets a List of Matches that a given Team has played in.
103
+ pub async fn team_rankings ( & self , team_id : i32 , filter : TeamRankingsFilter ) -> Result < PaginatedResponse < Ranking > , reqwest:: Error > {
104
+ Ok ( self
105
+ . request ( format ! ( "/teams/{team_id}/rankings{filter}" ) )
106
+ . await ?
107
+ . json ( )
108
+ . await ?)
109
+ }
110
+
111
+ /// Gets a List of Skills runs that a given Team has performed.
112
+ pub async fn team_skills ( & self , team_id : i32 , filter : TeamSkillsFilter ) -> Result < PaginatedResponse < Skill > , reqwest:: Error > {
113
+ Ok ( self
114
+ . request ( format ! ( "/teams/{team_id}/skills{filter}" ) )
115
+ . await ?
116
+ . json ( )
117
+ . await ?)
118
+ }
119
+
120
+ /// Gets a List of Awards that a given Team has received.
121
+ pub async fn team_awards ( & self , team_id : i32 , filter : TeamAwardsFilter ) -> Result < PaginatedResponse < Award > , reqwest:: Error > {
122
+ Ok ( self
123
+ . request ( format ! ( "/teams/{team_id}/awards{filter}" ) )
124
+ . await ?
125
+ . json ( )
126
+ . await ?)
127
+ }
128
+
81
129
/// Get a paginated list of [`Season`]s from RobotEvents.
82
130
///
83
131
/// Season listings can be filtered using a [`SeasonFilter`] search.
@@ -91,6 +139,7 @@ impl RobotEvents {
91
139
. json ( )
92
140
. await ?)
93
141
}
142
+
94
143
/// Get a specific RobotEvents [`Season`] by ID.
95
144
pub async fn season ( & self , season_id : i32 ) -> Result < Season , reqwest:: Error > {
96
145
Ok ( self
@@ -100,6 +149,15 @@ impl RobotEvents {
100
149
. await ?)
101
150
}
102
151
152
+ /// Gets a List of Events for a given Season.
153
+ pub async fn season_events ( & self , season_id : i32 , filter : SeasonEventsFilter ) -> Result < PaginatedResponse < Season > , reqwest:: Error > {
154
+ Ok ( self
155
+ . request ( format ! ( "/seasons/{season_id}/events{filter}" ) )
156
+ . await ?
157
+ . json ( )
158
+ . await ?)
159
+ }
160
+
103
161
/// Get a paginated list of all programs from RobotEvents.
104
162
pub async fn programs ( & self ) -> Result < PaginatedResponse < IdInfo > , reqwest:: Error > {
105
163
Ok ( self . request ( "/programs" ) . await ?. json ( ) . await ?)
@@ -121,15 +179,70 @@ impl RobotEvents {
121
179
filter : EventsFilter ,
122
180
) -> Result < PaginatedResponse < Event > , reqwest:: Error > {
123
181
Ok ( self
124
- . request ( format ! ( "/programs {filter}" ) )
182
+ . request ( format ! ( "/events {filter}" ) )
125
183
. await ?
126
184
. json ( )
127
185
. await ?)
128
186
}
187
+
129
188
/// Get a specific RobotEvents event by ID.
130
189
pub async fn event ( & self , event_id : i32 ) -> Result < Event , reqwest:: Error > {
131
190
Ok ( self
132
- . request ( format ! ( "/programs/{event_id}" ) )
191
+ . request ( format ! ( "/events/{event_id}" ) )
192
+ . await ?
193
+ . json ( )
194
+ . await ?)
195
+ }
196
+
197
+ /// Get a paginated list of teams attending an event.
198
+ pub async fn event_teams ( & self , event_id : i32 , filter : EventTeamsFilter ) -> Result < PaginatedResponse < Team > , reqwest:: Error > {
199
+ Ok ( self
200
+ . request ( format ! ( "/events/{event_id}/teams{filter}" ) )
201
+ . await ?
202
+ . json ( )
203
+ . await ?)
204
+ }
205
+
206
+ /// Get a paginated list of skills runs at an event.
207
+ pub async fn event_skills ( & self , event_id : i32 , filter : EventSkillsFilter ) -> Result < PaginatedResponse < Skill > , reqwest:: Error > {
208
+ Ok ( self
209
+ . request ( format ! ( "/events/{event_id}/skills{filter}" ) )
210
+ . await ?
211
+ . json ( )
212
+ . await ?)
213
+ }
214
+
215
+ /// Get a paginated list of skills runs at an event.
216
+ pub async fn event_awards ( & self , event_id : i32 , filter : EventAwardsFilter ) -> Result < PaginatedResponse < Award > , reqwest:: Error > {
217
+ Ok ( self
218
+ . request ( format ! ( "/events/{event_id}/awards{filter}" ) )
219
+ . await ?
220
+ . json ( )
221
+ . await ?)
222
+ }
223
+
224
+ /// Gets a List of Matches for a single Division of an Event.
225
+ pub async fn event_division_matches ( & self , event_id : i32 , division_id : i32 , filter : DivisionMatchesFilter ) -> Result < PaginatedResponse < Match > , reqwest:: Error > {
226
+ Ok ( self
227
+ . request ( format ! ( "/events/{event_id}/divisions/{division_id}/matches{filter}" ) )
228
+ . await ?
229
+ . json ( )
230
+ . await ?)
231
+ }
232
+
233
+ /// Gets a List of Finalist Rankings for a single Division of an Event.
234
+ pub async fn event_division_finalist_rankings ( & self , event_id : i32 , division_id : i32 , filter : DivisionRankingsFilter ) -> Result < PaginatedResponse < Ranking > , reqwest:: Error > {
235
+ Ok ( self
236
+ . request ( format ! ( "/events/{event_id}/divisions/{division_id}/finalistRankings{filter}" ) )
237
+ . await ?
238
+ . json ( )
239
+ . await ?)
240
+ }
241
+
242
+ /// Gets a List of Rankings for a single Division of an Event.
243
+ pub async fn event_division_rankings ( & self , event_id : i32 , division_id : i32 , filter : DivisionRankingsFilter ) -> Result < PaginatedResponse < Ranking > , reqwest:: Error > {
244
+ Ok ( self
245
+ . request ( format ! ( "/events/{event_id}/divisions/{division_id}/finalist{filter}" ) )
133
246
. await ?
134
247
. json ( )
135
248
. await ?)
0 commit comments