/************************************************************************* * * Troven CONFIDENTIAL * __________________ * * (c) 2017-2020 Troven Ventures Pty Ltd * All Rights Reserved. * * NOTICE: All information contained herein is, and remains * the property of Troven Pty Ltd and its licensors, * if any. The intellectual and technical concepts contained * herein are proprietary to Troven Pty Ltd * and its suppliers and may be covered by International and Regional Patents, * patents in process, and are protected by trade secret or copyright law. * Dissemination of this information or reproduction of this material * is strictly forbidden unless prior written permission is obtained * from Troven Pty Ltd. */ import * as _ from "lodash"; import {IChassisFeature, IOperation} from "../interfaces"; import { Request, Response } from "express"; /** * Heartbeat * --------- * Attach a heartbeat to a OpenAPI resource * * @type {{name: string, description: string, title: string, defaults: {path: string}, fn: module.exports.fn}} */ export default class heartbeat implements IChassisFeature { name = "api.heartbeat"; title = "return a simple heartbeat"; fn(operation: IOperation, _options: any): Function { let context = operation.context; return function (_req: Request, res: Response) { let req_uuid = res.getHeader("X-REQUEST-ID"); // simple heartbeat - echos query params - intended for generic correlation if (_options.debug) { context.log( { code: "api:heartbeat", request: req_uuid} ); } res.status(200); res.send({ ok: req_uuid }); }; } };