UNPKG

@pact-foundation/pact

Version:
90 lines 4.16 kB
"use strict"; var __assign = (this && this.__assign) || function () { __assign = Object.assign || function(t) { for (var s, i = 1, n = arguments.length; i < n; i++) { s = arguments[i]; for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p]; } return t; }; return __assign.apply(this, arguments); }; var __importDefault = (this && this.__importDefault) || function (mod) { return (mod && mod.__esModule) ? mod : { "default": mod }; }; Object.defineProperty(exports, "__esModule", { value: true }); exports.setupMessageProxyApplication = exports.createProxyMessageHandler = exports.providerWithMetadata = exports.findMessageHandler = void 0; var express_1 = __importDefault(require("express")); var body_parser_1 = __importDefault(require("body-parser")); var js_base64_1 = require("js-base64"); var logger_1 = __importDefault(require("../../../common/logger")); // Find a provider message handler, and invoke it var findMessageHandler = function (message, config) { var handler = config.messageProviders ? config.messageProviders[message.description] : undefined; if (!handler) { logger_1.default.error("no handler found for message ".concat(message.description)); return Promise.reject(new Error("No handler found for message \"".concat(message.description, "\".\n Check your \"handlers\" configuration"))); } return Promise.resolve(handler); }; exports.findMessageHandler = findMessageHandler; var hasMetadata = function (o) { return Boolean(o.__pactMessageMetadata); }; var providerWithMetadata = function (provider, metadata) { return function (descriptor) { return Promise.resolve(provider(descriptor)).then(function (message) { return hasMetadata(message) ? { __pactMessageMetadata: __assign(__assign({}, message.__pactMessageMetadata), metadata), message: message, } : { __pactMessageMetadata: metadata, message: message }; }); }; }; exports.providerWithMetadata = providerWithMetadata; // Get the API handler for the verification CLI process to invoke on POST /* var createProxyMessageHandler = function (config) { return function (req, res) { var message = req.body; // Invoke the handler, and return the JSON response body // wrapped in a Message (0, exports.findMessageHandler)(message, config) .then(function (handler) { return handler(message); }) .then(function (messageFromHandler) { if (hasMetadata(messageFromHandler)) { var metadata = (0, js_base64_1.encode)(JSON.stringify(messageFromHandler.__pactMessageMetadata)); res.header('Pact-Message-Metadata', metadata); res.header('PACT_MESSAGE_METADATA', metadata); return res.json(messageFromHandler.message); } return res.json(messageFromHandler); }) .catch(function (e) { return res.status(500).send(e); }); }; }; exports.createProxyMessageHandler = createProxyMessageHandler; // Get the Express app that will run on the HTTP Proxy var setupMessageProxyApplication = function (config) { var app = (0, express_1.default)(); app.use(body_parser_1.default.json()); app.use(body_parser_1.default.urlencoded({ extended: true })); app.use(function (_, res, next) { // TODO: this seems to override the metadata for content-type res.header('Content-Type', 'application/json; charset=utf-8'); next(); }); // Proxy server will respond to Verifier process app.all('/*', (0, exports.createProxyMessageHandler)(config)); return app; }; exports.setupMessageProxyApplication = setupMessageProxyApplication; // // Get the Proxy we'll pass to the CLI for verification // export const setupProxyServer = ( // app: (request: http.IncomingMessage, response: http.ServerResponse) => void // ): http.Server => http.createServer(app).listen(); //# sourceMappingURL=messages.js.map