|
|
@@ -0,0 +1,54 @@
|
|
|
+package balldontlie
|
|
|
+
|
|
|
+import upickle.default._
|
|
|
+import game._
|
|
|
+import requests.Response
|
|
|
+
|
|
|
+case class ResponseMetadata(
|
|
|
+ total_pages: Int,
|
|
|
+ current_page: Int,
|
|
|
+ next_page: Int,
|
|
|
+ per_page: Int,
|
|
|
+ total_count: Int
|
|
|
+)
|
|
|
+object ResponseMetadata {
|
|
|
+ implicit val responseMetadataR: Reader[ResponseMetadata] =
|
|
|
+ macroR[ResponseMetadata]
|
|
|
+}
|
|
|
+
|
|
|
+object Utils {
|
|
|
+ val get_json = (endpoint: String, params: Iterable[(String, String)]) => {
|
|
|
+ val r = requests.get(
|
|
|
+ endpoint,
|
|
|
+ params = params
|
|
|
+ )
|
|
|
+
|
|
|
+ ujson.read(r.text())
|
|
|
+ }
|
|
|
+}
|
|
|
+
|
|
|
+case class GamesResponse(data: List[GameData], meta: ResponseMetadata)
|
|
|
+object GamesResponse {
|
|
|
+ implicit val gamesResponseR: Reader[GamesResponse] = macroR[GamesResponse]
|
|
|
+
|
|
|
+ val getGames = (season: Int, teams: List[Int]) => {
|
|
|
+ val json = Utils.get_json(
|
|
|
+ "https://www.balldontlie.io/api/v1/games",
|
|
|
+ Map(
|
|
|
+ "seasons[]" -> List(season).mkString(","),
|
|
|
+ "team_ids[]" -> teams.mkString(",")
|
|
|
+ )
|
|
|
+ )
|
|
|
+ upickle.default.read[GamesResponse](json)
|
|
|
+ }
|
|
|
+}
|
|
|
+
|
|
|
+case class TeamsResponse(data: List[Team], meta: ResponseMetadata)
|
|
|
+object TeamsResponse {
|
|
|
+ implicit val teamsResponseR: Reader[TeamsResponse] = macroR[TeamsResponse]
|
|
|
+
|
|
|
+ val getTeams = {
|
|
|
+ val json = Utils.get_json("https://www.balldontlie.io/api/v1/teams", Nil)
|
|
|
+ upickle.default.read[TeamsResponse](json)
|
|
|
+ }
|
|
|
+}
|