|
|
@@ -30,65 +30,6 @@ object Utils {
|
|
|
}
|
|
|
}
|
|
|
|
|
|
-case class GamesResponse(data: List[GameData], meta: ResponseMetadata)
|
|
|
-object GamesResponse {
|
|
|
- implicit val gamesResponseR: Reader[GamesResponse] = macroR[GamesResponse]
|
|
|
- val endpoint = "https://www.balldontlie.io/api/v1/games"
|
|
|
-
|
|
|
- val getGames = (season: Int, teams: List[Int]) => {
|
|
|
- // Using an array as param to team_ids[] yields a 500 error so we make
|
|
|
- // several requests instead
|
|
|
- teams.flatMap(team => {
|
|
|
- val baseParams = Map(
|
|
|
- "seasons[]" -> List(season).mkString(","),
|
|
|
- "team_ids[]" -> team
|
|
|
- )
|
|
|
-
|
|
|
- val response: GamesResponse =
|
|
|
- Utils.get_and_decode[GamesResponse](endpoint, baseParams)
|
|
|
- println(response.meta)
|
|
|
- response.data
|
|
|
- })
|
|
|
- }
|
|
|
-}
|
|
|
-
|
|
|
-case class TeamsResponse(data: List[Team], meta: ResponseMetadata)
|
|
|
-object TeamsResponse {
|
|
|
- implicit val teamsResponseR: Reader[TeamsResponse] = macroR[TeamsResponse]
|
|
|
- val endpoint = "https://www.balldontlie.io/api/v1/teams"
|
|
|
-
|
|
|
- val getTeams = {
|
|
|
- val getDataFromPage = (page: Int) => {
|
|
|
- val response: TeamsResponse =
|
|
|
- Utils.get_and_decode[TeamsResponse](endpoint, Map("page" -> page))
|
|
|
-
|
|
|
- val nextPage =
|
|
|
- if (response.meta.current_page != response.meta.total_pages) {
|
|
|
- Some(response.meta.next_page)
|
|
|
- } else {
|
|
|
- None
|
|
|
- }
|
|
|
-
|
|
|
- (response.data, nextPage)
|
|
|
- }
|
|
|
-
|
|
|
- def getDataFromAllPages(
|
|
|
- dataSoFar: List[Team],
|
|
|
- nextPage: Option[Int]
|
|
|
- ): List[Team] = {
|
|
|
- nextPage match {
|
|
|
- case Some(page) =>
|
|
|
- val (data, next) = getDataFromPage(page)
|
|
|
- getDataFromAllPages(dataSoFar ++ data, next)
|
|
|
- case None =>
|
|
|
- dataSoFar
|
|
|
- }
|
|
|
- }
|
|
|
-
|
|
|
- getDataFromAllPages(Nil, Some(1))
|
|
|
- }
|
|
|
-}
|
|
|
-
|
|
|
case class EndpointResponse[T](data: T, meta: ResponseMetadata) {
|
|
|
type Params = Iterable[(String, String)]
|
|
|
|