@villedemontreal/jwt-validator
Version:
Module to validate JWT (JSON Web Tokens)
52 lines • 2.37 kB
JavaScript
;
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