From 2f57e942e80d3b79a2187e23bc95a3892dbed541 Mon Sep 17 00:00:00 2001 From: Soham Kukreti Date: Tue, 22 Jul 2025 18:02:11 +0530 Subject: [PATCH] feat: add endpoints to fetch gradecard and cgpa --- pyjiit/wrapper.py | 73 ++++++++++++++++++++++++++++++++++++++++++++++- 1 file changed, 72 insertions(+), 1 deletion(-) diff --git a/pyjiit/wrapper.py b/pyjiit/wrapper.py index de520f8..b370a22 100644 --- a/pyjiit/wrapper.py +++ b/pyjiit/wrapper.py @@ -366,4 +366,75 @@ def download_marks(self, semester: Semester): if response.status_code == 200: return response.content else: - raise APIError(f"Failed to download marks PDF: {response.status_code} {response.text}") \ No newline at end of file + raise APIError(f"Failed to download marks PDF: {response.status_code} {response.text}") + + @authenticated + def get_semesters_for_grade_card(self): + """ + :returns: A list of Semester objects. + :raises APIError: Raised for generic API error + """ + ENDPOINT = "/studentgradecard/getregistrationList" + payload = { + "instituteid": self.session.instituteid, + } + payload = serialize_payload(payload) + + resp = self.__hit("POST", API+ENDPOINT, json=payload, authenticated=True) + + return [Semester.from_json(i) for i in resp["response"]["registrations"]] + + + @authenticated + def __get_program_and_branch_id(self): + """ + :returns: Dictionary containing Branch ID and Program ID for grade card. + :raises APIError: Raised for generic API error + """ + ENDPOINT = "/studentgradecard/getstudentinfo" + payload = { + "instituteid": self.session.instituteid + } + payload = serialize_payload(payload) + resp = self.__hit("POST", API+ENDPOINT, json=payload, authenticated=True) + program_id = resp["response"]["studentinfo"]["programid"] + branch_id = resp["response"]["studentinfo"]["branchid"] + return {"programid" : program_id, "branchid": branch_id}; + + @authenticated + def get_grade_card(self, semester: Semester): + """ + :params semester: A Semester object + :returns: Student grade card + :raises APIError: Raised for generic API error + """ + program_and_branch_id = self.__get_program_and_branch_id() + program_id = program_and_branch_id["programid"] + branch_id = program_and_branch_id["branchid"] + ENDPOINT = "/studentgradecard/showstudentgradecard" + payload = { + "branchid": branch_id, + "instituteid": self.session.instituteid, + "programid": program_id, + "registrationid": semester.registration_id + } + payload = serialize_payload(payload) + resp = self.__hit("POST", API+ENDPOINT, json=payload, authenticated=True) + return resp["response"] + + @authenticated + def get_sgpa_cgpa(self, stynumber: int = 0): + """ + :params stynumber: An integer containing the number of the semester + :returns: Dictionary containing SGPA and CGPA + :raises APIError: Raised for generic API error + """ + ENDPOINT = "/studentsgpacgpa/getallsemesterdata" + payload = { + "instituteid": self.session.instituteid, + "studentid": self.session.memberid, + "stynumber": stynumber + } + payload = serialize_payload(payload) + resp = self.__hit("POST", API+ENDPOINT, json=payload, authenticated=True) + return resp["response"]