scolengo-api

Unofficial Node.js API client of Skolengo EMS v2

https://github.com/maelgangloff/scolengo-api

Science Score: 44.0%

This score indicates how likely this project is to be science-related based on various indicators:

  • CITATION.cff file
    Found CITATION.cff file
  • codemeta.json file
    Found codemeta.json file
  • .zenodo.json file
    Found .zenodo.json file
  • DOI references
  • Academic publication links
  • Academic email domains
  • Institutional organization owner
  • JOSS paper metadata
  • Scientific vocabulary similarity
    Low similarity (5.8%) to scientific vocabulary

Keywords

api api-client jsonapi kdecole kosmos nodejs skolengo
Last synced: 4 months ago · JSON representation ·

Repository

Unofficial Node.js API client of Skolengo EMS v2

Basic Info
Statistics
  • Stars: 23
  • Watchers: 5
  • Forks: 4
  • Open Issues: 2
  • Releases: 43
Topics
api api-client jsonapi kdecole kosmos nodejs skolengo
Created over 2 years ago · Last pushed over 1 year ago
Metadata Files
Readme Contributing Funding License Code of conduct Citation Security

README.md

scolengo-api

view on npm GitHub CI Discord npm

Support non officiel de l'API Skolengo. Il s'agit de l'API utilisée par la nouvelle application mobile éponyme. Ce module permet de récupérer les données de l'ENT de manière automatique. De plus, certaines fonctions implémentées permettent de prétraiter les données (conversion de l'emploi du temps au format iCalendar par exemple).

Ce module est destiné à devenir le successeur de kdecole-api dans l'éventualité où l'accès à l'ancienne API serait définitivement clos.

[!TIP] Pour utiliser cette librairie, il est nécessaire de s'authentifier auprès des serveurs de Skolengo. Pour obtenir des jetons de connexion, vous pouvez utiliser scolengo-token.

Pour participer et se tenir informé, rejoins le serveur Discord: https://discord.gg/9u69mxsFT6

Disclaimer

[!WARNING] - Il est clairement mentionné que cette librairie n'est pas officiellement éditée par la société éditrice du logiciel Skolengo. - Ce module n'est pas une contrefaçon car il n'existe pas de module similaire édité officiellement. - Les utilisateurs ne peuvent accéder qu'à leurs propres données. Ils sont soumis au même processus d'authentification que celui implémenté dans l'application et imposé par le serveur API. - Les données des utilisateurs ne sont pas davantage exposées puisqu'un utilisateur ne peut accéder qu'à ses propres données. Personne n'a le contrôle sur cette limitation qui est inhérente au fonctionnement de l'API des serveurs de Skolengo. - Cette librairie ne se suffit pas à elle-même pour fonctionner. Il est nécessaire de l'importer dans un projet et l'utilisateur est le seul responsable de son code et des éventuelles conséquences. - Tout utilisateur de cette librairie a a priori lu et approuvé l'entièreté du fichier de licence GPLv3 disponible publiquement LICENSE ainsi que de ce présent fichier de présentation. - Tout utilisateur de cette librairie a a priori lu et compris l'entièreté du code de ce projet avant toute utilisation. - L'auteur de ce projet n'agit pas en tant qu'intermédiaire de traitement des données au sens du RGPD. Les utilisateurs sont responsables de leur propre conformité au RGPD lors de l'utilisation de cette librairie. Ils doivent s'assurer que leur utilisation de cette librairie est conforme aux exigences du RGPD et de toute autre législation applicable en matière de protection des données. - Eu égard l'ensemble de ces remarques, les contributeurs et a fortiori l'auteur du projet ne peuvent être tenus responsables de tout dommage potentiel.

Liste des ENT utilisant Skolengo :

| Nom usuel de l'ENT | Code ENT | URL OpenID Connect Discovery | |------------------------------|----------|------------------------------------------------------------| | Mon Bureau Numérique | gdest | https://sso.monbureaunumerique.fr/oidc/.well-known | | Mon ENT Occitanie | entmip | https://sso.mon-ent-occitanie.fr/oidc/.well-known | | Arsène 76 | cg76 | https://sso.arsene76.fr/oidc/.well-known | | ENT27 | cg27 | https://sso.ent27.fr/oidc/.well-known | | ENT Creuse | cg23 | https://sso.entcreuse.fr/oidc/.well-known | | ENT Auvergne-Rhône-Alpes | rra | https://sso.ent.auvergnerhonealpes.fr/oidc/.well-known | | Agora 06 | cg06 | https://sso.agora06.fr/oidc/.well-known | | CyberCollèges 42 | cg42 | https://sso.cybercolleges42.fr/oidc/.well-known | | eCollège 31 Haute-Garonne | cg31 | https://sso.ecollege.haute-garonne.fr/oidc/.well-known | | Mon collège en Val d'Oise | cg95 | https://sso.moncollege.valdoise.fr/oidc/.well-known | | Webcollège Seine-Saint-Denis | cg93 | https://sso.webcollege.seinesaintdenis.fr/oidc/.well-known | | Eclat-BFC | bfc | https://sso.eclat-bfc.fr/oidc/.well-known | | @ucollège84 | cg84 | https://sso.aucollege84.vaucluse.fr/oidc/.well-known | | ENT Val de Marne | cg94 | https://sso.moncollege.valdemarne.fr/oidc/.well-known | | Skolengo-Écoles primaires | metab1d | https://sso.skolengo.com/oidc/.well-known | | Skolengo-Collèges et Lycées | mpdl | https://sso.pdl.kosmoseducation.com/oidc/.well-known | | AEFE | metab | https://sso1.skolengo.com/oidc/.well-known | | AEFE Amérique - Pacifique | metabam | https://sso2.skolengo.com/oidc/.well-known | | Schulportal Ostbelgien | cgb | https://sso.schulen.be/oidc/.well-known |

Un wiki est disponible, celui-ci rassemble davantage d'informations sur le fonctionnement de l'API. Ce wiki est disponible ici.

Skolengo

Kind: global class

new Skolengo(oidClient, school, tokenSet, config)

Il est possible de s'authentifier en possédant au prélable des jetons OAuth 2.0

| Param | Type | Description | | --- | --- | --- | | oidClient | Client | Un client OpenID Connect | | school | School | Etablissement | | tokenSet | TokenSetParameters | Jetons d'authentification OpenID Connect | | config | SkolengoConfig | Configuration optionnelle (stockage du jeton renouvellé, client HTTP personnalisé, gestion des erreurs Pronote, ...) |

Example
```js const {Skolengo} = require('scolengo-api')

// 🚨 ATTENTION: Ne communiquez jamais vos jetons à un tiers. Ils vous sont strictement personnels. Si vous pensez que vos jetons ont été dérobés, révoquez-les immédiatement. // L'objet de configuration ci-dessous peut être généré à partir de l'utilitaire scolengo-token (https://github.com/maelgangloff/scolengo-token) const config = { "tokenSet": { "accesstoken": "<accesstokenhere>", "idtoken": "", "refreshtoken": "RT-<refreshtokenhere>", "tokentype": "bearer", "expiresat": 1234567890, "scope": "openid" }, "school": { "id": "SKO-E-<schoolid>", "name": "", "addressLine1": "", "addressLine2": null, "addressLine3": null, "zipCode": "", "city": "", "country": "France", "homePageUrl": "", "emsCode": "", "emsOIDCWellKnownUrl": "" } } Skolengo.fromConfigObject(config).then(async user => { const infoUser = await user.getUserInfo() console.log(Correctement authentifié sous l'identifiant ${infoUser.id}) }) js const {Skolengo} = require('scolengo-api') const {TokenSet} = require('openid-client')

Skolengo.searchSchool({ text: 'Lycée Louise Weiss' }).then(async schools => { if(!schools.length) throw new Error('Aucun établissement n\'a été trouvé.') const school = schools[0] const oidClient = await Skolengo.getOIDClient(school)

// 🚨 ATTENTION: Ne communiquez jamais vos jetons à un tiers. Ils vous sont strictement personnels. Si vous pensez que vos jetons ont été dérobés, révoquez-les immédiatement.

const tokenSet = new TokenSet({ accesstoken: 'ACCESSTOKEN', idtoken: 'IDTOKEN', refreshtoken: 'REFRESHTOKEN', tokentype: 'bearer', expiresat: 1681486899, scope: 'openid' })

const user = new Skolengo(oidClient, school, tokenSet) const infoUser = await user.getUserInfo() console.log(Correctement authentifié sous l'identifiant ${infoUser.id}) }) ```

skolengo.getUserInfo(userId, params, includes)

Informations sur l'utilisateur actuellement authentifié (nom, prénom, date de naissance, adresse postale, courriel, téléphone, permissions, ...)

Kind: instance method of Skolengo

| Param | Type | Description | | --- | --- | --- | | userId | string | undefined | Identifiant de l'utilisateur | | params | object | Modifier les paramètres de la requête | | includes | Array.<string> | Ressources JSON:API à inclure |

skolengo.downloadAttachment(attachment)

Télécharger une pièce jointe.

Une pièce jointe peut être un fichier inclu dans un courriel, une actualité de l'établissement ou un bulletin périodique.

[!CAUTION] 🚨 ATTENTION: Dans cette requête, votre jeton est envoyé à l'URL du fichier. Assurez-vous que celle-ci provient bien de votre établissement.

Kind: instance method of Skolengo

| Param | Type | Description | | --- | --- | --- | | attachment | Attachment | La pièce jointe |

Example
```js const {createWriteStream} = require('node:fs') const {Skolengo} = require('scolengo-api')

Skolengo.fromConfigObject(config).then(async user => { const student = 'ESKO-P-b2c86113-1062-427e-bc7f-0618cbd5d5ec' const bulletins = await user.getPeriodicReportsFiles(student) for(const bulletin of bulletins) { console.log(bulletin.name) (await user.downloadAttachment(bulletin)).pipe(createWriteStream(bulletin.name)); } }) ```

skolengo.getSchoolInfos(params, includes)

Récupérer toutes les actualités de l'établissement

Kind: instance method of Skolengo

| Param | Type | Description | | --- | --- | --- | | params | object | Modifier les paramètres de la requête | | includes | Array.<string> | Ressources JSON:API à inclure |

skolengo.getSchoolInfo(schoolInfoId, params, includes)

Récupérer une actualité de l'établissement

Kind: instance method of Skolengo

| Param | Type | Description | | --- | --- | --- | | schoolInfoId | string | Identifiant d'une actualité | | params | object | Modifier les paramètres de la requête | | includes | Array.<string> | Ressources JSON:API à inclure |

skolengo.getEvaluationSettings(studentId, limit, offset, params, includes)

Statut des services d'évaluation (identifiant des périodes, ...)

Kind: instance method of Skolengo

| Param | Type | Default | Description | | --- | --- | --- | --- | | studentId | string | | Identifiant d'un étudiant | | limit | number | 20 | Limite | | offset | number | 0 | Offset | | params | object | | Modifier les paramètres de la requête | | includes | Array.<string> | | Ressources JSON:API à inclure |

skolengo.getEvaluation(studentId, periodId, limit, offset, params, includes)

Récupérer les notes d'un étudiant sur une période

Kind: instance method of Skolengo

| Param | Type | Default | Description | | --- | --- | --- | --- | | studentId | string | | Identifiant d'un étudiant | | periodId | string | | Identifiant de la période de notation | | limit | number | 20 | Limite | | offset | number | 0 | Offset | | params | object | | Modifier les paramètres de la requête | | includes | Array.<string> | | Ressources JSON:API à inclure |

skolengo.getEvaluationDetail(studentId, evaluationId, params, includes)

Récupérer le détail d'une note d'un étudiant

Kind: instance method of Skolengo

| Param | Type | Description | | --- | --- | --- | | studentId | string | Identifiant d'un étudiant | | evaluationId | string | Identifiant de la note | | params | object | Modifier les paramètres de la requête | | includes | Array.<string> | Ressources JSON:API à inclure |

skolengo.getPeriodicReportsFiles(studentId, limit, offset, params, includes)

Récupérer la liste des bilans périodiques disponibles pour un étudiant. Pour chaque bulletin, une adresse est disponible pour le téléchargement.

Kind: instance method of Skolengo

| Param | Type | Default | Description | | --- | --- | --- | --- | | studentId | string | | Identifiant d'un étudiant | | limit | number | 20 | Limite | | offset | number | 0 | Offset | | params | object | | Modifier les paramètres de la requête | | includes | Array.<string> | | Ressources JSON:API à inclure |

Example
```js const {Skolengo} = require('scolengo-api')

Skolengo.fromConfigObject(config).then(async user => { const bulletins = await getPeriodicReportsFiles('ESKO-P-xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxx'); console.log(bulletins) }) ```

skolengo.getAgenda(studentId, startDate, endDate, limit, offset, params, includes)

Récupérer l'agenda d'un étudiant. Il est possible de le convertir au format iCalendar.

Kind: instance method of Skolengo

| Param | Type | Default | Description | | --- | --- | --- | --- | | studentId | string | | Identifiant d'un étudiant | | startDate | string | | Date de début - Format : YYYY-MM-DD | | endDate | string | | Date de fin - Format : YYYY-MM-DD | | limit | number | 20 | Limite | | offset | number | 0 | Offset | | params | object | | Modifier les paramètres de la requête | | includes | Array.<string> | | Ressources JSON:API à inclure |

Example
```js const { writeFileSync } = require('node:fs') const { Skolengo } = require('scolengo-api')

Skolengo.fromConfigObject(config).then(async user => { const studentId = 'ESKO-P-xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx' const agenda = await user.getAgenda(studentId, '2023-05-01', '2023-05-30')

writeFileSync('export.ics', agenda.toICalendar()) }) ```

skolengo.getLesson(studentId, lessonId, params, includes)

Récupérer les données d'un cours/leçon

Kind: instance method of Skolengo

| Param | Type | Description | | --- | --- | --- | | studentId | string | Identifiant d'un étudiant | | lessonId | string | Identifiant d'un cours/leçon | | params | object | Modifier les paramètres de la requête | | includes | Array.<string> | Ressources JSON:API à inclure |

skolengo.getHomeworkAssignments(studentId, startDate, endDate, limit, offset, params, includes)

Récupérer les devoirs d'un étudiant

Kind: instance method of Skolengo

| Param | Type | Default | Description | | --- | --- | --- | --- | | studentId | string | | Identifiant d'un étudiant | | startDate | string | | Date de début - Format : YYYY-MM-DD | | endDate | string | | Date de fin - Format : YYYY-MM-DD | | limit | number | 20 | Limite | | offset | number | 0 | Offset | | params | object | | Modifier les paramètres de la requête | | includes | Array.<string> | | Ressources JSON:API à inclure |

Example
```js const {Skolengo} = require('scolengo-api')

Skolengo.fromConfigObject(config).then(async user => { const startDate = new Date().toISOString().split('T')[0] // Aujourd'hui const endDate = new Date(Date.now() + 15 * 24 * 60 * 60 * 1e3).toISOString().split('T')[0] // Aujourd'hui + 15 jours const homework = await user.getHomeworkAssignments(user.getTokenClaims().sub, startDate, endDate)

console.log("Voici les exercices à faire pour les 2 prochaines semaines :", homework) }) ```

skolengo.getHomeworkAssignment(studentId, homeworkId, params, includes)

Récupérer les données d'un devoir

Kind: instance method of Skolengo

| Param | Type | Description | | --- | --- | --- | | studentId | string | Identifiant d'un étudiant | | homeworkId | string | Identifiant du devoir | | params | object | Modifier les paramètres de la requête | | includes | Array.<string> | Ressources JSON:API à inclure |

Example
```js const {Skolengo} = require('scolengo-api')

const user = await Skolengo.fromConfigObject(config)

user.getHomeworkAssignment(user.getTokenClaims().sub, "123456").then(e => { console.log(Pour le ${new Date(e.dueDateTime).toLocaleString()} :) console.log(> ${e.title} (${e.subject.label})) console.log(e.html) })

```

skolengo.patchHomeworkAssignment(studentId, homeworkId, attributes, params, includes)

Modifier le statut d'un travail à faire

Kind: instance method of Skolengo

| Param | Type | Description | | --- | --- | --- | | studentId | string | Identifiant d'un étudiant | | homeworkId | string | Identifiant d'un devoir à modifier | | attributes | Partial.<HomeworkAssignment> | Devoir modifié | | params | object | Modifier les paramètres de la requête | | includes | Array.<string> | Ressources JSON:API à inclure |

Example
```js const {Skolengo} = require('scolengo-api')

const user = await Skolengo.fromConfigObject(config) user.patchHomeworkAssignment('ESKO-P-xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx', '123456', { done: true }).then(hmw => { console.log(Le travail "${hmw.title}" a été marqué ${hmw.done ? 'fait' : 'à faire'}.) }) ```

skolengo.getUsersMailSettings(userId, params, includes)

Récupérer les informations du service de communication (identifiants des dossiers, ...)

Kind: instance method of Skolengo

| Param | Type | Description | | --- | --- | --- | | userId | string | undefined | Identifiant d'un utilisateur | | params | object | Modifier les paramètres de la requête | | includes | Array.<string> | Ressources JSON:API à inclure |

skolengo.getCommunicationsFolder(folderId, limit, offset, params, includes)

Récupérer les communication d'un dossier

Kind: instance method of Skolengo

| Param | Type | Default | Description | | --- | --- | --- | --- | | folderId | string | | Identifiant d'un dossier | | limit | number | 10 | Limite | | offset | number | 0 | Offset | | params | object | | Modifier les paramètres de la requête | | includes | Array.<string> | | Ressources JSON:API à inclure |

skolengo.getCommunication(communicationId, params)

Récupérer une communication à partir de son identifiant.

Kind: instance method of Skolengo

| Param | Type | Description | | --- | --- | --- | | communicationId | string | Identifiant d'une communication | | params | object | Modifier les paramètres de la requête |

skolengo.getCommunicationParticipations(communicationId, params, includes)

Récupérer les participations d'un fil de discussion (communication) Marque la communication comme lue.

Kind: instance method of Skolengo

| Param | Type | Description | | --- | --- | --- | | communicationId | string | Identifiant d'une communication | | params | object | Modifier les paramètres de la requête | | includes | Array.<string> | Ressources JSON:API à inclure |

skolengo.getCommunicationParticipants(communicationId, fromGroup, params, includes)

Récupérer tous les participants d'un fil de discussion (communication)

Kind: instance method of Skolengo

| Param | Type | Default | Description | | --- | --- | --- | --- | | communicationId | string | | Identifiant d'une communication | | fromGroup | boolean | true | Afficher le détail des groupes | | params | object | | Modifier les paramètres de la requête | | includes | Array.<string> | | Ressources JSON:API à inclure |

skolengo.patchCommunicationFolders(communicationId, folders, userId, params)

Déplacer une communication dans un dossier

Kind: instance method of Skolengo

| Param | Type | Description | | --- | --- | --- | | communicationId | string | Identifiant d'une communication | | folders | | Liste contenant l'identifiant du dossier | | userId | string | undefined | Identifiant de l'utilisateur | | params | object | Modifier les paramètres de la requête |

skolengo.postCommunication(newCommunication, params)

Envoyer un message dans un nouveau fil de discussion

Kind: instance method of Skolengo

| Param | Type | Description | | --- | --- | --- | | newCommunication | Partial.<Communication> | La nouvelle communication | | params | object | Modifier les paramètres de la requête |

skolengo.postParticipation(participation, params)

Envoyer un message dans un fil de discussion existant

Kind: instance method of Skolengo

| Param | Type | Description | | --- | --- | --- | | participation | Partial.<Participation> | La nouvelle participation | | params | object | Modifier les paramètres de la requête |

skolengo.getAbsenceFiles(studentId, limit, offset, params, includes)

Récupérer les absences et retards d'un étudiant. Il est possible d'exporter les absences au format CSV.

Kind: instance method of Skolengo

| Param | Type | Default | Description | | --- | --- | --- | --- | | studentId | string | | Identifiant d'un étudiant | | limit | number | 20 | Limite | | offset | offset | 0 | Offset | | params | object | | Modifier les paramètres de la requête | | includes | Array.<string> | | Ressources JSON:API à inclure |

Example
```js const { writeFileSync } = require('node:fs') const { Skolengo } = require('scolengo-api')

Skolengo.fromConfigObject(config).then(async user => { const studentId = 'ESKO-P-xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx' const absenceFiles = await user.getAbsenceFiles(studentId)

writeFileSync('export.csv', agenda.toCSV()) }) ```

skolengo.getAbsenceFile(folderId, params, includes)

Récupérer les détails d'une absence

Kind: instance method of Skolengo

| Param | Type | Description | | --- | --- | --- | | folderId | string | Identifiant d'un dossier | | params | object | Modifier les paramètres de la requête | | includes | Array.<string> | Ressources JSON:API à inclure |

skolengo.postAbsenceFileState(folderId, reasonId, comment, params)

Justifier une absence avec motif et commentaire. PS: La requête n'a pas été testée.

Kind: instance method of Skolengo

| Param | Type | Description | | --- | --- | --- | | folderId | string | Identifiant d'un dossier | | reasonId | string | Identifiant d'un motif | | comment | string | Commentaire | | params | object | Modifier les paramètres de la requête |

skolengo.getAbsenceReasons(limit, offset, params)

Récupérer la liste des motifs possibles d'absence. Cette liste peut être différente pour chaque établissement.

Kind: instance method of Skolengo

| Param | Type | Default | Description | | --- | --- | --- | --- | | limit | number | 20 | Limite | | offset | number | 0 | Offset | | params | object | | Modifier les paramètres de la requête |

Example
```js const {Skolengo} = require('scolengo-api')

Skolengo.fromConfigObject(config).then(async user => { user.getAbsenceReasons().then(response => { console.log(Liste des motifs: ${response.map(r => r.longLabel).join(';')}) }) }) ```

skolengo.refreshToken(triggerListener)

Demande un renouvellement du jeu de jeton (tokenSet)

Kind: instance method of Skolengo

| Param | Type | Default | Description | | --- | --- | --- | --- | | triggerListener | boolean | true | Si oui, appeler la fonction onTokenRefresh |

skolengo.getTokenClaims()

Récupérer les données contenues dans le payload JWT du token ID

Kind: instance method of Skolengo

Skolengo.revokeToken(oidClient, token)

Révoquer un jeton

Kind: static method of Skolengo

| Param | Type | Description | | --- | --- | --- | | oidClient | Client | Un client OpenID Connect | | token | string | Un jeton |

Skolengo.getAppCurrentConfig(httpConfig)

Configuration actuelle de l'application mobile (dernière version déployée, dernière version supportée, ...)

Kind: static method of Skolengo

| Param | Type | Description | | --- | --- | --- | | httpConfig | AxiosRequestConfig | undefined | Configuration facultative du client HTTP |

Example
```js const {Skolengo} = require('scolengo-api')

Skolengo.getAppCurrentConfig().then(config => { console.log(Dernière version déployée: ${config.latestDeployedSkoAppVersion}) console.log(Dernière version supportée: ${config.latestSupportedSkoAppVersion}) }) ```

Skolengo.searchSchool(filter, limit, offset, httpConfig)

Rechercher un établissement scolaire

Kind: static method of Skolengo

| Param | Type | Default | Description | | --- | --- | --- | --- | | filter | SchoolFilter | | Le filtre de recherche | | limit | number | 10 | Limite | | offset | number | 0 | Offset | | httpConfig | AxiosRequestConfig | undefined | | Configuration facultative du client HTTP |

Example
```js const {Skolengo} = require('scolengo-api')

Skolengo.searchSchool({ text: 'Lycée Louise Weiss' }).then(schools => { console.log(schools) }) **Example** js const {Skolengo} = require('scolengo-api')

Skolengo.searchSchool({ lat: 48.0, lon: 7.0 }).then(schools => { console.log(schools) }) ```

Skolengo.getOIDClient(school, redirectUri)

Créer un client OpenID Connect permettant l'obtention des jetons (refresh token et access token)

Kind: static method of Skolengo

| Param | Type | Default | Description | | --- | --- | --- | --- | | school | School | | L'établissement scolaire | | redirectUri | string | undefined | "skoapp-prod://sign-in-callback" | Callback |

Example
```js const {Skolengo} = require('scolengo-api')

Skolengo.searchSchool({ text: 'Lycée Louise Weiss' }).then(async schools => { if(!schools.length) throw new Error('Aucun établissement n\'a été trouvé.') const school = schools[0] const oidClient = await Skolengo.getOIDClient(school, 'skoapp-prod://sign-in-callback') console.log(oidClient.authorizationUrl()) // Lorsque l'authentification est effectuée, le CAS redirige vers le callback indiqué avec le code. Ce code permet d'obtenir les refresh token et access token (cf. mécanismes OAuth 2.0 et OID Connect) }) js const {Skolengo} = require('scolengo-api')

Skolengo.searchSchool({ text: 'Lycée Louise Weiss' }).then(async schools => { if(!schools.length) throw new Error('Aucun établissement n\'a été trouvé.') const school = schools[0] const oidClient = await Skolengo.getOIDClient(school, 'skoapp-prod://sign-in-callback')

const params = oidClient.callbackParams('skoapp-prod://sign-in-callback?code=OC-9999-xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx-X') const tokenSet = await oidClient.callback('skoapp-prod://sign-in-callback', params) // 🚨 ATTENTION: Ne communiquez jamais vos jetons à un tiers. Ils vous sont strictement personnels. Si vous pensez que vos jetons ont été dérobés, révoquez-les immédiatement.

const user = new Skolengo(oidClient, school, tokenSet) const infoUser = await user.getUserInfo() console.log(Correctement authentifié sous l'identifiant ${infoUser.id}) }) ```

Skolengo.fromConfigObject(config, skolengoConfig)

Créer un client Scolengo à partir d'un objet contenant les informations d'authentification. Cet objet de configuration peut être généré à partir de l'utilitaire scolengo-token. Le callback optionnel onTokenRefresh est appellé lors du rafraichissement du jeton (pour éventuellement stocker en mémoire le nouveau tokenSet). La callback optionnel tokenRefresh permet d'outrepasser l'utilisation de la librairie openid-client pour le rafraîchissement des jetons. La délégation de cette tâche permet l'utilisation de cette librairie dans des environnements externes à Node.js.

Kind: static method of Skolengo

| Param | Type | Description | | --- | --- | --- | | config | AuthConfig | Informations d'authentification | | skolengoConfig | SkolengoConfig | Configuration optionnelle (stockage du jeton renouvellé, client HTTP personnalisé, gestion des erreurs Pronote, ...) |

Example
js const {Skolengo} = require('scolengo-api') const config = require('./config.json') const user = await Skolengo.fromConfigObject(config) ```js const {Skolengo} = require('scolengo-api')

// 🚨 ATTENTION: Ne communiquez jamais vos jetons à un tiers. Ils vous sont strictement personnels. Si vous pensez que vos jetons ont été dérobés, révoquez-les immédiatement. const config = { "tokenSet": { "accesstoken": "<accesstokenhere>", "idtoken": "", "refreshtoken": "RT-<refreshtokenhere>", "tokentype": "bearer", "expiresat": 1234567890, "scope": "openid" }, "school": { "id": "SKO-E-<schoolid>", "name": "", "addressLine1": "", "addressLine2": null, "addressLine3": null, "zipCode": "", "city": "", "country": "France", "homePageUrl": "", "emsCode": "", "emsOIDCWellKnownUrl": "" } } Skolengo.fromConfigObject(config).then(async user => { const infoUser = await user.getUserInfo() console.log(Correctement authentifié sous l'identifiant ${infoUser.id}) }) ```

[!NOTE]

Liens utiles

Owner

  • Name: Maël Gangloff
  • Login: maelgangloff
  • Kind: user
  • Location: Nancy, France
  • Company: Polytech Nancy | @PolytechSN

Student at Polytech Nancy - University of Lorraine, France | Discord: maelgangloff#1907

Citation (CITATION.cff)

cff-version: 1.2.0
title: Scolengo API
message: >-
  If you use this software, please cite it using the
  metadata from this file.
type: software
authors:
  - given-names: Maël
    family-names: Gangloff
    email: contact@maelgangloff.fr
    orcid: 'https://orcid.org/0000-0002-7729-724X'
identifiers:
  - type: url
    value: >-
      https://github.com/maelgangloff/scolengo-api/releases/tag/3.0.3
    description: Release v3.0.3 of scolengo-api
repository-code: 'https://github.com/maelgangloff/scolengo-api'
abstract: Unofficial Node.js API client of Skolengo EMS.
keywords:
  - EMS
  - Skolengo
  - API
license: GPL-3.0-or-later
version: 3.0.3
date-released: '2024-02-08'
license-url: 'https://github.com/maelgangloff/scolengo-api/blob/master/LICENSE'

GitHub Events

Total
  • Watch event: 1
Last Year
  • Watch event: 1

Issues and Pull Requests

Last synced: 5 months ago

All Time
  • Total issues: 22
  • Total pull requests: 24
  • Average time to close issues: 20 days
  • Average time to close pull requests: 3 days
  • Total issue authors: 5
  • Total pull request authors: 5
  • Average comments per issue: 0.41
  • Average comments per pull request: 0.71
  • Merged pull requests: 21
  • Bot issues: 0
  • Bot pull requests: 0
Past Year
  • Issues: 0
  • Pull requests: 2
  • Average time to close issues: N/A
  • Average time to close pull requests: about 7 hours
  • Issue authors: 0
  • Pull request authors: 2
  • Average comments per issue: 0
  • Average comments per pull request: 0.5
  • Merged pull requests: 2
  • Bot issues: 0
  • Bot pull requests: 0
Top Authors
Issue Authors
  • maelgangloff (17)
  • malys (1)
  • Vilerio (1)
  • vinceh121 (1)
  • CzechSebastian (1)
Pull Request Authors
  • vinceh121 (12)
  • NonozgYtb (10)
  • Vilerio (5)
  • maelgangloff (3)
  • lolocomotive (1)
Top Labels
Issue Labels
enhancement (14) bug (3) documentation (2) invalid (1)
Pull Request Labels
enhancement (13) documentation (3) bug (2)

Packages

  • Total packages: 1
  • Total downloads:
    • npm 104 last-month
  • Total dependent packages: 1
  • Total dependent repositories: 1
  • Total versions: 40
  • Total maintainers: 1
npmjs.org: scolengo-api

Unofficial API client of Skolengo

  • Versions: 40
  • Dependent Packages: 1
  • Dependent Repositories: 1
  • Downloads: 104 Last month
Rankings
Stargazers count: 8.4%
Forks count: 8.9%
Downloads: 9.5%
Dependent repos count: 10.3%
Average: 11.6%
Dependent packages count: 20.9%
Maintainers (1)
Last synced: 4 months ago