reddy-api-srm 1.0.11 → 1.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/src/auth/login.d.ts +14 -0
- package/dist/src/auth/login.d.ts.map +1 -0
- package/dist/src/auth/login.js +96 -0
- package/dist/src/auth/login.js.map +1 -0
- package/dist/src/auth/sessionSeed.d.ts +7 -0
- package/dist/src/auth/sessionSeed.d.ts.map +1 -0
- package/dist/src/auth/sessionSeed.js +40 -0
- package/dist/src/auth/sessionSeed.js.map +1 -0
- package/dist/src/auth/terminateSessions.d.ts +9 -24
- package/dist/src/auth/terminateSessions.d.ts.map +1 -0
- package/dist/src/auth/terminateSessions.js +99 -100
- package/dist/src/auth/terminateSessions.js.map +1 -0
- package/dist/src/auth/validatePassword.d.ts +1 -1
- package/dist/src/auth/validatePassword.d.ts.map +1 -1
- package/dist/src/auth/validatePassword.js +138 -87
- package/dist/src/auth/validatePassword.js.map +1 -1
- package/dist/src/auth/validateUser.d.ts +1 -1
- package/dist/src/auth/validateUser.d.ts.map +1 -1
- package/dist/src/auth/validateUser.js +14 -40
- package/dist/src/auth/validateUser.js.map +1 -1
- package/dist/src/fetch/fetchAttendance.d.ts +5 -1
- package/dist/src/fetch/fetchAttendance.d.ts.map +1 -1
- package/dist/src/fetch/fetchAttendance.js +3 -33
- package/dist/src/fetch/fetchAttendance.js.map +1 -1
- package/dist/src/fetch/fetchCalender.d.ts +5 -1
- package/dist/src/fetch/fetchCalender.d.ts.map +1 -1
- package/dist/src/fetch/fetchCalender.js +4 -37
- package/dist/src/fetch/fetchCalender.js.map +1 -1
- package/dist/src/fetch/fetchCourseDetails.d.ts +5 -1
- package/dist/src/fetch/fetchCourseDetails.d.ts.map +1 -1
- package/dist/src/fetch/fetchCourseDetails.js +5 -40
- package/dist/src/fetch/fetchCourseDetails.js.map +1 -1
- package/dist/src/fetch/fetchDayOrder.d.ts +5 -1
- package/dist/src/fetch/fetchDayOrder.d.ts.map +1 -1
- package/dist/src/fetch/fetchDayOrder.js +3 -33
- package/dist/src/fetch/fetchDayOrder.js.map +1 -1
- package/dist/src/fetch/fetchLogout.d.ts +2 -4
- package/dist/src/fetch/fetchLogout.d.ts.map +1 -1
- package/dist/src/fetch/fetchLogout.js +15 -9
- package/dist/src/fetch/fetchLogout.js.map +1 -1
- package/dist/src/fetch/fetchMarks.d.ts +5 -1
- package/dist/src/fetch/fetchMarks.d.ts.map +1 -1
- package/dist/src/fetch/fetchMarks.js +4 -33
- package/dist/src/fetch/fetchMarks.js.map +1 -1
- package/dist/src/fetch/fetchPage.d.ts +6 -0
- package/dist/src/fetch/fetchPage.d.ts.map +1 -0
- package/dist/src/fetch/fetchPage.js +58 -0
- package/dist/src/fetch/fetchPage.js.map +1 -0
- package/dist/src/fetch/fetchTimetable.d.ts +5 -1
- package/dist/src/fetch/fetchTimetable.d.ts.map +1 -1
- package/dist/src/fetch/fetchTimetable.js +5 -40
- package/dist/src/fetch/fetchTimetable.js.map +1 -1
- package/dist/src/fetch/fetchUserInfo.d.ts +5 -1
- package/dist/src/fetch/fetchUserInfo.d.ts.map +1 -1
- package/dist/src/fetch/fetchUserInfo.js +6 -35
- package/dist/src/fetch/fetchUserInfo.js.map +1 -1
- package/dist/src/index.d.ts +39 -5
- package/dist/src/index.d.ts.map +1 -1
- package/dist/src/index.js +86 -33
- package/dist/src/index.js.map +1 -1
- package/dist/src/parser/decodeHtml.d.ts +6 -0
- package/dist/src/parser/decodeHtml.d.ts.map +1 -0
- package/dist/src/parser/decodeHtml.js +18 -0
- package/dist/src/parser/decodeHtml.js.map +1 -0
- package/dist/src/parser/parseAttendance.d.ts +2 -2
- package/dist/src/parser/parseAttendance.d.ts.map +1 -1
- package/dist/src/parser/parseAttendance.js +68 -16
- package/dist/src/parser/parseAttendance.js.map +1 -1
- package/dist/src/parser/parseCalender.d.ts +2 -2
- package/dist/src/parser/parseCalender.d.ts.map +1 -1
- package/dist/src/parser/parseCalender.js +125 -43
- package/dist/src/parser/parseCalender.js.map +1 -1
- package/dist/src/parser/parseCourse.d.ts +2 -2
- package/dist/src/parser/parseCourse.d.ts.map +1 -1
- package/dist/src/parser/parseCourse.js +19 -8
- package/dist/src/parser/parseCourse.js.map +1 -1
- package/dist/src/parser/parseDayOrder.d.ts +2 -2
- package/dist/src/parser/parseDayOrder.d.ts.map +1 -1
- package/dist/src/parser/parseDayOrder.js +31 -12
- package/dist/src/parser/parseDayOrder.js.map +1 -1
- package/dist/src/parser/parseMarks.d.ts +2 -2
- package/dist/src/parser/parseMarks.d.ts.map +1 -1
- package/dist/src/parser/parseMarks.js +23 -11
- package/dist/src/parser/parseMarks.js.map +1 -1
- package/dist/src/parser/parseTimetable.d.ts +2 -2
- package/dist/src/parser/parseTimetable.d.ts.map +1 -1
- package/dist/src/parser/parseTimetable.js +51 -27
- package/dist/src/parser/parseTimetable.js.map +1 -1
- package/dist/src/parser/parseUserInfo.d.ts +2 -2
- package/dist/src/parser/parseUserInfo.d.ts.map +1 -1
- package/dist/src/parser/parseUserInfo.js +57 -25
- package/dist/src/parser/parseUserInfo.js.map +1 -1
- package/dist/src/type/attendance.d.ts +5 -5
- package/dist/src/type/attendance.d.ts.map +1 -1
- package/dist/src/type/auth.d.ts +33 -5
- package/dist/src/type/auth.d.ts.map +1 -1
- package/dist/src/type/calendar.d.ts.map +1 -1
- package/dist/src/type/common.d.ts.map +1 -1
- package/dist/src/type/course.d.ts.map +1 -1
- package/dist/src/type/dayOrder.d.ts.map +1 -1
- package/dist/src/type/index.d.ts +0 -1
- package/dist/src/type/index.d.ts.map +1 -1
- package/dist/src/type/index.js +0 -1
- package/dist/src/type/index.js.map +1 -1
- package/dist/src/type/marks.d.ts.map +1 -1
- package/dist/src/type/timetable.d.ts.map +1 -1
- package/dist/src/type/user.d.ts +1 -0
- package/dist/src/type/user.d.ts.map +1 -1
- package/dist/src/utils/attendanceStatus.d.ts +8 -0
- package/dist/src/utils/attendanceStatus.d.ts.map +1 -0
- package/dist/src/utils/attendanceStatus.js +20 -0
- package/dist/src/utils/attendanceStatus.js.map +1 -0
- package/dist/src/utils/data.d.ts +11 -0
- package/dist/src/utils/data.d.ts.map +1 -0
- package/dist/src/utils/data.js +36 -0
- package/dist/src/utils/data.js.map +1 -0
- package/dist/src/utils/dynamicUrl.d.ts +14 -0
- package/dist/src/utils/dynamicUrl.d.ts.map +1 -0
- package/dist/src/utils/dynamicUrl.js +105 -0
- package/dist/src/utils/dynamicUrl.js.map +1 -0
- package/package.json +2 -2
|
@@ -1,45 +1,10 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
-
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
-
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
-
};
|
|
5
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
3
|
exports.fetchCourseDetails = fetchCourseDetails;
|
|
7
|
-
const
|
|
8
|
-
const
|
|
4
|
+
const dynamicUrl_1 = require("../utils/dynamicUrl");
|
|
5
|
+
const fetchPage_1 = require("./fetchPage");
|
|
9
6
|
async function fetchCourseDetails(cookie) {
|
|
10
|
-
const url = await (0, dynamicUrl_1.courseDynamicUrl)();
|
|
11
|
-
|
|
12
|
-
const request = await (0, axios_1.default)(url, {
|
|
13
|
-
headers: {
|
|
14
|
-
accept: "*/*",
|
|
15
|
-
"accept-language": "en-US,en;q=0.9",
|
|
16
|
-
"content-type": "application/x-www-form-urlencoded; charset=UTF-8",
|
|
17
|
-
"sec-ch-ua": '"Chromium";v="136", "Google Chrome";v="136", "Not.A/Brand";v="99"',
|
|
18
|
-
"sec-ch-ua-mobile": "?1",
|
|
19
|
-
"sec-ch-ua-platform": '"Android"',
|
|
20
|
-
"sec-fetch-dest": "empty",
|
|
21
|
-
"sec-fetch-mode": "cors",
|
|
22
|
-
"sec-fetch-site": "same-origin",
|
|
23
|
-
"x-requested-with": "XMLHttpRequest",
|
|
24
|
-
cookie,
|
|
25
|
-
Referer: "https://academia.srmist.edu.in/",
|
|
26
|
-
"Referrer-Policy": "strict-origin-when-cross-origin",
|
|
27
|
-
},
|
|
28
|
-
method: "GET",
|
|
29
|
-
});
|
|
30
|
-
return request.data;
|
|
31
|
-
}
|
|
32
|
-
catch (error) {
|
|
33
|
-
const statusCode = axios_1.default.isAxiosError(error) ? error.response?.status : undefined;
|
|
34
|
-
if (statusCode === 401 || statusCode === 403 || statusCode === 500) {
|
|
35
|
-
return { error: "Unauthorized", status: 401 };
|
|
36
|
-
}
|
|
37
|
-
return {
|
|
38
|
-
error: error instanceof Error
|
|
39
|
-
? error.message
|
|
40
|
-
: "Failed to fetch course details",
|
|
41
|
-
status: statusCode ?? 500,
|
|
42
|
-
};
|
|
43
|
-
}
|
|
7
|
+
const url = await (0, dynamicUrl_1.courseDynamicUrl)(cookie);
|
|
8
|
+
return (0, fetchPage_1.fetchPage)(url, cookie);
|
|
44
9
|
}
|
|
45
|
-
//# sourceMappingURL=fetchCourseDetails.js.map
|
|
10
|
+
//# sourceMappingURL=fetchCourseDetails.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"fetchCourseDetails.js","sourceRoot":"","sources":["../../../src/fetch/fetchCourseDetails.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"fetchCourseDetails.js","sourceRoot":"","sources":["../../../src/fetch/fetchCourseDetails.ts"],"names":[],"mappings":";;AAGA,gDAGC;AAND,oDAAuD;AACvD,2CAAwC;AAEjC,KAAK,UAAU,kBAAkB,CAAC,MAAc;IACrD,MAAM,GAAG,GAAG,MAAM,IAAA,6BAAgB,EAAC,MAAM,CAAC,CAAC;IAC3C,OAAO,IAAA,qBAAS,EAAC,GAAG,EAAE,MAAM,CAAC,CAAC;AAChC,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"fetchDayOrder.d.ts","sourceRoot":"","sources":["../../../src/fetch/fetchDayOrder.ts"],"names":[],"mappings":"AAEA,wBAAsB,aAAa,CAAC,MAAM,EAAE,MAAM
|
|
1
|
+
{"version":3,"file":"fetchDayOrder.d.ts","sourceRoot":"","sources":["../../../src/fetch/fetchDayOrder.ts"],"names":[],"mappings":"AAEA,wBAAsB,aAAa,CAAC,MAAM,EAAE,MAAM;;;;GAKjD"}
|
|
@@ -1,38 +1,8 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
-
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
-
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
-
};
|
|
5
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
3
|
exports.fetchDayOrder = fetchDayOrder;
|
|
7
|
-
const
|
|
4
|
+
const fetchPage_1 = require("./fetchPage");
|
|
8
5
|
async function fetchDayOrder(cookie) {
|
|
9
|
-
|
|
10
|
-
const request = await (0, axios_1.default)("https://academia.srmist.edu.in/srm_university/academia-academic-services/page/WELCOME", {
|
|
11
|
-
headers: {
|
|
12
|
-
accept: "*/*",
|
|
13
|
-
"accept-language": "en-US,en;q=0.9",
|
|
14
|
-
"content-type": "application/x-www-form-urlencoded; charset=UTF-8",
|
|
15
|
-
"sec-fetch-dest": "empty",
|
|
16
|
-
"sec-fetch-mode": "cors",
|
|
17
|
-
"sec-fetch-site": "same-origin",
|
|
18
|
-
"x-requested-with": "XMLHttpRequest",
|
|
19
|
-
cookie,
|
|
20
|
-
Referer: "https://academia.srmist.edu.in/",
|
|
21
|
-
"Referrer-Policy": "strict-origin-when-cross-origin",
|
|
22
|
-
},
|
|
23
|
-
method: "GET",
|
|
24
|
-
});
|
|
25
|
-
return request.data;
|
|
26
|
-
}
|
|
27
|
-
catch (error) {
|
|
28
|
-
const statusCode = axios_1.default.isAxiosError(error) ? error.response?.status : undefined;
|
|
29
|
-
if (statusCode === 401 || statusCode === 403 || statusCode === 500) {
|
|
30
|
-
return { error: "Unauthorized", status: 401 };
|
|
31
|
-
}
|
|
32
|
-
return {
|
|
33
|
-
error: error instanceof Error ? error.message : "Failed to fetch attendance",
|
|
34
|
-
status: statusCode ?? 500,
|
|
35
|
-
};
|
|
36
|
-
}
|
|
6
|
+
return (0, fetchPage_1.fetchPage)("https://academia.srmist.edu.in/srm_university/academia-academic-services/page/WELCOME", cookie);
|
|
37
7
|
}
|
|
38
|
-
//# sourceMappingURL=fetchDayOrder.js.map
|
|
8
|
+
//# sourceMappingURL=fetchDayOrder.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"fetchDayOrder.js","sourceRoot":"","sources":["../../../src/fetch/fetchDayOrder.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"fetchDayOrder.js","sourceRoot":"","sources":["../../../src/fetch/fetchDayOrder.ts"],"names":[],"mappings":";;AAEA,sCAKC;AAPD,2CAAwC;AAEjC,KAAK,UAAU,aAAa,CAAC,MAAc;IAChD,OAAO,IAAA,qBAAS,EACd,uFAAuF,EACvF,MAAM,CACP,CAAC;AACJ,CAAC"}
|
|
@@ -1,5 +1,3 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
status: number;
|
|
4
|
-
}>;
|
|
1
|
+
import type { LogoutResponse } from "../type/auth";
|
|
2
|
+
export declare function fetchLogout(cookie: string): Promise<LogoutResponse>;
|
|
5
3
|
//# sourceMappingURL=fetchLogout.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"fetchLogout.d.ts","sourceRoot":"","sources":["../../../src/fetch/fetchLogout.ts"],"names":[],"mappings":"AAAA,wBAAsB,WAAW,CAAC,MAAM,EAAE,MAAM
|
|
1
|
+
{"version":3,"file":"fetchLogout.d.ts","sourceRoot":"","sources":["../../../src/fetch/fetchLogout.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AAEnD,wBAAsB,WAAW,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,cAAc,CAAC,CAkBzE"}
|
|
@@ -2,14 +2,20 @@
|
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.fetchLogout = fetchLogout;
|
|
4
4
|
async function fetchLogout(cookie) {
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
5
|
+
try {
|
|
6
|
+
await fetch("https://academia.srmist.edu.in/accounts/p/10002227248/logout?servicename=ZohoCreator&serviceurl=https://academia.srmist.edu.in", {
|
|
7
|
+
method: "GET",
|
|
8
|
+
headers: {
|
|
9
|
+
Accept: "*/*",
|
|
10
|
+
"Content-Type": "application/x-www-form-urlencoded",
|
|
11
|
+
cookie,
|
|
12
|
+
},
|
|
13
|
+
});
|
|
14
|
+
return { message: "Logout successful", status: 200 };
|
|
15
|
+
}
|
|
16
|
+
catch {
|
|
17
|
+
// Logout is best-effort — even if it fails, consider it done
|
|
18
|
+
return { message: "Logout attempted", status: 200 };
|
|
19
|
+
}
|
|
14
20
|
}
|
|
15
21
|
//# sourceMappingURL=fetchLogout.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"fetchLogout.js","sourceRoot":"","sources":["../../../src/fetch/fetchLogout.ts"],"names":[],"mappings":";;
|
|
1
|
+
{"version":3,"file":"fetchLogout.js","sourceRoot":"","sources":["../../../src/fetch/fetchLogout.ts"],"names":[],"mappings":";;AAEA,kCAkBC;AAlBM,KAAK,UAAU,WAAW,CAAC,MAAc;IAC9C,IAAI,CAAC;QACH,MAAM,KAAK,CACT,gIAAgI,EAChI;YACE,MAAM,EAAE,KAAK;YACb,OAAO,EAAE;gBACP,MAAM,EAAE,KAAK;gBACb,cAAc,EAAE,mCAAmC;gBACnD,MAAM;aACP;SACF,CACF,CAAC;QACF,OAAO,EAAE,OAAO,EAAE,mBAAmB,EAAE,MAAM,EAAE,GAAG,EAAE,CAAC;IACvD,CAAC;IAAC,MAAM,CAAC;QACP,6DAA6D;QAC7D,OAAO,EAAE,OAAO,EAAE,kBAAkB,EAAE,MAAM,EAAE,GAAG,EAAE,CAAC;IACtD,CAAC;AACH,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"fetchMarks.d.ts","sourceRoot":"","sources":["../../../src/fetch/fetchMarks.ts"],"names":[],"mappings":"AAEA,wBAAsB,UAAU,CAAC,MAAM,EAAE,MAAM
|
|
1
|
+
{"version":3,"file":"fetchMarks.d.ts","sourceRoot":"","sources":["../../../src/fetch/fetchMarks.ts"],"names":[],"mappings":"AAEA,wBAAsB,UAAU,CAAC,MAAM,EAAE,MAAM;;;;GAM9C"}
|
|
@@ -1,38 +1,9 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
-
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
-
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
-
};
|
|
5
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
3
|
exports.fetchMarks = fetchMarks;
|
|
7
|
-
const
|
|
4
|
+
const fetchPage_1 = require("./fetchPage");
|
|
8
5
|
async function fetchMarks(cookie) {
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
headers: {
|
|
12
|
-
accept: "*/*",
|
|
13
|
-
"accept-language": "en-US,en;q=0.9",
|
|
14
|
-
"content-type": "application/x-www-form-urlencoded; charset=UTF-8",
|
|
15
|
-
"sec-fetch-dest": "empty",
|
|
16
|
-
"sec-fetch-mode": "cors",
|
|
17
|
-
"sec-fetch-site": "same-origin",
|
|
18
|
-
"x-requested-with": "XMLHttpRequest",
|
|
19
|
-
cookie,
|
|
20
|
-
Referer: "https://academia.srmist.edu.in/",
|
|
21
|
-
"Referrer-Policy": "strict-origin-when-cross-origin",
|
|
22
|
-
},
|
|
23
|
-
method: "GET",
|
|
24
|
-
});
|
|
25
|
-
return request.data;
|
|
26
|
-
}
|
|
27
|
-
catch (error) {
|
|
28
|
-
const statusCode = axios_1.default.isAxiosError(error) ? error.response?.status : undefined;
|
|
29
|
-
if (statusCode === 401 || statusCode === 403 || statusCode === 500) {
|
|
30
|
-
return { error: "Unauthorized", status: 401 };
|
|
31
|
-
}
|
|
32
|
-
return {
|
|
33
|
-
error: error instanceof Error ? error.message : "Failed to fetch attendance",
|
|
34
|
-
status: statusCode ?? 500,
|
|
35
|
-
};
|
|
36
|
-
}
|
|
6
|
+
// Marks are embedded in the same My_Attendance page
|
|
7
|
+
return (0, fetchPage_1.fetchPage)("https://academia.srmist.edu.in/srm_university/academia-academic-services/page/My_Attendance", cookie);
|
|
37
8
|
}
|
|
38
|
-
//# sourceMappingURL=fetchMarks.js.map
|
|
9
|
+
//# sourceMappingURL=fetchMarks.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"fetchMarks.js","sourceRoot":"","sources":["../../../src/fetch/fetchMarks.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"fetchMarks.js","sourceRoot":"","sources":["../../../src/fetch/fetchMarks.ts"],"names":[],"mappings":";;AAEA,gCAMC;AARD,2CAAwC;AAEjC,KAAK,UAAU,UAAU,CAAC,MAAc;IAC7C,oDAAoD;IACpD,OAAO,IAAA,qBAAS,EACd,6FAA6F,EAC7F,MAAM,CACP,CAAC;AACJ,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"fetchPage.d.ts","sourceRoot":"","sources":["../../../src/fetch/fetchPage.ts"],"names":[],"mappings":"AAcA,wBAAsB,SAAS,CAC7B,GAAG,EAAE,MAAM,EACX,MAAM,EAAE,MAAM,EACd,YAAY,GAAE,MAAM,GAAG,MAAe,GACrC,OAAO,CAAC;IAAE,IAAI,EAAE,OAAO,CAAC;IAAC,KAAK,CAAC,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,CAAC,CA8C5D"}
|
|
@@ -0,0 +1,58 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
exports.fetchPage = fetchPage;
|
|
7
|
+
const axios_1 = __importDefault(require("axios"));
|
|
8
|
+
const BASE_HEADERS = {
|
|
9
|
+
accept: "*/*",
|
|
10
|
+
"accept-language": "en-US,en;q=0.9",
|
|
11
|
+
"content-type": "application/x-www-form-urlencoded; charset=UTF-8",
|
|
12
|
+
"sec-fetch-dest": "empty",
|
|
13
|
+
"sec-fetch-mode": "cors",
|
|
14
|
+
"sec-fetch-site": "same-origin",
|
|
15
|
+
"x-requested-with": "XMLHttpRequest",
|
|
16
|
+
Referer: "https://academia.srmist.edu.in/",
|
|
17
|
+
"Referrer-Policy": "strict-origin-when-cross-origin",
|
|
18
|
+
};
|
|
19
|
+
async function fetchPage(url, cookie, responseType = "json") {
|
|
20
|
+
try {
|
|
21
|
+
const request = await (0, axios_1.default)(url, {
|
|
22
|
+
headers: { ...BASE_HEADERS, cookie },
|
|
23
|
+
method: "GET",
|
|
24
|
+
responseType,
|
|
25
|
+
validateStatus: (s) => s < 500,
|
|
26
|
+
});
|
|
27
|
+
if (request.status === 401 || request.status === 403) {
|
|
28
|
+
return { data: null, error: "Unauthorized", status: 401 };
|
|
29
|
+
}
|
|
30
|
+
if (request.status === 404) {
|
|
31
|
+
return { data: null, error: "Page not found", status: 404 };
|
|
32
|
+
}
|
|
33
|
+
// Detect SRM soft 404s (returns 200 OK but page says 'Page not found.')
|
|
34
|
+
const responseText = typeof request.data === 'string' ? request.data : JSON.stringify(request.data || {});
|
|
35
|
+
if (responseText.includes('error-message-text') && responseText.includes('Page not found')) {
|
|
36
|
+
return { data: null, error: "Page not found", status: 404 };
|
|
37
|
+
}
|
|
38
|
+
return { data: request.data, status: request.status };
|
|
39
|
+
}
|
|
40
|
+
catch (error) {
|
|
41
|
+
const statusCode = axios_1.default.isAxiosError(error)
|
|
42
|
+
? error.response?.status
|
|
43
|
+
: undefined;
|
|
44
|
+
if (statusCode === 401 ||
|
|
45
|
+
statusCode === 403 ||
|
|
46
|
+
statusCode === 500) {
|
|
47
|
+
return { data: null, error: "Unauthorized", status: 401 };
|
|
48
|
+
}
|
|
49
|
+
return {
|
|
50
|
+
data: null,
|
|
51
|
+
error: error instanceof Error
|
|
52
|
+
? error.message
|
|
53
|
+
: "Failed to fetch page",
|
|
54
|
+
status: statusCode ?? 500,
|
|
55
|
+
};
|
|
56
|
+
}
|
|
57
|
+
}
|
|
58
|
+
//# sourceMappingURL=fetchPage.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"fetchPage.js","sourceRoot":"","sources":["../../../src/fetch/fetchPage.ts"],"names":[],"mappings":";;;;;AAcA,8BAkDC;AAhED,kDAA0B;AAE1B,MAAM,YAAY,GAAG;IACnB,MAAM,EAAE,KAAK;IACb,iBAAiB,EAAE,gBAAgB;IACnC,cAAc,EAAE,kDAAkD;IAClE,gBAAgB,EAAE,OAAO;IACzB,gBAAgB,EAAE,MAAM;IACxB,gBAAgB,EAAE,aAAa;IAC/B,kBAAkB,EAAE,gBAAgB;IACpC,OAAO,EAAE,iCAAiC;IAC1C,iBAAiB,EAAE,iCAAiC;CACrD,CAAC;AAEK,KAAK,UAAU,SAAS,CAC7B,GAAW,EACX,MAAc,EACd,eAAgC,MAAM;IAEtC,IAAI,CAAC;QACH,MAAM,OAAO,GAAG,MAAM,IAAA,eAAK,EAAC,GAAG,EAAE;YAC/B,OAAO,EAAE,EAAE,GAAG,YAAY,EAAE,MAAM,EAAE;YACpC,MAAM,EAAE,KAAK;YACb,YAAY;YACZ,cAAc,EAAE,CAAC,CAAS,EAAE,EAAE,CAAC,CAAC,GAAG,GAAG;SACvC,CAAC,CAAC;QAEH,IAAI,OAAO,CAAC,MAAM,KAAK,GAAG,IAAI,OAAO,CAAC,MAAM,KAAK,GAAG,EAAE,CAAC;YACrD,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,cAAc,EAAE,MAAM,EAAE,GAAG,EAAE,CAAC;QAC5D,CAAC;QAED,IAAI,OAAO,CAAC,MAAM,KAAK,GAAG,EAAE,CAAC;YAC3B,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,gBAAgB,EAAE,MAAM,EAAE,GAAG,EAAE,CAAC;QAC9D,CAAC;QAED,wEAAwE;QACxE,MAAM,YAAY,GAAG,OAAO,OAAO,CAAC,IAAI,KAAK,QAAQ,CAAC,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,IAAI,IAAI,EAAE,CAAC,CAAC;QAC1G,IAAI,YAAY,CAAC,QAAQ,CAAC,oBAAoB,CAAC,IAAI,YAAY,CAAC,QAAQ,CAAC,gBAAgB,CAAC,EAAE,CAAC;YAC3F,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,gBAAgB,EAAE,MAAM,EAAE,GAAG,EAAE,CAAC;QAC9D,CAAC;QAED,OAAO,EAAE,IAAI,EAAE,OAAO,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,CAAC,MAAM,EAAE,CAAC;IACxD,CAAC;IAAC,OAAO,KAAc,EAAE,CAAC;QACxB,MAAM,UAAU,GAAG,eAAK,CAAC,YAAY,CAAC,KAAK,CAAC;YAC1C,CAAC,CAAC,KAAK,CAAC,QAAQ,EAAE,MAAM;YACxB,CAAC,CAAC,SAAS,CAAC;QAEd,IACE,UAAU,KAAK,GAAG;YAClB,UAAU,KAAK,GAAG;YAClB,UAAU,KAAK,GAAG,EAClB,CAAC;YACD,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,cAAc,EAAE,MAAM,EAAE,GAAG,EAAE,CAAC;QAC5D,CAAC;QAED,OAAO;YACL,IAAI,EAAE,IAAI;YACV,KAAK,EACH,KAAK,YAAY,KAAK;gBACpB,CAAC,CAAC,KAAK,CAAC,OAAO;gBACf,CAAC,CAAC,sBAAsB;YAC5B,MAAM,EAAE,UAAU,IAAI,GAAG;SAC1B,CAAC;IACJ,CAAC;AACH,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"fetchTimetable.d.ts","sourceRoot":"","sources":["../../../src/fetch/fetchTimetable.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"fetchTimetable.d.ts","sourceRoot":"","sources":["../../../src/fetch/fetchTimetable.ts"],"names":[],"mappings":"AAGA,wBAAsB,cAAc,CAAC,MAAM,EAAE,MAAM;;;;GAGlD"}
|
|
@@ -1,45 +1,10 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
-
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
-
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
-
};
|
|
5
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
3
|
exports.fetchTimetable = fetchTimetable;
|
|
7
|
-
const dynamicUrl_1 = require("
|
|
8
|
-
const
|
|
4
|
+
const dynamicUrl_1 = require("../utils/dynamicUrl");
|
|
5
|
+
const fetchPage_1 = require("./fetchPage");
|
|
9
6
|
async function fetchTimetable(cookie) {
|
|
10
|
-
const url = await (0, dynamicUrl_1.courseDynamicUrl)();
|
|
11
|
-
|
|
12
|
-
const request = await (0, axios_1.default)(url, {
|
|
13
|
-
headers: {
|
|
14
|
-
accept: "*/*",
|
|
15
|
-
"accept-language": "en-US,en;q=0.9",
|
|
16
|
-
"content-type": "application/x-www-form-urlencoded; charset=UTF-8",
|
|
17
|
-
"sec-ch-ua": '"Chromium";v="136", "Google Chrome";v="136", "Not.A/Brand";v="99"',
|
|
18
|
-
"sec-ch-ua-mobile": "?1",
|
|
19
|
-
"sec-ch-ua-platform": '"Android"',
|
|
20
|
-
"sec-fetch-dest": "empty",
|
|
21
|
-
"sec-fetch-mode": "cors",
|
|
22
|
-
"sec-fetch-site": "same-origin",
|
|
23
|
-
"x-requested-with": "XMLHttpRequest",
|
|
24
|
-
cookie,
|
|
25
|
-
Referer: "https://academia.srmist.edu.in/",
|
|
26
|
-
"Referrer-Policy": "strict-origin-when-cross-origin",
|
|
27
|
-
},
|
|
28
|
-
method: "GET",
|
|
29
|
-
});
|
|
30
|
-
return request.data;
|
|
31
|
-
}
|
|
32
|
-
catch (error) {
|
|
33
|
-
const statusCode = axios_1.default.isAxiosError(error) ? error.response?.status : undefined;
|
|
34
|
-
if (statusCode === 401 || statusCode === 403 || statusCode === 500) {
|
|
35
|
-
return { error: "Unauthorized", status: 401 };
|
|
36
|
-
}
|
|
37
|
-
return {
|
|
38
|
-
error: error instanceof Error
|
|
39
|
-
? error.message
|
|
40
|
-
: "Failed to fetch course details",
|
|
41
|
-
status: statusCode ?? 500,
|
|
42
|
-
};
|
|
43
|
-
}
|
|
7
|
+
const url = await (0, dynamicUrl_1.courseDynamicUrl)(cookie);
|
|
8
|
+
return (0, fetchPage_1.fetchPage)(url, cookie);
|
|
44
9
|
}
|
|
45
|
-
//# sourceMappingURL=fetchTimetable.js.map
|
|
10
|
+
//# sourceMappingURL=fetchTimetable.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"fetchTimetable.js","sourceRoot":"","sources":["../../../src/fetch/fetchTimetable.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"fetchTimetable.js","sourceRoot":"","sources":["../../../src/fetch/fetchTimetable.ts"],"names":[],"mappings":";;AAGA,wCAGC;AAND,oDAAuD;AACvD,2CAAwC;AAEjC,KAAK,UAAU,cAAc,CAAC,MAAc;IACjD,MAAM,GAAG,GAAG,MAAM,IAAA,6BAAgB,EAAC,MAAM,CAAC,CAAC;IAC3C,OAAO,IAAA,qBAAS,EAAC,GAAG,EAAE,MAAM,CAAC,CAAC;AAChC,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"fetchUserInfo.d.ts","sourceRoot":"","sources":["../../../src/fetch/fetchUserInfo.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"fetchUserInfo.d.ts","sourceRoot":"","sources":["../../../src/fetch/fetchUserInfo.ts"],"names":[],"mappings":"AAGA,wBAAsB,aAAa,CAAC,MAAM,EAAE,MAAM;;;;GAIjD"}
|
|
@@ -1,40 +1,11 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
-
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
-
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
-
};
|
|
5
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
3
|
exports.fetchUserInfo = fetchUserInfo;
|
|
7
|
-
const
|
|
8
|
-
const
|
|
4
|
+
const dynamicUrl_1 = require("../utils/dynamicUrl");
|
|
5
|
+
const fetchPage_1 = require("./fetchPage");
|
|
9
6
|
async function fetchUserInfo(cookie) {
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
headers: {
|
|
14
|
-
accept: "*/*",
|
|
15
|
-
"accept-language": "en-US,en;q=0.9",
|
|
16
|
-
"content-type": "application/x-www-form-urlencoded; charset=UTF-8",
|
|
17
|
-
"sec-fetch-dest": "empty",
|
|
18
|
-
"sec-fetch-mode": "cors",
|
|
19
|
-
"sec-fetch-site": "same-origin",
|
|
20
|
-
"x-requested-with": "XMLHttpRequest",
|
|
21
|
-
cookie,
|
|
22
|
-
Referer: "https://academia.srmist.edu.in/",
|
|
23
|
-
"Referrer-Policy": "strict-origin-when-cross-origin",
|
|
24
|
-
},
|
|
25
|
-
method: "GET",
|
|
26
|
-
});
|
|
27
|
-
return request.data;
|
|
28
|
-
}
|
|
29
|
-
catch (error) {
|
|
30
|
-
const statusCode = axios_1.default.isAxiosError(error) ? error.response?.status : undefined;
|
|
31
|
-
if (statusCode === 401 || statusCode === 403 || statusCode === 500) {
|
|
32
|
-
return { error: "Unauthorized", status: 401 };
|
|
33
|
-
}
|
|
34
|
-
return {
|
|
35
|
-
error: error instanceof Error ? error.message : "Failed to fetch user info",
|
|
36
|
-
status: statusCode ?? 500,
|
|
37
|
-
};
|
|
38
|
-
}
|
|
7
|
+
// UserInfo is parsed from the timetable/course page (has registration details)
|
|
8
|
+
const url = await (0, dynamicUrl_1.courseDynamicUrl)(cookie);
|
|
9
|
+
return (0, fetchPage_1.fetchPage)(url, cookie);
|
|
39
10
|
}
|
|
40
|
-
//# sourceMappingURL=fetchUserInfo.js.map
|
|
11
|
+
//# sourceMappingURL=fetchUserInfo.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"fetchUserInfo.js","sourceRoot":"","sources":["../../../src/fetch/fetchUserInfo.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"fetchUserInfo.js","sourceRoot":"","sources":["../../../src/fetch/fetchUserInfo.ts"],"names":[],"mappings":";;AAGA,sCAIC;AAPD,oDAAuD;AACvD,2CAAwC;AAEjC,KAAK,UAAU,aAAa,CAAC,MAAc;IAChD,+EAA+E;IAC/E,MAAM,GAAG,GAAG,MAAM,IAAA,6BAAgB,EAAC,MAAM,CAAC,CAAC;IAC3C,OAAO,IAAA,qBAAS,EAAC,GAAG,EAAE,MAAM,CAAC,CAAC;AAChC,CAAC"}
|
package/dist/src/index.d.ts
CHANGED
|
@@ -1,16 +1,50 @@
|
|
|
1
|
-
import { PasswordInput, UserResponse, AuthResult, UserValidationResult, LogoutResponse,
|
|
2
|
-
|
|
1
|
+
import { PasswordInput, UserResponse, AuthResult, UserValidationResult, LogoutResponse, TerminateSessionsInput, TerminateSessionsResult, LoginResult, SessionSeed } from "./type/auth";
|
|
2
|
+
import { TimetableResponse, DaySchedule, CourseSlot, SlotInfo } from "./type/timetable";
|
|
3
|
+
import { AttendanceResponse, AttendanceDetail } from "./type/attendance";
|
|
4
|
+
import { MarksResponse, MarkDetail, Mark } from "./type/marks";
|
|
5
|
+
import { CalendarResponse, Month, Day } from "./type/calendar";
|
|
6
|
+
import { CourseResponse, CourseDetail } from "./type/course";
|
|
7
|
+
import { UserInfoResponse, UserInfo } from "./type/user";
|
|
8
|
+
import { DayOrderResponse } from "./type/dayOrder";
|
|
9
|
+
export type { PasswordInput, UserResponse, AuthResult, UserValidationResult, LogoutResponse, TerminateSessionsInput, TerminateSessionsResult, LoginResult, SessionSeed, TimetableResponse, AttendanceResponse, MarksResponse, CalendarResponse, CourseResponse, UserInfoResponse, DayOrderResponse, MarkDetail, Mark, Month, Day, CourseDetail, AttendanceDetail, UserInfo, DaySchedule, CourseSlot, SlotInfo, };
|
|
10
|
+
import { resetUrlCache } from "./utils/dynamicUrl";
|
|
11
|
+
/**
|
|
12
|
+
* One-call login: verifyUser → verifyPassword → auto-terminate if needed → re-login.
|
|
13
|
+
* Returns cookies or error.
|
|
14
|
+
*/
|
|
15
|
+
export declare function login(email: string, password: string, maxRetries?: number): Promise<LoginResult>;
|
|
16
|
+
/** Verify a user exists by their email/username */
|
|
3
17
|
export declare function verifyUser(username: string): Promise<UserValidationResult>;
|
|
18
|
+
/** Verify password after verifyUser */
|
|
4
19
|
export declare function verifyPassword({ identifier, digest, password, }: PasswordInput): Promise<AuthResult>;
|
|
20
|
+
/** Logout user */
|
|
5
21
|
export declare function logoutUser(cookie: string): Promise<LogoutResponse>;
|
|
6
|
-
|
|
7
|
-
export interface TerminateSessionsResult { success: boolean; status?: number; strategy?: string; data?: unknown; error?: string; errorReason?: unknown; }
|
|
22
|
+
/** Terminate concurrent sessions (2-device limit bypass) */
|
|
8
23
|
export declare function terminateSessions(params: TerminateSessionsInput): Promise<TerminateSessionsResult>;
|
|
24
|
+
/** Get timetable data */
|
|
9
25
|
export declare function getTimetable(cookie: string): Promise<TimetableResponse>;
|
|
26
|
+
/** Get attendance data */
|
|
10
27
|
export declare function getAttendance(cookie: string): Promise<AttendanceResponse>;
|
|
28
|
+
/** Get marks data */
|
|
11
29
|
export declare function getMarks(cookie: string): Promise<MarksResponse>;
|
|
30
|
+
/** Get user information */
|
|
12
31
|
export declare function getUserInfo(cookie: string): Promise<UserInfoResponse>;
|
|
32
|
+
/** Get academic calendar */
|
|
13
33
|
export declare function getCalendar(cookie: string): Promise<CalendarResponse>;
|
|
34
|
+
/** Get current day order */
|
|
14
35
|
export declare function getDayOrder(cookie: string): Promise<DayOrderResponse>;
|
|
36
|
+
/** Get course details */
|
|
15
37
|
export declare function getCourse(cookie: string): Promise<CourseResponse>;
|
|
16
|
-
|
|
38
|
+
/** Fetch all data in parallel (attendance, marks, timetable, calendar, userInfo, dayOrder, course) */
|
|
39
|
+
export declare function getAllData(cookie: string): Promise<{
|
|
40
|
+
attendance: AttendanceResponse;
|
|
41
|
+
marks: MarksResponse;
|
|
42
|
+
timetable: TimetableResponse;
|
|
43
|
+
calendar: CalendarResponse;
|
|
44
|
+
userInfo: UserInfoResponse;
|
|
45
|
+
dayOrder: DayOrderResponse;
|
|
46
|
+
course: CourseResponse;
|
|
47
|
+
}>;
|
|
48
|
+
/** Reset cached URLs (needed when semester changes) */
|
|
49
|
+
export { resetUrlCache };
|
|
50
|
+
//# sourceMappingURL=index.d.ts.map
|
package/dist/src/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"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"}
|