/************************************************************************* * * 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 assert from "assert"; import {IChassisFeature, IOperation} from "../interfaces"; /** * not_found * --------- * Used when a method is not found * * @type {{name: string, title: string, fn: module.exports.fn}} */ export default class not_found implements IChassisFeature { name = "api.not_found"; title = "Return a 404 is no matching route is found"; fn(operation: IOperation, _options: any): Function { let context = operation.context; assert(context, "missing context"); let options = _options as any; return function (req: any, res: any, next: any) { assert ( req && res && next, "invalid middleware" ); res.status(404); res.send({ message: options.message || "not found"}); }; } }