@studentsphere/linkgor 0.0.3-alpha → 0.0.4-alpha
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/index.js +32 -15
- package/dist/index.mjs +32 -15
- package/package.json +2 -2
package/dist/index.js
CHANGED
|
@@ -221,7 +221,6 @@ async function getProfile(instanceId, token) {
|
|
|
221
221
|
// src/services/planning.ts
|
|
222
222
|
async function loginWithCredentials(instanceId, username, password) {
|
|
223
223
|
const jar = /* @__PURE__ */ new Map();
|
|
224
|
-
const loginServer = LOGIN_SERVER_ENDPOINT;
|
|
225
224
|
const scheduleServer = getPlanningServer(instanceId);
|
|
226
225
|
const now = /* @__PURE__ */ new Date();
|
|
227
226
|
const from = new Date(now.getTime() - 7 * 24 * 60 * 60 * 1e3);
|
|
@@ -233,14 +232,33 @@ async function loginWithCredentials(instanceId, username, password) {
|
|
|
233
232
|
dateDebut: from.toISOString(),
|
|
234
233
|
dateFin: to.toISOString()
|
|
235
234
|
});
|
|
236
|
-
|
|
237
|
-
|
|
238
|
-
|
|
239
|
-
|
|
235
|
+
let currentUrl = `${scheduleServer}?${params.toString()}`;
|
|
236
|
+
let response = await fetch(currentUrl, {
|
|
237
|
+
headers: { "User-Agent": "linkgor" },
|
|
238
|
+
redirect: "manual"
|
|
240
239
|
});
|
|
241
|
-
const initialCookies =
|
|
240
|
+
const initialCookies = response.headers.getSetCookie ? response.headers.getSetCookie() : response.headers.get("Set-Cookie") ? [response.headers.get("Set-Cookie")] : [];
|
|
242
241
|
updateCookies(jar, currentUrl, initialCookies);
|
|
243
|
-
|
|
242
|
+
if (response.status >= 300 && response.status < 400) {
|
|
243
|
+
const location = response.headers.get("location");
|
|
244
|
+
if (location) {
|
|
245
|
+
currentUrl = new URL(location, currentUrl).toString();
|
|
246
|
+
const cookieHeader = serializeCookies(jar, currentUrl);
|
|
247
|
+
const redirectHeaders = {
|
|
248
|
+
"User-Agent": "linkgor"
|
|
249
|
+
};
|
|
250
|
+
if (cookieHeader) {
|
|
251
|
+
redirectHeaders["Cookie"] = cookieHeader;
|
|
252
|
+
}
|
|
253
|
+
response = await fetch(currentUrl, {
|
|
254
|
+
headers: redirectHeaders,
|
|
255
|
+
redirect: "manual"
|
|
256
|
+
});
|
|
257
|
+
const redirectCookies = response.headers.getSetCookie ? response.headers.getSetCookie() : response.headers.get("Set-Cookie") ? [response.headers.get("Set-Cookie")] : [];
|
|
258
|
+
updateCookies(jar, currentUrl, redirectCookies);
|
|
259
|
+
}
|
|
260
|
+
}
|
|
261
|
+
const html = await response.text();
|
|
244
262
|
const extractHiddenFields = (htmlText) => {
|
|
245
263
|
const fields = {};
|
|
246
264
|
const regex = /<input[^>]+type="hidden"[^>]+name="([^"]+)"[^>]+value="([^"]*)"/gi;
|
|
@@ -265,7 +283,7 @@ async function loginWithCredentials(instanceId, username, password) {
|
|
|
265
283
|
if (initialCookieHeader) {
|
|
266
284
|
postHeaders["Cookie"] = initialCookieHeader;
|
|
267
285
|
}
|
|
268
|
-
|
|
286
|
+
response = await fetch(currentUrl, {
|
|
269
287
|
method: "POST",
|
|
270
288
|
headers: postHeaders,
|
|
271
289
|
body: form.toString(),
|
|
@@ -274,14 +292,13 @@ async function loginWithCredentials(instanceId, username, password) {
|
|
|
274
292
|
let redirectCount = 0;
|
|
275
293
|
const maxRedirects = 15;
|
|
276
294
|
const seenTickets = /* @__PURE__ */ new Set();
|
|
277
|
-
let followUrl = currentUrl;
|
|
278
295
|
while (true) {
|
|
279
296
|
const redirectCookies = response.headers.getSetCookie ? response.headers.getSetCookie() : response.headers.get("Set-Cookie") ? [response.headers.get("Set-Cookie")] : [];
|
|
280
|
-
updateCookies(jar,
|
|
297
|
+
updateCookies(jar, currentUrl, redirectCookies);
|
|
281
298
|
if (response.status >= 300 && response.status < 400) {
|
|
282
299
|
let location = response.headers.get("location");
|
|
283
300
|
if (!location) break;
|
|
284
|
-
const urlObj = new URL(location,
|
|
301
|
+
const urlObj = new URL(location, currentUrl);
|
|
285
302
|
const ticket = urlObj.searchParams.get("ticket");
|
|
286
303
|
if (ticket) {
|
|
287
304
|
if (seenTickets.has(ticket)) {
|
|
@@ -291,15 +308,15 @@ async function loginWithCredentials(instanceId, username, password) {
|
|
|
291
308
|
seenTickets.add(ticket);
|
|
292
309
|
}
|
|
293
310
|
}
|
|
294
|
-
|
|
295
|
-
const cookieHeader = serializeCookies(jar,
|
|
311
|
+
currentUrl = new URL(location, currentUrl).toString();
|
|
312
|
+
const cookieHeader = serializeCookies(jar, currentUrl);
|
|
296
313
|
const redirectHeaders = {
|
|
297
314
|
"User-Agent": "linkgor"
|
|
298
315
|
};
|
|
299
316
|
if (cookieHeader) {
|
|
300
317
|
redirectHeaders["Cookie"] = cookieHeader;
|
|
301
318
|
}
|
|
302
|
-
response = await fetch(
|
|
319
|
+
response = await fetch(currentUrl, {
|
|
303
320
|
headers: redirectHeaders,
|
|
304
321
|
redirect: "manual"
|
|
305
322
|
});
|
|
@@ -311,7 +328,7 @@ async function loginWithCredentials(instanceId, username, password) {
|
|
|
311
328
|
}
|
|
312
329
|
if (response.status >= 400) {
|
|
313
330
|
throw new Error(
|
|
314
|
-
`Authentication failed with status ${response.status} at ${
|
|
331
|
+
`Authentication failed with status ${response.status} at ${currentUrl}`
|
|
315
332
|
);
|
|
316
333
|
}
|
|
317
334
|
const jarArray = Array.from(jar.entries()).map(([domain, map]) => {
|
package/dist/index.mjs
CHANGED
|
@@ -189,7 +189,6 @@ async function getProfile(instanceId, token) {
|
|
|
189
189
|
// src/services/planning.ts
|
|
190
190
|
async function loginWithCredentials(instanceId, username, password) {
|
|
191
191
|
const jar = /* @__PURE__ */ new Map();
|
|
192
|
-
const loginServer = LOGIN_SERVER_ENDPOINT;
|
|
193
192
|
const scheduleServer = getPlanningServer(instanceId);
|
|
194
193
|
const now = /* @__PURE__ */ new Date();
|
|
195
194
|
const from = new Date(now.getTime() - 7 * 24 * 60 * 60 * 1e3);
|
|
@@ -201,14 +200,33 @@ async function loginWithCredentials(instanceId, username, password) {
|
|
|
201
200
|
dateDebut: from.toISOString(),
|
|
202
201
|
dateFin: to.toISOString()
|
|
203
202
|
});
|
|
204
|
-
|
|
205
|
-
|
|
206
|
-
|
|
207
|
-
|
|
203
|
+
let currentUrl = `${scheduleServer}?${params.toString()}`;
|
|
204
|
+
let response = await fetch(currentUrl, {
|
|
205
|
+
headers: { "User-Agent": "linkgor" },
|
|
206
|
+
redirect: "manual"
|
|
208
207
|
});
|
|
209
|
-
const initialCookies =
|
|
208
|
+
const initialCookies = response.headers.getSetCookie ? response.headers.getSetCookie() : response.headers.get("Set-Cookie") ? [response.headers.get("Set-Cookie")] : [];
|
|
210
209
|
updateCookies(jar, currentUrl, initialCookies);
|
|
211
|
-
|
|
210
|
+
if (response.status >= 300 && response.status < 400) {
|
|
211
|
+
const location = response.headers.get("location");
|
|
212
|
+
if (location) {
|
|
213
|
+
currentUrl = new URL(location, currentUrl).toString();
|
|
214
|
+
const cookieHeader = serializeCookies(jar, currentUrl);
|
|
215
|
+
const redirectHeaders = {
|
|
216
|
+
"User-Agent": "linkgor"
|
|
217
|
+
};
|
|
218
|
+
if (cookieHeader) {
|
|
219
|
+
redirectHeaders["Cookie"] = cookieHeader;
|
|
220
|
+
}
|
|
221
|
+
response = await fetch(currentUrl, {
|
|
222
|
+
headers: redirectHeaders,
|
|
223
|
+
redirect: "manual"
|
|
224
|
+
});
|
|
225
|
+
const redirectCookies = response.headers.getSetCookie ? response.headers.getSetCookie() : response.headers.get("Set-Cookie") ? [response.headers.get("Set-Cookie")] : [];
|
|
226
|
+
updateCookies(jar, currentUrl, redirectCookies);
|
|
227
|
+
}
|
|
228
|
+
}
|
|
229
|
+
const html = await response.text();
|
|
212
230
|
const extractHiddenFields = (htmlText) => {
|
|
213
231
|
const fields = {};
|
|
214
232
|
const regex = /<input[^>]+type="hidden"[^>]+name="([^"]+)"[^>]+value="([^"]*)"/gi;
|
|
@@ -233,7 +251,7 @@ async function loginWithCredentials(instanceId, username, password) {
|
|
|
233
251
|
if (initialCookieHeader) {
|
|
234
252
|
postHeaders["Cookie"] = initialCookieHeader;
|
|
235
253
|
}
|
|
236
|
-
|
|
254
|
+
response = await fetch(currentUrl, {
|
|
237
255
|
method: "POST",
|
|
238
256
|
headers: postHeaders,
|
|
239
257
|
body: form.toString(),
|
|
@@ -242,14 +260,13 @@ async function loginWithCredentials(instanceId, username, password) {
|
|
|
242
260
|
let redirectCount = 0;
|
|
243
261
|
const maxRedirects = 15;
|
|
244
262
|
const seenTickets = /* @__PURE__ */ new Set();
|
|
245
|
-
let followUrl = currentUrl;
|
|
246
263
|
while (true) {
|
|
247
264
|
const redirectCookies = response.headers.getSetCookie ? response.headers.getSetCookie() : response.headers.get("Set-Cookie") ? [response.headers.get("Set-Cookie")] : [];
|
|
248
|
-
updateCookies(jar,
|
|
265
|
+
updateCookies(jar, currentUrl, redirectCookies);
|
|
249
266
|
if (response.status >= 300 && response.status < 400) {
|
|
250
267
|
let location = response.headers.get("location");
|
|
251
268
|
if (!location) break;
|
|
252
|
-
const urlObj = new URL(location,
|
|
269
|
+
const urlObj = new URL(location, currentUrl);
|
|
253
270
|
const ticket = urlObj.searchParams.get("ticket");
|
|
254
271
|
if (ticket) {
|
|
255
272
|
if (seenTickets.has(ticket)) {
|
|
@@ -259,15 +276,15 @@ async function loginWithCredentials(instanceId, username, password) {
|
|
|
259
276
|
seenTickets.add(ticket);
|
|
260
277
|
}
|
|
261
278
|
}
|
|
262
|
-
|
|
263
|
-
const cookieHeader = serializeCookies(jar,
|
|
279
|
+
currentUrl = new URL(location, currentUrl).toString();
|
|
280
|
+
const cookieHeader = serializeCookies(jar, currentUrl);
|
|
264
281
|
const redirectHeaders = {
|
|
265
282
|
"User-Agent": "linkgor"
|
|
266
283
|
};
|
|
267
284
|
if (cookieHeader) {
|
|
268
285
|
redirectHeaders["Cookie"] = cookieHeader;
|
|
269
286
|
}
|
|
270
|
-
response = await fetch(
|
|
287
|
+
response = await fetch(currentUrl, {
|
|
271
288
|
headers: redirectHeaders,
|
|
272
289
|
redirect: "manual"
|
|
273
290
|
});
|
|
@@ -279,7 +296,7 @@ async function loginWithCredentials(instanceId, username, password) {
|
|
|
279
296
|
}
|
|
280
297
|
if (response.status >= 400) {
|
|
281
298
|
throw new Error(
|
|
282
|
-
`Authentication failed with status ${response.status} at ${
|
|
299
|
+
`Authentication failed with status ${response.status} at ${currentUrl}`
|
|
283
300
|
);
|
|
284
301
|
}
|
|
285
302
|
const jarArray = Array.from(jar.entries()).map(([domain, map]) => {
|
package/package.json
CHANGED
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@studentsphere/linkgor",
|
|
3
|
-
"version": "0.0.
|
|
3
|
+
"version": "0.0.4-alpha",
|
|
4
4
|
"description": "A Wrapper for Wigor",
|
|
5
5
|
"author": "Kaelian Baudelet <contact@kaelian.dev> (https://github.com/kaelianbaudelet)",
|
|
6
|
-
"license": "GPL-
|
|
6
|
+
"license": "GPL-4.0",
|
|
7
7
|
"repository": {
|
|
8
8
|
"type": "git",
|
|
9
9
|
"url": "git+https://github.com/studentsphere-app/linkgor.git"
|