UNPKG

panda-sky-client

Version:

Auto-assembling client for APIs deployed with Panda Sky

142 lines (111 loc) 10.3 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.default = void 0; var _pandaParchment = require("panda-parchment"); var _authorization = _interopRequireDefault(require("./authorization")); var _validation = require("./validation"); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } var createMethod, http, method, parseSignature; method = function (name) { return async function (lib, context) { var fetch, init, response; // Setup the Fetch init object init = { method: name, headers: context.headers, mode: "cors" }; if (context.shouldFollow != null) { init.redirect = context.shouldFollow; } if (context.body != null) { init.body = context.body; } (0, _validation.requestCheck)(lib, context); // NOTE: There is something special about fetch in the browser. fetch = lib.fetch; response = await fetch(context.path, init, context); return await (0, _validation.responseCheck)(lib, context, response); }; }; http = { get: method("GET"), post: method("POST"), delete: method("DELETE"), put: method("PUT"), patch: method("PATCH"), head: method("HEAD"), options: method("OPTIONS") }; parseSignature = function (signatures) { var etag, headers, lastModified, maxAge, response, status; ({ response } = signatures); status = response.status[0]; headers = []; if (status === 201) { headers.push("location"); } if (response.cache != null) { ({ etag, maxAge, lastModified } = response.cache); if (etag != null) { headers.push("etag"); } if (maxAge != null || lastModified != null) { headers.push("cache-control"); } } return { status, headers }; }; createMethod = function (lib, context, method) { return function (methodArgs) { var _context, authorization, base, base1, body, headers, k, ref, ref1, shouldFollow, v; headers = {}; ref = lib.headers; for (k in ref) { v = ref[k]; headers[k] = v; } _context = (0, _pandaParchment.merge)(context, { headers: headers, expected: parseSignature(context.signatures) }); if (methodArgs) { ({ body, authorization, shouldFollow } = methodArgs); _context.shouldFollow = shouldFollow; if (body != null) { // TODO: this will later rely on the method signature _context.body = JSON.stringify(body); if ((base = _context.headers)["content-type"] == null) { base["content-type"] = "application/json"; } } if ((ref1 = context.methodName) === "get" || ref1 === "put" || ref1 === "post" || ref1 === "patch") { if ((base1 = _context.headers)["accept"] == null) { base1["accept"] = "application/json"; } } if (authorization != null) { _context.headers["authorization"] = (0, _authorization.default)(authorization); } } // Override global header settings with anything in the method invocation. _context.headers = (0, _pandaParchment.merge)(_context.headers, methodArgs != null ? methodArgs.headers : void 0); return http[context.methodName](lib, _context); }; }; var _default = createMethod; exports.default = _default; //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi9Vc2Vycy9kYXZpZC9yZXBvcy9wYW5kYS1za3ktY2xpZW50L3NyYy9tZXRob2QuY29mZmVlIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7QUFBQTs7QUFDQTs7QUFDQTs7OztBQUZBLElBQUEsWUFBQSxFQUFBLElBQUEsRUFBQSxNQUFBLEVBQUEsY0FBQTs7QUFJQSxNQUFBLEdBQVMsVUFBQSxJQUFBLEVBQUE7U0FDUCxnQkFBQSxHQUFBLEVBQUEsT0FBQSxFQUFBO0FBRUUsUUFBQSxLQUFBLEVBQUEsSUFBQSxFQUFBLFFBQUEsQ0FGRixDOztBQUVFLElBQUEsSUFBQSxHQUNFO0FBQUEsTUFBQSxNQUFBLEVBQUEsSUFBQTtBQUNBLE1BQUEsT0FBQSxFQUFTLE9BQU8sQ0FEaEIsT0FBQTtBQUVBLE1BQUEsSUFBQSxFQUFNO0FBRk4sS0FERjs7QUFLQSxRQUF3QyxPQUFBLENBQUEsWUFBQSxJQUF4QyxJQUFBLEVBQUE7QUFBQSxNQUFBLElBQUksQ0FBSixRQUFBLEdBQWdCLE9BQU8sQ0FBdkIsWUFBQTs7O0FBQ0EsUUFBNEIsT0FBQSxDQUFBLElBQUEsSUFBNUIsSUFBQSxFQUFBO0FBQUEsTUFBQSxJQUFJLENBQUosSUFBQSxHQUFZLE9BQU8sQ0FBbkIsSUFBQTs7O0FBRUEsa0NBQUEsR0FBQSxFQVJBLE9BUUEsRUFWRixDOztBQWFFLElBQUEsS0FBQSxHQUFRLEdBQUcsQ0FBQyxLQUFaO0FBQ0EsSUFBQSxRQUFBLEdBQVcsTUFBTSxLQUFBLENBQU0sT0FBTyxDQUFiLElBQUEsRUFBQSxJQUFBLEVBQU4sT0FBTSxDQUFqQjtBQUVBLFdBQUEsTUFBTSwrQkFBQSxHQUFBLEVBQUEsT0FBQSxFQUFOLFFBQU0sQ0FBTjtBQWhCRixHO0FBRE8sQ0FBVDs7QUFtQkEsSUFBQSxHQUNFO0FBQUEsRUFBQSxHQUFBLEVBQUssTUFBQSxDQUFMLEtBQUssQ0FBTDtBQUNBLEVBQUEsSUFBQSxFQUFNLE1BQUEsQ0FETixNQUNNLENBRE47QUFFQSxFQUFBLE1BQUEs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LE9BQUEsRUFBQSxVQUFBLElBQUEsSUFBQSxHQUF3QixVQUFVLENBQUUsT0FBcEMsR0FBb0MsS0FBcEMsQ0FBQSxDQUFuQjtXQUVBLElBQUssQ0FBQSxPQUFPLENBQVosVUFBSyxDQUFMLENBQUEsR0FBQSxFQUFBLFFBQUEsQztBQXZCRixHO0FBRGEsQ0FBZjs7ZUEwQmUsWSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7bWVyZ2V9IGZyb20gXCJwYW5kYS1wYXJjaG1lbnRcIlxuaW1wb3J0IGJ1aWxkQXV0aG9yaXphdGlvbiBmcm9tIFwiLi9hdXRob3JpemF0aW9uXCJcbmltcG9ydCB7cmVxdWVzdENoZWNrLCByZXNwb25zZUNoZWNrfSBmcm9tIFwiLi92YWxpZGF0aW9uXCJcblxubWV0aG9kID0gKG5hbWUpIC0+XG4gIChsaWIsIGNvbnRleHQpIC0+XG4gICAgIyBTZXR1cCB0aGUgRmV0Y2ggaW5pdCBvYmplY3RcbiAgICBpbml0ID1cbiAgICAgIG1ldGhvZDogbmFtZVxuICAgICAgaGVhZGVyczogY29udGV4dC5oZWFkZXJzXG4gICAgICBtb2RlOiBcImNvcnNcIlxuXG4gICAgaW5pdC5yZWRpcmVjdCA9IGNvbnRleHQuc2hvdWxkRm9sbG93IGlmIGNvbnRleHQuc2hvdWxkRm9sbG93P1xuICAgIGluaXQuYm9keSA9IGNvbnRleHQuYm9keSBpZiBjb250ZXh0LmJvZHk/XG5cbiAgICByZXF1ZXN0Q2hlY2sgbGliLCBjb250ZXh0XG5cbiAgICAjIE5PVEU6IFRoZXJlIGlzIHNvbWV0aGluZyBzcGVjaWFsIGFib3V0IGZldGNoIGluIHRoZSBicm93c2VyLlxuICAgIGZldGNoID0gbGliLmZldGNoXG4gICAgcmVzcG9uc2UgPSBhd2FpdCBmZXRjaCBjb250ZXh0LnBhdGgsIGluaXQsIGNvbnRleHRcblxuICAgIGF3YWl0IHJlc3BvbnNlQ2hlY2sgbGliLCBjb250ZXh0LCByZXNwb25zZVxuXG5odHRwID1cbiAgZ2V0OiBtZXRob2QgXCJHRVRcIlxuICBwb3N0OiBtZXRob2QgXCJQT1NUXCJcbiAgZGVsZXRlOiBtZXRob2QgXCJERUxFVEVcIlxuICBwdXQ6IG1ldGhvZCBcIlBVVFwiXG4gIHBhdGNoOiBtZXRob2QgXCJQQVRDSFwiXG4gIGhlYWQ6IG1ldGhvZCBcIkhFQURcIlxuICBvcHRpb25zOiBtZXRob2QgXCJPUFRJT05TXCJcblxucGFyc2VTaWduYXR1cmUgPSAoc2lnbmF0dXJlcykgLT5cbiAge3Jlc3BvbnNlfSA9IHNpZ25hdHVyZXNcbiAgc3RhdHVzID0gcmVzcG9uc2Uuc3RhdHVzWzBdXG5cbiAgaGVhZGVycyA9IFtdXG4gIGlmIHN0YXR1cyA9PSAyMDFcbiAgICBoZWFkZXJzLnB1c2ggXCJsb2NhdGlvblwiXG4gIGlmIHJlc3BvbnNlLmNhY2hlP1xuICAgIHtldGFnLCBtYXhBZ2UsIGxhc3RNb2RpZmllZH0gPSByZXNwb25zZS5jYWNoZVxuICAgIGlmIGV0YWc/XG4gICAgICBoZWFkZXJzLnB1c2ggXCJldGFnXCJcbiAgICBpZiBtYXhBZ2U/IHx8IGxhc3RNb2RpZmllZD9cbiAgICAgIGhlYWRlcnMucHVzaCBcImNhY2hlLWNvbnRyb2xcIlxuXG4gIHtzdGF0dXMsIGhlYWRlcnN9XG5cbmNyZWF0ZU1ldGhvZCA9IChsaWIsIGNvbnRleHQsIG1ldGhvZCkgLT5cbiAgKG1ldGhvZEFyZ3MpIC0+XG4gICAgaGVhZGVycyA9IHt9XG4gICAgaGVhZGVyc1trXSA9IHYgZm9yIGssIHYgb2YgbGliLmhlYWRlcnNcblxuICAgIF9jb250ZXh0ID0gbWVyZ2UgY29udGV4dCxcbiAgICAgIGhlYWRlcnM6IGhlYWRlcnNcbiAgICAgIGV4cGVjdGVkOiBwYXJzZVNpZ25hdHVyZSBjb250ZXh0LnNpZ25hdHVyZXNcblxuICAgIGlmIG1ldGhvZEFyZ3NcbiAgICAgIHtib2R5LCBhdXRob3JpemF0aW9uLCBzaG91bGRGb2xsb3d9ID0gbWV0aG9kQXJnc1xuICAgICAgX2NvbnRleHQuc2hvdWxkRm9sbG93ID0gc2hvdWxkRm9sbG93XG4gICAgICBpZiBib2R5P1xuICAgICAgICAjIFRPRE86IHRoaXMgd2lsbCBsYXRlciByZWx5IG9uIHRoZSBtZXRob2Qgc2lnbmF0dXJlXG4gICAgICAgIF9jb250ZXh0LmJvZHkgPSBKU09OLnN0cmluZ2lmeSBib2R5XG4gICAgICAgIF9jb250ZXh0LmhlYWRlcnNbXCJjb250ZW50LXR5cGVcIl0gPz0gXCJhcHBsaWNhdGlvbi9qc29uXCJcbiAgICAgIGlmIGNvbnRleHQubWV0aG9kTmFtZSBpbiBbXCJnZXRcIiwgXCJwdXRcIiwgXCJwb3N0XCIsIFwicGF0Y2hcIl1cbiAgICAgICAgX2NvbnRleHQuaGVhZGVyc1tcImFjY2VwdFwiXSA/PSBcImFwcGxpY2F0aW9uL2pzb25cIlxuICAgICAgaWYgYXV0aG9yaXphdGlvbj9cbiAgICAgICAgX2NvbnRleHQuaGVhZGVyc1tcImF1dGhvcml6YXRpb25cIl0gPSBidWlsZEF1dGhvcml6YXRpb24gYXV0aG9yaXphdGlvblxuXG4gICAgIyBPdmVycmlkZSBnbG9iYWwgaGVhZGVyIHNldHRpbmdzIHdpdGggYW55dGhpbmcgaW4gdGhlIG1ldGhvZCBpbnZvY2F0aW9uLlxuICAgIF9jb250ZXh0LmhlYWRlcnMgPSBtZXJnZSBfY29udGV4dC5oZWFkZXJzLCBtZXRob2RBcmdzPy5oZWFkZXJzXG5cbiAgICBodHRwW2NvbnRleHQubWV0aG9kTmFtZV0gbGliLCBfY29udGV4dFxuXG5leHBvcnQgZGVmYXVsdCBjcmVhdGVNZXRob2RcbiJdLCJzb3VyY2VSb290IjoiIn0= //# sourceURL=/Users/david/repos/panda-sky-client/src/method.coffee