Why Gemfury? Push, build, and install  RubyGems npm packages Python packages Maven artifacts PHP packages Go Modules Debian packages RPM packages NuGet packages

Repository URL to install this package:

Details    
@skava/graphql / dist / resolvers / stream / microservices.js
Size: Mime:
"use strict";
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
    return new (P || (P = Promise))(function (resolve, reject) {
        function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
        function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
        function step(result) { result.done ? resolve(result.value) : new P(function (resolve) { resolve(result.value); }).then(fulfilled, rejected); }
        step((generator = generator.apply(thisArg, _arguments || [])).next());
    });
};
Object.defineProperty(exports, "__esModule", { value: true });
// const { sign } = require('jsonwebtoken')
const jsonwebtoken_1 = require("jsonwebtoken");
const defaultParams_1 = require("../../endpoints/microservices/defaultParams");
exports.default = {
    Query: {
        getKeyToken: (obj, args, context, info) => __awaiter(this, void 0, void 0, function* () {
            const { alias, requestor } = args;
            const params = {
                alias,
                requestor
            };
            const response = yield context.microservices.getKeyToken(params, undefined);
            // @todo @Anto based on Params we need to get secretKey or service token in a single query
            if (true) {
                const secretKey = generateToken(response);
                const additionalProps = {
                    secretKey
                };
                const serviceToken = yield generateServiceToken(obj, args, context, info, additionalProps);
                return serviceToken;
            }
            else {
                return response;
            }
        }),
        getServiceToken: (obj, args, context, info) => __awaiter(this, void 0, void 0, function* () {
            const response = generateServiceToken(obj, args, context, info);
            return response;
        }),
    },
};
function generateServiceToken(obj, args, context, info, additionalProps) {
    const { requestor } = args;
    const { secretKey } = additionalProps;
    const params = {
        requestor,
        secretKey,
    };
    const serviceTokenParams = getServiceTokenParams(params);
    const serviceToken = context.microservices.getServiceToken(serviceTokenParams, undefined);
    return serviceToken;
}
function getServiceTokenParams(params) {
    // return toServiceTokenParams(formatServiceTokenParams(secretKey))
    return defaultParams_1.toServiceTokenParams(params);
}
function toTimes() {
    // should move this to it's own function
    let timeNow = new Date().getTime();
    timeNow = Math.floor(timeNow / 1000);
    const timeThen = (60 * 60) + timeNow;
    return { then: timeThen, now: timeNow };
}
function toParams(times) {
    // remember to use eslint
    const claims = {
        'requestedServices': [
            'pim'
        ],
        'aud': 'promotionadmin',
        'exp': times.then,
        'iat': times.now,
        'iss': 'SkavaAPIAdmin'
    };
    return claims;
}
function generateToken(secretKeyObj) {
    // const signingKey = '4tmLIS0LtAiEI062y/wdBw=='
    const signingKey = secretKeyObj.key || '';
    if (!signingKey) {
        console.log('generateToken sign-in key is missing', signingKey);
    }
    const times = toTimes();
    const claims = toParams(times);
    const bufferSigner = new Buffer(signingKey, 'base64');
    const token = jsonwebtoken_1.sign(claims, bufferSigner, { algorithm: 'HS512' });
    return token;
}
//# sourceMappingURL=microservices.js.map