@studentsphere/linkgor 0.0.2-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 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
- const serviceUrl = `${scheduleServer}?${params.toString()}`;
237
- const currentUrl = `${loginServer}?service=${encodeURIComponent(serviceUrl)}`;
238
- const getRes = await fetch(currentUrl, {
239
- headers: { "User-Agent": "wigor-papillon" }
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 = getRes.headers.getSetCookie ? getRes.headers.getSetCookie() : getRes.headers.get("Set-Cookie") ? [getRes.headers.get("Set-Cookie")] : [];
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
- const html = await getRes.text();
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;
@@ -260,12 +278,12 @@ async function loginWithCredentials(instanceId, username, password) {
260
278
  const initialCookieHeader = serializeCookies(jar, currentUrl);
261
279
  const postHeaders = {
262
280
  "Content-Type": "application/x-www-form-urlencoded",
263
- "User-Agent": "wigor-papillon"
281
+ "User-Agent": "linkgor"
264
282
  };
265
283
  if (initialCookieHeader) {
266
284
  postHeaders["Cookie"] = initialCookieHeader;
267
285
  }
268
- let response = await fetch(currentUrl, {
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, followUrl, redirectCookies);
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, followUrl);
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
- followUrl = new URL(location, followUrl).toString();
295
- const cookieHeader = serializeCookies(jar, followUrl);
311
+ currentUrl = new URL(location, currentUrl).toString();
312
+ const cookieHeader = serializeCookies(jar, currentUrl);
296
313
  const redirectHeaders = {
297
- "User-Agent": "wigor-papillon"
314
+ "User-Agent": "linkgor"
298
315
  };
299
316
  if (cookieHeader) {
300
317
  redirectHeaders["Cookie"] = cookieHeader;
301
318
  }
302
- response = await fetch(followUrl, {
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 ${followUrl}`
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
- const serviceUrl = `${scheduleServer}?${params.toString()}`;
205
- const currentUrl = `${loginServer}?service=${encodeURIComponent(serviceUrl)}`;
206
- const getRes = await fetch(currentUrl, {
207
- headers: { "User-Agent": "wigor-papillon" }
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 = getRes.headers.getSetCookie ? getRes.headers.getSetCookie() : getRes.headers.get("Set-Cookie") ? [getRes.headers.get("Set-Cookie")] : [];
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
- const html = await getRes.text();
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;
@@ -228,12 +246,12 @@ async function loginWithCredentials(instanceId, username, password) {
228
246
  const initialCookieHeader = serializeCookies(jar, currentUrl);
229
247
  const postHeaders = {
230
248
  "Content-Type": "application/x-www-form-urlencoded",
231
- "User-Agent": "wigor-papillon"
249
+ "User-Agent": "linkgor"
232
250
  };
233
251
  if (initialCookieHeader) {
234
252
  postHeaders["Cookie"] = initialCookieHeader;
235
253
  }
236
- let response = await fetch(currentUrl, {
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, followUrl, redirectCookies);
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, followUrl);
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
- followUrl = new URL(location, followUrl).toString();
263
- const cookieHeader = serializeCookies(jar, followUrl);
279
+ currentUrl = new URL(location, currentUrl).toString();
280
+ const cookieHeader = serializeCookies(jar, currentUrl);
264
281
  const redirectHeaders = {
265
- "User-Agent": "wigor-papillon"
282
+ "User-Agent": "linkgor"
266
283
  };
267
284
  if (cookieHeader) {
268
285
  redirectHeaders["Cookie"] = cookieHeader;
269
286
  }
270
- response = await fetch(followUrl, {
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 ${followUrl}`
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.2-alpha",
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-3.0",
6
+ "license": "GPL-4.0",
7
7
  "repository": {
8
8
  "type": "git",
9
9
  "url": "git+https://github.com/studentsphere-app/linkgor.git"