summaryrefslogtreecommitdiff
path: root/api
diff options
context:
space:
mode:
Diffstat (limited to 'api')
-rw-r--r--api/__init__.py0
-rw-r--r--api/main.py13
-rw-r--r--api/routers/__init__.py0
-rw-r--r--api/routers/get.py52
-rw-r--r--api/utils.py18
5 files changed, 83 insertions, 0 deletions
diff --git a/api/__init__.py b/api/__init__.py
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/api/__init__.py
diff --git a/api/main.py b/api/main.py
new file mode 100644
index 0000000..8068243
--- /dev/null
+++ b/api/main.py
@@ -0,0 +1,13 @@
+from fastapi import FastAPI
+from routers import get
+import pandas as pd
+
+app = FastAPI()
+
+#CORS STUFF HERE
+
+app.include_router(get.router)
+
+@app.get("/", tags=["Index"])
+def getIndex():
+ return {"Message": "Hello! add /docs for documentation"}
diff --git a/api/routers/__init__.py b/api/routers/__init__.py
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/api/routers/__init__.py
diff --git a/api/routers/get.py b/api/routers/get.py
new file mode 100644
index 0000000..bbbd26d
--- /dev/null
+++ b/api/routers/get.py
@@ -0,0 +1,52 @@
+from fastapi import FastAPI, APIRouter
+import numpy as np
+import pandas as pd
+import sys
+
+#sys.path.append("/home/rasmus/Proge/STACC/api")
+from .. import utils
+
+router = APIRouter(tags=["Get requests"])
+
+@router.get("/teams")
+def getTeams():
+
+ # Getting the data from csv files and then converting into dict to be send out on get request
+ teamsDf = pd.read_csv(utils.relPathTeams).to_dict()
+
+ teams_dict = {}
+ for el in range(len(teamsDf["name"])):
+ teams_dict.update({el+1 :
+ {"Abbreviation" : teamsDf["abbreviation"][el],
+ "Name" : teamsDf["name"][el],
+ "FullName" : teamsDf["full_name"][el],
+ "City" : teamsDf["city"][el],
+ "Conference" : teamsDf["conference"][el],
+ "Division" : teamsDf["division"][el]} })
+ return teams_dict
+
+
+@router.get("/players/{team_name}")
+def getPlayers(team_name: str):
+
+ teamNames = utils.getTeamNames()
+ team_name = team_name.capitalize() # Capitalizing in case url is given as lowercase
+ if team_name in teamNames.keys():
+
+ playersDf = pd.read_csv(utils.relPathPlayers+teamNames[team_name]+".csv")
+ playersDf = playersDf.replace({np.nan:None}) # For Json Nan must be replaced
+
+ players_dict = {}
+ for el in range(len(playersDf["first_name"])):
+ players_dict.update({el+1 :
+ {"first_name" : playersDf["first_name"][el],
+ "last_name" : playersDf["last_name"][el],
+ "position" : playersDf["position"][el],
+ "height_feet" : playersDf["height_feet"][el],
+ "height_inches" : playersDf["height_inches"][el]} })
+
+
+ return players_dict
+ else:
+ return {"Error 404" : "Team name Not Found"}
+
diff --git a/api/utils.py b/api/utils.py
new file mode 100644
index 0000000..c04bdf1
--- /dev/null
+++ b/api/utils.py
@@ -0,0 +1,18 @@
+import pandas as pd
+
+# Making relative paths. On windows slashes would be backwards
+# It is probably not the best way.
+relPathTeams = "../AllAboutData/Data/NBAteams.csv"
+relPathPlayers = "../AllAboutData/Data/Players/"
+
+def getTeamNames():
+ '''
+ Returns dictionary with fetched teams' names as keys
+ and full_names as values.
+ '''
+
+ teamsDf = pd.read_csv(relPathTeams).to_dict()
+ team_names = {}
+ for el in range(len(teamsDf["name"])):
+ team_names.update({teamsDf["name"][el] : teamsDf["full_name"][el]})
+ return team_names