xiot-core-spec-ts
Version:
XIOT Specification Codec
42 lines (41 loc) • 1.7 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.JwtCodec = void 0;
const JwtType_1 = require("../../typedef/jwt/JwtType");
const JwtSecretsImplCodec_1 = require("./impl/JwtSecretsImplCodec");
const JwtRsaImplCodec_1 = require("./impl/JwtRsaImplCodec");
const JwtEsImplCodec_1 = require("./impl/JwtEsImplCodec");
const JwtSecretsImpl_1 = require("../../typedef/jwt/impl/JwtSecretsImpl");
const JwtRsaImpl_1 = require("../../typedef/jwt/impl/JwtRsaImpl");
const JwtEsImpl_1 = require("../../typedef/jwt/impl/JwtEsImpl");
class JwtCodec {
static decode(o) {
const type = (0, JwtType_1.JwtTypeFromString)(o.type);
switch (type) {
case JwtType_1.JwtType.SECRETS:
return JwtSecretsImplCodec_1.JwtSecretsImplCodec.decode(o['secrets']);
case JwtType_1.JwtType.RSA:
return JwtRsaImplCodec_1.JwtRsaImplCodec.decode(o['rsa']);
case JwtType_1.JwtType.ES:
return JwtEsImplCodec_1.JwtEsImplCodec.decode(o['es']);
default:
throw new Error('Jwt Invalid: ' + o);
}
}
static encode(jwt) {
const o = {
type: jwt.type.toString()
};
if (jwt instanceof JwtSecretsImpl_1.JwtSecretsImpl) {
o.secrets = JwtSecretsImplCodec_1.JwtSecretsImplCodec.encode(jwt);
}
else if (jwt instanceof JwtRsaImpl_1.JwtRsaImpl) {
o.rsa = JwtRsaImplCodec_1.JwtRsaImplCodec.encode(jwt);
}
else if (jwt instanceof JwtEsImpl_1.JwtEsImpl) {
o.es = JwtEsImplCodec_1.JwtEsImplCodec.encode(jwt);
}
return o;
}
}
exports.JwtCodec = JwtCodec;