mirror of
https://github.com/classchartsapi/classcharts-api-js.git
synced 2026-05-14 19:59:37 +00:00
feat: migrate to parsing cookies properly
This commit is contained in:
parent
70bf79e019
commit
a7f394afcb
3 changed files with 23 additions and 23 deletions
|
|
@ -3,6 +3,7 @@ import type { GetPupilsResponse } from "./types";
|
|||
|
||||
import { ClasschartsClient } from "./baseClient";
|
||||
import { API_BASE_PARENT, BASE_URL } from "./consts";
|
||||
import { parseCookies } from "./utils";
|
||||
/**
|
||||
* The base client
|
||||
*/
|
||||
|
|
@ -51,18 +52,11 @@ export class ClasschartsParentClient extends ClasschartsClient {
|
|||
if (request.status != 302 || !request.headers["set-cookie"])
|
||||
throw new Error("Unauthenticated: Classcharts returned an error");
|
||||
|
||||
const cookies = request.headers["set-cookie"];
|
||||
for (let i = 0; i < cookies.length; i++) {
|
||||
cookies[i] = cookies[i].substring(0, cookies[i].indexOf(";"));
|
||||
}
|
||||
|
||||
this.authCookies = cookies;
|
||||
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
||||
let sessionID: any = decodeURI(cookies[1])
|
||||
.replace(/%3A/g, ":")
|
||||
.replace(/%2C/g, ",");
|
||||
sessionID = JSON.parse(
|
||||
sessionID.substring(sessionID.indexOf("{"), sessionID.length)
|
||||
const cookies = String(request.headers["set-cookie"]);
|
||||
this.authCookies = cookies.split(";");
|
||||
const sessionCookie = parseCookies(cookies);
|
||||
const sessionID = JSON.parse(
|
||||
String(sessionCookie["student_session_credentials"])
|
||||
);
|
||||
this.sessionId = sessionID.session_id;
|
||||
this.pupils = await this.getPupils();
|
||||
|
|
|
|||
|
|
@ -1,6 +1,7 @@
|
|||
import type { AxiosRequestConfig } from "axios";
|
||||
import { API_BASE_STUDENT, BASE_URL } from "./consts";
|
||||
import { ClasschartsClient } from "./baseClient";
|
||||
import { parseCookies } from "./utils";
|
||||
/**
|
||||
* The base client
|
||||
*/
|
||||
|
|
@ -47,17 +48,11 @@ export class ClasschartsStudentClient extends ClasschartsClient {
|
|||
});
|
||||
if (request.status != 302 || !request.headers["set-cookie"])
|
||||
throw new Error("Unauthenticated: Classcharts returned an error");
|
||||
const cookies = request.headers["set-cookie"];
|
||||
for (let i = 0; i < cookies.length; i++) {
|
||||
cookies[i] = cookies[i].substring(0, cookies[i].indexOf(";"));
|
||||
}
|
||||
this.authCookies = cookies;
|
||||
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
||||
let sessionID: any = decodeURI(cookies[1])
|
||||
.replace(/%3A/g, ":")
|
||||
.replace(/%2C/g, ",");
|
||||
sessionID = JSON.parse(
|
||||
sessionID.substring(sessionID.indexOf("{"), sessionID.length)
|
||||
const cookies = String(request.headers["set-cookie"]);
|
||||
this.authCookies = cookies.split(";");
|
||||
const sessionCookie = parseCookies(cookies);
|
||||
const sessionID = JSON.parse(
|
||||
String(sessionCookie["student_session_credentials"])
|
||||
);
|
||||
this.sessionId = sessionID.session_id;
|
||||
const user = await this.getStudentInfo();
|
||||
|
|
|
|||
11
src/utils.ts
Normal file
11
src/utils.ts
Normal file
|
|
@ -0,0 +1,11 @@
|
|||
export function parseCookies(input: string) {
|
||||
const output: Record<string, unknown> = {};
|
||||
const cookies = input.split(",");
|
||||
for (const cookie of cookies) {
|
||||
const cookieSplit = cookie.split(";")[0].split("=");
|
||||
output[decodeURIComponent(cookieSplit[0])] = decodeURIComponent(
|
||||
cookieSplit[1]
|
||||
);
|
||||
}
|
||||
return output;
|
||||
}
|
||||
Loading…
Add table
Add a link
Reference in a new issue