-
Notifications
You must be signed in to change notification settings - Fork 2
Expand file tree
/
Copy pathmain.py
More file actions
71 lines (60 loc) · 2.81 KB
/
Copy pathmain.py
File metadata and controls
71 lines (60 loc) · 2.81 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
from fastapi import FastAPI, Header, Form, HTTPException
from starlette.responses import RedirectResponse
from datetime import datetime
from typing import Optional
from models import *
from utils import AMIZONE
app = FastAPI(
title='Amizone API',
description="REST API for Amity\'s student portal: [Amizone](https://amizone.net/) </br> Made with love by: [Akshansh Kumar](https://github.com/akshanshkmr)💟",
version='2.0')
@app.get("/", tags=["Metadata"])
async def root():
return RedirectResponse(url='/docs')
@app.post("/login", tags=["Post"], response_model=LoginResponse)
async def login(username: str = Form(...), password: str = Form(...)):
client = AMIZONE()
cookie = client.login(username, password)
if '.ASPXAUTH' not in cookie.keys():
raise HTTPException(status_code=401, detail="Invalid username or password")
return {'session_cookie':cookie}
@app.get("/profile", tags=["Get"], response_model=ProfileResponse)
async def user_profile(session_cookie: Optional[str] = Header(...)):
client = AMIZONE(session_cookie)
profile = client.my_profile()
return profile
@app.get("/courses", tags=["Get"], response_model=CourseResponse)
async def courses(session_cookie: Optional[str] = Header(...), sem: Optional[str] = None):
client = AMIZONE(session_cookie)
courses = client.my_courses(sem)
return courses
@app.get("/result", tags=["Get"], response_model=ResultResponse)
async def result(session_cookie: Optional[str] = Header(...), sem: Optional[str] = None):
client = AMIZONE(session_cookie)
result = client.results(sem)
return result
@app.get("/faculty", tags=["Get"], response_model=FacultyResponse)
async def faculty(session_cookie: Optional[str] = Header(...)):
client = AMIZONE(session_cookie)
faculty = client.my_faculty()
return faculty
@app.get("/exam_schedule", tags=["Get"], response_model=ExamScheduleResponse)
async def exam_schedule(session_cookie: Optional[str] = Header(...)):
client = AMIZONE(session_cookie)
exam_schedule = client.exam_schedule()
return exam_schedule
@app.get("/timetable", tags=["Get"], response_model=TimeTableResponse)
async def timetable(session_cookie: Optional[str] = Header(...), date: Optional[str] = datetime.now().strftime("%Y-%m-%d")):
client = AMIZONE(session_cookie)
timetable = client.timetable(date)
return timetable
@app.get("/sem_count", tags=["Metadata"], response_model=SemCountResponse)
async def sem_count(session_cookie: Optional[str] = Header(...)):
client = AMIZONE(session_cookie)
sem_count = client.sem_count()
return sem_count
@app.get("/cookie_status", tags=["Metadata"], response_model=cookieStatusResponse)
async def sem_count(session_cookie: Optional[str] = Header(...)):
client = AMIZONE(session_cookie)
cookie_status = client.cookie_status()
return cookie_status