diff options
author | Minteck <contact@minteck.org> | 2023-02-23 19:34:56 +0100 |
---|---|---|
committer | Minteck <contact@minteck.org> | 2023-02-23 19:34:56 +0100 |
commit | 3d1cd02f27518f1a04374c7c8320cd5d82ede6e9 (patch) | |
tree | 75be5fba4368472fb11c8015aee026b2b9a71888 /includes/external/school/node_modules/pronote-api/src/server/http.js | |
parent | 8cc1f13c17fa2fb5a4410542d39e650e02945634 (diff) | |
download | pluralconnect-3d1cd02f27518f1a04374c7c8320cd5d82ede6e9.tar.gz pluralconnect-3d1cd02f27518f1a04374c7c8320cd5d82ede6e9.tar.bz2 pluralconnect-3d1cd02f27518f1a04374c7c8320cd5d82ede6e9.zip |
Updated 40 files, added 37 files, deleted 1103 files and renamed 3905 files (automated)
Diffstat (limited to 'includes/external/school/node_modules/pronote-api/src/server/http.js')
-rw-r--r-- | includes/external/school/node_modules/pronote-api/src/server/http.js | 57 |
1 files changed, 57 insertions, 0 deletions
diff --git a/includes/external/school/node_modules/pronote-api/src/server/http.js b/includes/external/school/node_modules/pronote-api/src/server/http.js new file mode 100644 index 0000000..66b07a5 --- /dev/null +++ b/includes/external/school/node_modules/pronote-api/src/server/http.js @@ -0,0 +1,57 @@ +/* eslint no-console: off */ + +const polka = require('polka'); +const body = require('body-parser'); + +function start(host, port, handlers) +{ + const server = polka(); + server.use(body.json()); + + server.post('/auth/login', (req, res) => handle(req, res, handlers.login)); + server.post('/auth/logout', (req, res) => handle(req, res, handlers.logout)); + server.post('/graphql', (req, res) => handle(req, res, handlers.graphql)); + + return new Promise((resolve, reject) => { + server.listen(port, host, err => { + if (err) { + return reject(err); + } + + return resolve(); + }) + }); +} + +function handle(req, res, handler) +{ + handler(req.body, req.headers.token) + .then(result => respond(res, 200, result)) + .catch(err => { + console.error('Error during request handling :'); + console.error(err); + + if (err.message) { + delete err.http; + respond(res, err.http || 500, err); + } else { + respond(res, 500, { + message: 'Internal error : ' + err + }); + } + }); +} + +function respond(res, code, obj) +{ + const data = JSON.stringify(obj); + const headers = { + 'Content-Type': 'application/json; charset=utf-8', + 'Content-Length': Buffer.byteLength(data) + }; + + res.writeHead(code, headers); + res.end(data); +} + +module.exports = start; |