UNPKG

@villedemontreal/jwt-validator

Version:
52 lines 2.37 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.publicKeyRepository = void 0; const http_request_1 = require("@villedemontreal/http-request"); const crypto = require("crypto"); const lodash_1 = require("lodash"); const superagent = require("superagent"); const general_utils_1 = require("@villedemontreal/general-utils"); const configs_1 = require("../config/configs"); const constants_1 = require("../config/constants"); class PublicKeyRepository { async getAll() { const url = `${http_request_1.httpUtils.urlJoin(configs_1.configs.getHost(), configs_1.configs.getEndpoint())}?${configs_1.configs.getFetchKeysParameters()}`; const request = superagent.get(url); const response = await http_request_1.httpUtils.send(request); if (!response.ok) { throw new Error(`An error occurred calling ${url} : ${response.error}`); } const data = response.body; if (data && data.items && (0, lodash_1.isArray)(data.items)) { const items = data.items.map((key) => ({ ...key, parsedPublicKey: crypto.createPublicKey(key.publicKey), })); const newKeys = (0, lodash_1.keyBy)(items, (item) => item.id); return newKeys; } return null; } async getOne(keyId) { const url = http_request_1.httpUtils.urlJoin(configs_1.configs.getHost(), configs_1.configs.getEndpoint(), keyId.toString()); const request = superagent.get(url); const response = await http_request_1.httpUtils.send(request); if (!response.ok) { // ========================================== // Not found: we return null // ========================================== if (response.status === 404) { return null; } throw (0, general_utils_1.createError)(constants_1.constants.errors.codes.UNABLE_TO_GET_PUBLIC_KEY, `An error occurred calling ${url} : ${response.error}`) .httpStatus(response.status) .build(); } return { ...response.body, parsedPublicKey: crypto.createPublicKey(response.body.publicKey), }; } } exports.publicKeyRepository = new PublicKeyRepository(); //# sourceMappingURL=publicKeyRepository.js.map