diff --git a/all_groups.json b/all_groups.json deleted file mode 100644 index ac8512d..0000000 --- a/all_groups.json +++ /dev/null @@ -1,600 +0,0 @@ -{ - "_0": "This is a file containing all groups slugs from https://cri.epita.fr/api/v2/groups/", - "_1": "It was generated using CriApi.get_all_groups()", - "groups": [ - "administratives-site-directors", - "administratives", - "asso-prologin", - "asso-responsable", - "auditors", - "bocal", - "cri-olds", - "cri-roots", - "cri-service-accounts", - "cri-students", - "cri", - "cyber-cyb1-prs", - "cyber-cyb1-s1-prs", - "cyber-cyb1-s1", - "cyber-cyb1-s2-prs", - "cyber-cyb1-s2", - "cyber-cyb1", - "cyber-cyb2-prs", - "cyber-cyb2-s3-prs", - "cyber-cyb2-s3", - "cyber-cyb2-s4-prs", - "cyber-cyb2-s4", - "cyber-cyb2", - "cyber-cyb3-prs", - "cyber-cyb3-s5-prs", - "cyber-cyb3-s5", - "cyber-cyb3-s6-prs", - "cyber-cyb3-s6", - "cyber-cyb3", - "cyber-scolarite", - "cyber", - "department-cip", - "department-cri-manager", - "department-dg", - "department-forge-employees", - "department-forge-managers", - "exp-m1-prs", - "exp-m1-s5-prs-representatives", - "exp-m1-s5-prs", - "exp-m1-s5", - "exp-m1-s6-prs-representatives", - "exp-m1-s6-prs", - "exp-m1-s6", - "exp-m1", - "exp-m2-prs", - "exp-m2-s7-prs-representatives", - "exp-m2-s7-prs", - "exp-m2-s7", - "exp-m2-s8-prs-representatives", - "exp-m2-s8-prs", - "exp-m2-s8", - "exp-m2", - "exp-m3-prs", - "exp-m3-s10-prs-representatives", - "exp-m3-s10-prs", - "exp-m3-s10", - "exp-m3-s9-prs-representatives", - "exp-m3-s9-prs", - "exp-m3-s9", - "exp-m3", - "exp", - "forge-ing1", - "forge-interns", - "forge-prod-devs", - "forge-prod", - "forge-roots", - "forge-staff", - "forge-students", - "forge", - "guests-cats", - "guests", - "ing-app-i1-s5-prs-representatives", - "ing-app-i1-s5-prs", - "ing-app-i1-s6-prs-representatives", - "ing-app-i1-s6-prs", - "ing-app-i2-s7-prs-representatives", - "ing-app-i2-s7-prs", - "ing-app-i2-s8-prs-representatives", - "ing-app-i2-s8-prs", - "ing-app-i3-s10-prs-representatives", - "ing-app-i3-s10-prs", - "ing-app-i3-s9-prs-representatives", - "ing-app-i3-s9-prs", - "ing-assistants-acu-respos-42sh", - "ing-assistants-acu-respos-harmonisation", - "ing-assistants-acu-respos-httpd", - "ing-assistants-acu-respos-malloc", - "ing-assistants-acu-respos-minimake", - "ing-assistants-acu-respos-myfind", - "ing-assistants-acu-respos-piscine", - "ing-assistants-acu-respos-sql", - "ing-assistants-acu", - "ing-assistants-chefs", - "ing-assistants-cpi", - "ing-assistants-deadlines", - "ing-assistants-devs", - "ing-assistants-director-42sh", - "ing-assistants-director-asm", - "ing-assistants-director-chess", - "ing-assistants-director-cpp", - "ing-assistants-director-harmonisation-mpc", - "ing-assistants-director-harmonisation-prog", - "ing-assistants-director-harmonisation", - "ing-assistants-director-httpd", - "ing-assistants-director-java", - "ing-assistants-director-malloc", - "ing-assistants-director-minimake", - "ing-assistants-director-myfind", - "ing-assistants-director-piscine", - "ing-assistants-director-prerentree", - "ing-assistants-director-spider", - "ing-assistants-director-sql", - "ing-assistants-director-tiger", - "ing-assistants-directors-js", - "ing-assistants-gitlab-manager", - "ing-assistants-guests", - "ing-assistants-intendants", - "ing-assistants-moulettes", - "ing-assistants-others", - "ing-assistants-pypi-admins", - "ing-assistants-respos-calins", - "ing-assistants-reviews", - "ing-assistants-roots", - "ing-assistants-toolchain", - "ing-assistants-yaka-respos-chess", - "ing-assistants-yaka-respos-cpp", - "ing-assistants-yaka-respos-java", - "ing-assistants-yaka-respos-js", - "ing-assistants-yaka-respos-ping", - "ing-assistants-yaka-respos-prerentree", - "ing-assistants-yaka-respos-spider", - "ing-assistants-yaka-respos-tiger", - "ing-assistants-yaka-stage", - "ing-assistants-yaka", - "ing-assistants", - "ing-csi", - "ing-de", - "ing-gistre-chief", - "ing-gistre-representatives", - "ing-gistre-roots", - "ing-gistre", - "ing-gitm-representatives", - "ing-gitm", - "ing-ice-representatives", - "ing-ice-roots", - "ing-ice", - "ing-if-representatives", - "ing-if", - "ing-image-representatives", - "ing-image", - "ing-ing1-arcs-s5-prs", - "ing-ing1-arcs-s6-prs", - "ing-ing1-arcs", - "ing-ing1-bing", - "ing-ing1-lyn", - "ing-ing1-prs", - "ing-ing1-riemann", - "ing-ing1-rns", - "ing-ing1-s5-lyn-representatives", - "ing-ing1-s5-lyn", - "ing-ing1-s5-prs-a1", - "ing-ing1-s5-prs-a2", - "ing-ing1-s5-prs-a3", - "ing-ing1-s5-prs-a4", - "ing-ing1-s5-prs-a5", - "ing-ing1-s5-prs-auditors", - "ing-ing1-s5-prs-b10", - "ing-ing1-s5-prs-b6", - "ing-ing1-s5-prs-b7", - "ing-ing1-s5-prs-b8", - "ing-ing1-s5-prs-b9", - "ing-ing1-s5-prs-bing", - "ing-ing1-s5-prs-representatives", - "ing-ing1-s5-prs-riemann-a1", - "ing-ing1-s5-prs-riemann-a2", - "ing-ing1-s5-prs-riemann", - "ing-ing1-s5-prs-shannon-c1", - "ing-ing1-s5-prs-shannon-c2", - "ing-ing1-s5-prs-shannon-c3", - "ing-ing1-s5-prs-shannon-c4", - "ing-ing1-s5-prs-shannon-c5", - "ing-ing1-s5-prs-shannon", - "ing-ing1-s5-prs-std", - "ing-ing1-s5-prs-tanenbaum-d1", - "ing-ing1-s5-prs-tanenbaum-d2", - "ing-ing1-s5-prs-tanenbaum-d3", - "ing-ing1-s5-prs-tanenbaum-d4", - "ing-ing1-s5-prs-tanenbaum-d5", - "ing-ing1-s5-prs-tanenbaum", - "ing-ing1-s5-prs", - "ing-ing1-s5-representatives", - "ing-ing1-s5-rns-representatives", - "ing-ing1-s5-rns", - "ing-ing1-s5-std", - "ing-ing1-s5-stg-representatives", - "ing-ing1-s5-stg", - "ing-ing1-s5-tc-hi", - "ing-ing1-s5-tc-hm", - "ing-ing1-s5-tls-representatives", - "ing-ing1-s5-tls", - "ing-ing1-s5", - "ing-ing1-s6-lyn-l1", - "ing-ing1-s6-lyn-l2", - "ing-ing1-s6-lyn-l3", - "ing-ing1-s6-lyn-representatives", - "ing-ing1-s6-lyn", - "ing-ing1-s6-prs-a1", - "ing-ing1-s6-prs-a2", - "ing-ing1-s6-prs-a3", - "ing-ing1-s6-prs-a4", - "ing-ing1-s6-prs-a5", - "ing-ing1-s6-prs-auditors", - "ing-ing1-s6-prs-b10", - "ing-ing1-s6-prs-b11", - "ing-ing1-s6-prs-b6", - "ing-ing1-s6-prs-b7", - "ing-ing1-s6-prs-b8", - "ing-ing1-s6-prs-b9", - "ing-ing1-s6-prs-bing", - "ing-ing1-s6-prs-representatives", - "ing-ing1-s6-prs-riemann-a1", - "ing-ing1-s6-prs-riemann-a2", - "ing-ing1-s6-prs-riemann", - "ing-ing1-s6-prs-shannon-c1", - "ing-ing1-s6-prs-shannon-c2", - "ing-ing1-s6-prs-shannon-c3", - "ing-ing1-s6-prs-shannon-c4", - "ing-ing1-s6-prs-shannon-c5", - "ing-ing1-s6-prs-shannon", - "ing-ing1-s6-prs-std", - "ing-ing1-s6-prs-tanenbaum-d1", - "ing-ing1-s6-prs-tanenbaum-d2", - "ing-ing1-s6-prs-tanenbaum-d3", - "ing-ing1-s6-prs-tanenbaum-d4", - "ing-ing1-s6-prs-tanenbaum-d5", - "ing-ing1-s6-prs-tanenbaum", - "ing-ing1-s6-prs", - "ing-ing1-s6-representatives", - "ing-ing1-s6-rns-representatives", - "ing-ing1-s6-rns", - "ing-ing1-s6-stg-representatives", - "ing-ing1-s6-stg-s1", - "ing-ing1-s6-stg-s2", - "ing-ing1-s6-stg", - "ing-ing1-s6-tls-representatives", - "ing-ing1-s6-tls-t1", - "ing-ing1-s6-tls-t2", - "ing-ing1-s6-tls", - "ing-ing1-s6", - "ing-ing1-shannon", - "ing-ing1-stg", - "ing-ing1-tanenbaum", - "ing-ing1-tls", - "ing-ing1", - "ing-ing2-lyn", - "ing-ing2-prs", - "ing-ing2-s7-prs", - "ing-ing2-s7-representatives", - "ing-ing2-s7-stg", - "ing-ing2-s7", - "ing-ing2-s8-lyn-if-representatives", - "ing-ing2-s8-lyn-if", - "ing-ing2-s8-lyn-rdi", - "ing-ing2-s8-lyn-representatives", - "ing-ing2-s8-lyn-sciag-representatives", - "ing-ing2-s8-lyn-sciag", - "ing-ing2-s8-lyn", - "ing-ing2-s8-prs-gistre-representatives", - "ing-ing2-s8-prs-gistre", - "ing-ing2-s8-prs-gitm-representatives", - "ing-ing2-s8-prs-gitm", - "ing-ing2-s8-prs-ice-representatives", - "ing-ing2-s8-prs-ice", - "ing-ing2-s8-prs-image-representatives", - "ing-ing2-s8-prs-image", - "ing-ing2-s8-prs-mti-representatives", - "ing-ing2-s8-prs-mti", - "ing-ing2-s8-prs-quantum-representatives", - "ing-ing2-s8-prs-quantum", - "ing-ing2-s8-prs-rdi", - "ing-ing2-s8-prs-representatives", - "ing-ing2-s8-prs-sante-representatives", - "ing-ing2-s8-prs-sante", - "ing-ing2-s8-prs-scia-representatives", - "ing-ing2-s8-prs-scia", - "ing-ing2-s8-prs-sigl-representatives", - "ing-ing2-s8-prs-sigl", - "ing-ing2-s8-prs-srs-representatives", - "ing-ing2-s8-prs-srs", - "ing-ing2-s8-prs-startup-representatives", - "ing-ing2-s8-prs-startup", - "ing-ing2-s8-prs-tcom-representatives", - "ing-ing2-s8-prs-tcom", - "ing-ing2-s8-prs", - "ing-ing2-s8-representatives", - "ing-ing2-s8-tls-representatives", - "ing-ing2-s8-tls-ssie-representatives", - "ing-ing2-s8-tls-ssie", - "ing-ing2-s8-tls", - "ing-ing2-s8", - "ing-ing2-stg", - "ing-ing2-tls", - "ing-ing2", - "ing-ing3-lyn", - "ing-ing3-prs", - "ing-ing3-s10-prs", - "ing-ing3-s10", - "ing-ing3-s9-lyn-if-representatives", - "ing-ing3-s9-lyn-if", - "ing-ing3-s9-lyn-rdi", - "ing-ing3-s9-lyn-representatives", - "ing-ing3-s9-lyn-sciag-representatives", - "ing-ing3-s9-lyn-sciag", - "ing-ing3-s9-lyn", - "ing-ing3-s9-prs-gistre-representatives", - "ing-ing3-s9-prs-gistre", - "ing-ing3-s9-prs-gitm-representatives", - "ing-ing3-s9-prs-gitm", - "ing-ing3-s9-prs-ice-representatives", - "ing-ing3-s9-prs-ice", - "ing-ing3-s9-prs-image-representatives", - "ing-ing3-s9-prs-image", - "ing-ing3-s9-prs-mti-representatives", - "ing-ing3-s9-prs-mti", - "ing-ing3-s9-prs-quantum-representatives", - "ing-ing3-s9-prs-quantum", - "ing-ing3-s9-prs-rdi", - "ing-ing3-s9-prs-representatives", - "ing-ing3-s9-prs-sante-representatives", - "ing-ing3-s9-prs-sante", - "ing-ing3-s9-prs-scia-representatives", - "ing-ing3-s9-prs-scia", - "ing-ing3-s9-prs-sigl-representatives", - "ing-ing3-s9-prs-sigl", - "ing-ing3-s9-prs-srs-representatives", - "ing-ing3-s9-prs-srs", - "ing-ing3-s9-prs-startup-representatives", - "ing-ing3-s9-prs-startup", - "ing-ing3-s9-prs-tcom-representatives", - "ing-ing3-s9-prs-tcom", - "ing-ing3-s9-prs", - "ing-ing3-s9-representatives", - "ing-ing3-s9-tls-representatives", - "ing-ing3-s9-tls-ssie-representatives", - "ing-ing3-s9-tls-ssie", - "ing-ing3-s9-tls", - "ing-ing3-s9", - "ing-ing3-tls", - "ing-ing3", - "ing-mti-representatives", - "ing-mti-roots", - "ing-mti", - "ing-quantum-representatives", - "ing-quantum", - "ing-rdi", - "ing-sante-representatives", - "ing-sante", - "ing-scia-representatives", - "ing-scia", - "ing-sciag-representatives", - "ing-sciag", - "ing-scolarite-coaching", - "ing-scolarite", - "ing-sigl-representatives", - "ing-sigl-siops", - "ing-sigl", - "ing-srs-assistants", - "ing-srs-fic-directors", - "ing-srs-fic-roots", - "ing-srs-representatives", - "ing-srs-roots", - "ing-srs", - "ing-ssie-representatives", - "ing-ssie", - "ing-startup-representatives", - "ing-startup", - "ing-tcom-assistants", - "ing-tcom-representatives", - "ing-tcom-respos-labo", - "ing-tcom-roots", - "ing-tcom", - "ing", - "inter-bsc", - "inter-exch-f21", - "inter-exch-fall", - "inter-exch-s21", - "inter-exch-s22", - "inter-exch-spring", - "inter-f18", - "inter-f19", - "inter-f20", - "inter-f21", - "inter-fall", - "inter-mcs-cs", - "inter-mcs-dsa", - "inter-mcs-ism", - "inter-mcs-se", - "inter-mcs", - "inter-me", - "inter-msc-aims", - "inter-msc-ais", - "inter-s21", - "inter-s22", - "inter-spring", - "inter-summer", - "inter-summer22", - "inter", - "labo-3ie", - "labo-labsi-devs", - "labo-labsi-employees", - "labo-labsi-interns", - "labo-labsi-manager", - "labo-labsi-roots", - "labo-labsi-students", - "labo-labsi", - "labo-lrde-automates", - "labo-lrde-image-openstack", - "labo-lrde-image", - "labo-lrde-roots", - "labo-lrde", - "labo-lre-roots", - "labo-lre", - "labo-lse-eslr", - "labo-lse-roots", - "labo-lse-secu", - "labo-lse-sys", - "labo-lse", - "labo-metalab-roots", - "labo-seal-permanents", - "labo-seal-stagiaires", - "labo-seal", - "lyn", - "ofa-scolarite", - "pi-fle", - "pi", - "prepa-admissions", - "prepa-assistants-acdc-lyn", - "prepa-assistants-acdc-prs", - "prepa-assistants-acdc-rns", - "prepa-assistants-acdc-stg", - "prepa-assistants-acdc-tls", - "prepa-assistants-acdc", - "prepa-assistants-asm-lyn", - "prepa-assistants-asm-prs", - "prepa-assistants-asm-rns", - "prepa-assistants-asm-stg", - "prepa-assistants-asm-tls", - "prepa-assistants-asm", - "prepa-spe-api-s3-prs", - "prepa-spe-api-s4-prs", - "prepa-spe-lyn", - "prepa-spe-prs", - "prepa-spe-rns", - "prepa-spe-s3-lyn-l1", - "prepa-spe-s3-lyn-l2", - "prepa-spe-s3-lyn-l3", - "prepa-spe-s3-lyn", - "prepa-spe-s3-prs-a1", - "prepa-spe-s3-prs-a2", - "prepa-spe-s3-prs-b1", - "prepa-spe-s3-prs-b2", - "prepa-spe-s3-prs-c1", - "prepa-spe-s3-prs-c2", - "prepa-spe-s3-prs-d1", - "prepa-spe-s3-prs-d2", - "prepa-spe-s3-prs-e1", - "prepa-spe-s3-prs-pa1", - "prepa-spe-s3-prs-pa2", - "prepa-spe-s3-prs", - "prepa-spe-s3-rns-r1", - "prepa-spe-s3-rns-r2", - "prepa-spe-s3-rns", - "prepa-spe-s3-stg-spe1", - "prepa-spe-s3-stg-spe2", - "prepa-spe-s3-stg", - "prepa-spe-s3-tls-t1", - "prepa-spe-s3-tls-t2", - "prepa-spe-s3-tls", - "prepa-spe-s3", - "prepa-spe-s3s-prs-a1", - "prepa-spe-s3s-prs-a2", - "prepa-spe-s3s-prs", - "prepa-spe-s3s", - "prepa-spe-s4-inter", - "prepa-spe-s4-lyn-a", - "prepa-spe-s4-lyn-b", - "prepa-spe-s4-lyn-l1", - "prepa-spe-s4-lyn-l2", - "prepa-spe-s4-lyn-l3", - "prepa-spe-s4-lyn", - "prepa-spe-s4-prs-a1", - "prepa-spe-s4-prs-a2", - "prepa-spe-s4-prs-b1", - "prepa-spe-s4-prs-b2", - "prepa-spe-s4-prs-c1", - "prepa-spe-s4-prs-c2", - "prepa-spe-s4-prs", - "prepa-spe-s4-rns-r1", - "prepa-spe-s4-rns-r2", - "prepa-spe-s4-rns", - "prepa-spe-s4-stg-spe1", - "prepa-spe-s4-stg-spe2", - "prepa-spe-s4-stg", - "prepa-spe-s4-tls-t1", - "prepa-spe-s4-tls-t2", - "prepa-spe-s4-tls", - "prepa-spe-s4", - "prepa-spe-stg", - "prepa-spe-tls", - "prepa-spe", - "prepa-sup-lyn", - "prepa-sup-prs", - "prepa-sup-rns", - "prepa-sup-s1-lyn-l1", - "prepa-sup-s1-lyn-l2", - "prepa-sup-s1-lyn-l3", - "prepa-sup-s1-lyn-l4", - "prepa-sup-s1-lyn", - "prepa-sup-s1-prs-a1", - "prepa-sup-s1-prs-a2", - "prepa-sup-s1-prs-a3", - "prepa-sup-s1-prs-b1", - "prepa-sup-s1-prs-b2", - "prepa-sup-s1-prs-c1", - "prepa-sup-s1-prs-c2", - "prepa-sup-s1-prs-d1", - "prepa-sup-s1-prs-d2", - "prepa-sup-s1-prs-e1", - "prepa-sup-s1-prs-e2", - "prepa-sup-s1-prs-f1", - "prepa-sup-s1-prs-pa1", - "prepa-sup-s1-prs-pa2", - "prepa-sup-s1-prs", - "prepa-sup-s1-rns-r1", - "prepa-sup-s1-rns-r2", - "prepa-sup-s1-rns", - "prepa-sup-s1-stg-st1", - "prepa-sup-s1-stg-st2", - "prepa-sup-s1-stg", - "prepa-sup-s1-tls-t1", - "prepa-sup-s1-tls-t2", - "prepa-sup-s1-tls-t3", - "prepa-sup-s1-tls", - "prepa-sup-s1", - "prepa-sup-s1s-prs", - "prepa-sup-s1s", - "prepa-sup-s2-lyn-l1", - "prepa-sup-s2-lyn-l2", - "prepa-sup-s2-lyn-l3", - "prepa-sup-s2-lyn-l4", - "prepa-sup-s2-lyn", - "prepa-sup-s2-prs-a1", - "prepa-sup-s2-prs-a2", - "prepa-sup-s2-prs-a3", - "prepa-sup-s2-prs-b1", - "prepa-sup-s2-prs-b2", - "prepa-sup-s2-prs-c1", - "prepa-sup-s2-prs-c2", - "prepa-sup-s2-prs-d1", - "prepa-sup-s2-prs-d2", - "prepa-sup-s2-prs-e1", - "prepa-sup-s2-prs-e2", - "prepa-sup-s2-prs-f1", - "prepa-sup-s2-prs", - "prepa-sup-s2-rns-r1", - "prepa-sup-s2-rns-r2", - "prepa-sup-s2-rns-r3", - "prepa-sup-s2-rns", - "prepa-sup-s2-stg-st1", - "prepa-sup-s2-stg-st2", - "prepa-sup-s2-stg", - "prepa-sup-s2-tls-t1", - "prepa-sup-s2-tls-t2", - "prepa-sup-s2-tls-t3", - "prepa-sup-s2-tls", - "prepa-sup-s2", - "prepa-sup-s2s-prs-a1", - "prepa-sup-s2s-prs-a2", - "prepa-sup-s2s-prs", - "prepa-sup-s2s", - "prepa-sup-stg", - "prepa-sup-tls", - "prepa-sup", - "prepa", - "prs", - "rns", - "service-accounts", - "stg", - "students", - "teachers-permanent", - "teachers", - "tls", - "users", - "wheel" - ] -} diff --git a/src/bot.ts b/src/bot.ts index 993b2c1..fd47139 100644 --- a/src/bot.ts +++ b/src/bot.ts @@ -121,25 +121,21 @@ export class EpitlsBot { function message_command_response_sending_email(email: string) { const embed = new EmbedBuilder() - .setTitle("`🟡`| Vérification") - .setDescription(` -Un lien de vérification a été envoyé par e-mail à \`${email}\`. -Le lien expirera dans 5 minutes. -**Il pourraît être arrivé dans \`Courrier indésirable\`.** -`.trim()); + .setTitle("`🟡`| Verification") + .setDescription(`Sending a verification link to your email \`${email}\`.`); return { embeds: [embed] }; } function message_command_response_error(msg: string) { const embed = new EmbedBuilder() - .setTitle("`❌`| Vérification") - .setDescription(`Échec de la vérification :\n\`${msg}\``); + .setTitle("`❌`| Verification") + .setDescription(`An error occured\n\`${msg}\``); return { embeds: [embed] }; } function message_command_response_success() { const embed = new EmbedBuilder() - .setTitle("`✅`| Vérification") - .setDescription("Votre e-mail CRI a bien été associé à ce compte Discord."); + .setTitle("`✅`| Verification") + .setDescription("Your email was associated with this account."); return { embeds: [embed] }; } diff --git a/src/cri.ts b/src/cri.ts index 5c0d8c9..a980044 100644 --- a/src/cri.ts +++ b/src/cri.ts @@ -1,14 +1,9 @@ import { z } from "https://deno.land/x/zod@v3.22.4/mod.ts"; -import { log_from } from "./utils.ts"; -const log = (...args: unknown[]) => log_from(import.meta.url, ...args); /** * Wraps the CRI API. */ export class CriApi { - /** - * note : a CRI token is actually - */ private token; public constructor(token: string) { @@ -19,8 +14,13 @@ export class CriApi { * Fetches an array of the groups an user has been part of. */ public async groups_of(login: string) { - log(`Fetching groups of '${login}'.`); - const response = await fetch_json_auth(`https://cri.epita.fr/api/v2/users/${login}/`, this.token); + const response = await fetch(`https://cri.epita.fr/api/v2/users/${login}/`, { + headers: { + accept: "application/json", + authorization: "Basic " + this.token, + }, + }); + const body = await response.json(); const group = z.object({ slug: z.string() }); const parser = z.object({ primary_group: group, @@ -30,7 +30,7 @@ export class CriApi { })), current_groups: z.array(group), }); - const parsed = parser.parse(response); + const parsed = parser.parse(body); const result = new Set(); result.add(parsed.primary_group.slug); for (const group of parsed.current_groups) result.add(group.slug); @@ -42,43 +42,12 @@ export class CriApi { * Tests wether a given login exists within the CRI registry. */ public async user_exists(login: string) { - log(`Testing existence of user '${login}'.`); const response = await fetch(`https://cri.epita.fr/api/v2/users/${login}/`, { headers: { accept: "application/json", authorization: "Basic " + this.token, }, }); - const found = response.status === 200; - return found; - } - - public async get_all_groups() { - const result = [] as string[]; - const response_parser = z.object({ - next: z.string().or(z.null()), - results: z.array(z.object({ - slug: z.string(), - })), - }); - let next_url = `https://cri.epita.fr/api/v2/groups/`; - while (true) { - const response = await fetch_json_auth(next_url, this.token); - const parsed = response_parser.parse(response); - result.push(...parsed.results.map((g) => g.slug)); - if (parsed.next === null) break; - next_url = parsed.next; - } - return result; + return response.status === 200; } } - -async function fetch_json_auth(url: string, token: string) { - const response = await fetch(url, { - headers: { - accept: "application/json", - authorization: "Basic " + token, - }, - }); - return await response.json() as unknown; -}