Browse Source

Add requests code

theenglishway (time) 2 years ago
parent
commit
dc3a9aedc2

+ 54 - 0
src/main/scala/BallDontLie.scala

@@ -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)
+  }
+}

+ 32 - 0
src/main/scala/Games.scala

@@ -0,0 +1,32 @@
+package game
+
+import upickle.default._
+
+case class Team(
+    id: Int,
+    abbreviation: String,
+    city: String,
+    conference: String,
+    division: String,
+    full_name: String,
+    name: String
+)
+object Team {
+  implicit val teamR: Reader[Team] = macroR[Team]
+}
+
+case class GameData(
+    id: Int,
+    home_team: Team,
+    visitor_team: Team,
+    home_team_score: Int,
+    visitor_team_score: Int,
+    period: Int,
+    postseason: Boolean,
+    season: Int,
+    status: String,
+    date: String
+)
+object GameData {
+  implicit val gameDataR: Reader[GameData] = macroR[GameData]
+}

+ 23 - 0
src/main/scala/json.worksheet.sc

@@ -0,0 +1,23 @@
+import upickle.default._
+import java.time.LocalDate
+import game._
+import balldontlie._
+
+val json0 = ujson.Arr(
+  ujson.Obj("myFieldA" -> ujson.Num(1), "myFieldB" -> ujson.Str("g")),
+  ujson.Obj("myFieldA" -> ujson.Num(2), "myFieldB" -> ujson.Str("k"))
+)
+
+upickle.default.read[List[Map[String, String]]](json0)
+
+val wd = os.pwd
+val json_string = os.read(wd / "suns_2021.json")
+
+val json1 = ujson.read(json_string)
+
+
+case class Response(data: List[GameData], meta: ResponseMetadata)
+implicit val responseR: Reader[Response] = macroR[Response]
+
+val resp: Response = upickle.default.read[Response](json1)
+resp.meta

+ 9 - 0
src/main/scala/main.worksheet.sc

@@ -0,0 +1,9 @@
+import Extract._
+import balldontlie._
+
+val resp = TeamsResponse.getTeams
+resp.meta
+
+val team_ids = List(24)
+
+val games = Games.getGames(2021, team_ids)