UNPKG

panda-sky-client

Version:

Auto-assembling client for APIs deployed with Panda Sky

129 lines (104 loc) 10.1 kB
var createMethod, http, method, parseSignature; import { merge } from "panda-parchment"; import buildAuthorization from "./authorization"; import { requestCheck, responseCheck } from "./validation"; 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; } 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 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 = 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"] = buildAuthorization(authorization); } } // Override global header settings with anything in the method invocation. _context.headers = merge(_context.headers, methodArgs != null ? methodArgs.headers : void 0); return http[context.methodName](lib, _context); }; }; export default createMethod; //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi9Vc2Vycy9kYXZpZC9yZXBvcy9wYW5kYS1za3ktY2xpZW50L3NyYy9tZXRob2QuY29mZmVlIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLElBQUEsWUFBQSxFQUFBLElBQUEsRUFBQSxNQUFBLEVBQUEsY0FBQTtBQUFBLFNBQUEsS0FBQSxRQUFBLGlCQUFBO0FBQ0EsT0FBQSxrQkFBQSxNQUFBLGlCQUFBO0FBQ0EsU0FBQSxZQUFBLEVBQUEsYUFBQSxRQUFBLGNBQUE7O0FBRUEsTUFBQSxHQUFTLFVBQUEsSUFBQSxFQUFBO1NBQ1AsZ0JBQUEsR0FBQSxFQUFBLE9BQUEsRUFBQTtBQUVFLFFBQUEsS0FBQSxFQUFBLElBQUEsRUFBQSxRQUFBLENBRkYsQzs7QUFFRSxJQUFBLElBQUEsR0FDRTtBQUFBLE1BQUEsTUFBQSxFQUFBLElBQUE7QUFDQSxNQUFBLE9BQUEsRUFBUyxPQUFPLENBRGhCLE9BQUE7QUFFQSxNQUFBLElBQUEsRUFBTTtBQUZOLEtBREY7O0FBS0EsUUFBd0MsT0FBQSxDQUFBLFlBQUEsSUFBeEMsSUFBQSxFQUFBO0FBQUEsTUFBQSxJQUFJLENBQUosUUFBQSxHQUFnQixPQUFPLENBQXZCLFlBQUE7OztBQUNBLFFBQTRCLE9BQUEsQ0FBQSxJQUFBLElBQTVCLElBQUEsRUFBQTtBQUFBLE1BQUEsSUFBSSxDQUFKLElBQUEsR0FBWSxPQUFPLENBQW5CLElBQUE7OztBQUVBLElBQUEsWUFBQSxDQUFBLEdBQUEsRUFSQSxPQVFBLENBQUEsQ0FWRixDOztBQWFFLElBQUEsS0FBQSxHQUFRLEdBQUcsQ0FBQyxLQUFaO0FBQ0EsSUFBQSxRQUFBLEdBQVcsTUFBTSxLQUFBLENBQU0sT0FBTyxDQUFiLElBQUEsRUFBQSxJQUFBLEVBQU4sT0FBTSxDQUFqQjtBQUVBLFdBQUEsTUFBTSxhQUFBLENBQUEsR0FBQSxFQUFBLE9BQUEsRUFBTixRQUFNLENBQU47QUFoQkYsRztBQURPLENBQVQ7O0FBbUJBLElBQUEsR0FDRTtBQUFBLEVBQUEsR0FBQSxF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QUFBLENBRHRDLGFBQ3NDLENBQXBDO0FBVko7QUFQQSxLQURGLEM7OztBQXFCRSxJQUFBLFFBQVEsQ0FBUixPQUFBLEdBQW1CLEtBQUEsQ0FBTSxRQUFRLENBQWQsT0FBQSxFQUFBLFVBQUEsSUFBQSxJQUFBLEdBQXdCLFVBQVUsQ0FBRSxPQUFwQyxHQUFvQyxLQUFwQyxDQUFBLENBQW5CO1dBRUEsSUFBSyxDQUFBLE9BQU8sQ0FBWixVQUFLLENBQUwsQ0FBQSxHQUFBLEVBQUEsUUFBQSxDO0FBdkJGLEc7QUFEYSxDQUFmOztBQTBCQSxlQUFlLFlBQWYiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge21lcmdlfSBmcm9tIFwicGFuZGEtcGFyY2htZW50XCJcbmltcG9ydCBidWlsZEF1dGhvcml6YXRpb24gZnJvbSBcIi4vYXV0aG9yaXphdGlvblwiXG5pbXBvcnQge3JlcXVlc3RDaGVjaywgcmVzcG9uc2VDaGVja30gZnJvbSBcIi4vdmFsaWRhdGlvblwiXG5cbm1ldGhvZCA9IChuYW1lKSAtPlxuICAobGliLCBjb250ZXh0KSAtPlxuICAgICMgU2V0dXAgdGhlIEZldGNoIGluaXQgb2JqZWN0XG4gICAgaW5pdCA9XG4gICAgICBtZXRob2Q6IG5hbWVcbiAgICAgIGhlYWRlcnM6IGNvbnRleHQuaGVhZGVyc1xuICAgICAgbW9kZTogXCJjb3JzXCJcblxuICAgIGluaXQucmVkaXJlY3QgPSBjb250ZXh0LnNob3VsZEZvbGxvdyBpZiBjb250ZXh0LnNob3VsZEZvbGxvdz9cbiAgICBpbml0LmJvZHkgPSBjb250ZXh0LmJvZHkgaWYgY29udGV4dC5ib2R5P1xuXG4gICAgcmVxdWVzdENoZWNrIGxpYiwgY29udGV4dFxuXG4gICAgIyBOT1RFOiBUaGVyZSBpcyBzb21ldGhpbmcgc3BlY2lhbCBhYm91dCBmZXRjaCBpbiB0aGUgYnJvd3Nlci5cbiAgICBmZXRjaCA9IGxpYi5mZXRjaFxuICAgIHJlc3BvbnNlID0gYXdhaXQgZmV0Y2ggY29udGV4dC5wYXRoLCBpbml0LCBjb250ZXh0XG5cbiAgICBhd2FpdCByZXNwb25zZUNoZWNrIGxpYiwgY29udGV4dCwgcmVzcG9uc2VcblxuaHR0cCA9XG4gIGdldDogbWV0aG9kIFwiR0VUXCJcbiAgcG9zdDogbWV0aG9kIFwiUE9TVFwiXG4gIGRlbGV0ZTogbWV0aG9kIFwiREVMRVRFXCJcbiAgcHV0OiBtZXRob2QgXCJQVVRcIlxuICBwYXRjaDogbWV0aG9kIFwiUEFUQ0hcIlxuICBoZWFkOiBtZXRob2QgXCJIRUFEXCJcbiAgb3B0aW9uczogbWV0aG9kIFwiT1BUSU9OU1wiXG5cbnBhcnNlU2lnbmF0dXJlID0gKHNpZ25hdHVyZXMpIC0+XG4gIHtyZXNwb25zZX0gPSBzaWduYXR1cmVzXG4gIHN0YXR1cyA9IHJlc3BvbnNlLnN0YXR1c1swXVxuXG4gIGhlYWRlcnMgPSBbXVxuICBpZiBzdGF0dXMgPT0gMjAxXG4gICAgaGVhZGVycy5wdXNoIFwibG9jYXRpb25cIlxuICBpZiByZXNwb25zZS5jYWNoZT9cbiAgICB7ZXRhZywgbWF4QWdlLCBsYXN0TW9kaWZpZWR9ID0gcmVzcG9uc2UuY2FjaGVcbiAgICBpZiBldGFnP1xuICAgICAgaGVhZGVycy5wdXNoIFwiZXRhZ1wiXG4gICAgaWYgbWF4QWdlPyB8fCBsYXN0TW9kaWZpZWQ/XG4gICAgICBoZWFkZXJzLnB1c2ggXCJjYWNoZS1jb250cm9sXCJcblxuICB7c3RhdHVzLCBoZWFkZXJzfVxuXG5jcmVhdGVNZXRob2QgPSAobGliLCBjb250ZXh0LCBtZXRob2QpIC0+XG4gIChtZXRob2RBcmdzKSAtPlxuICAgIGhlYWRlcnMgPSB7fVxuICAgIGhlYWRlcnNba10gPSB2IGZvciBrLCB2IG9mIGxpYi5oZWFkZXJzXG5cbiAgICBfY29udGV4dCA9IG1lcmdlIGNvbnRleHQsXG4gICAgICBoZWFkZXJzOiBoZWFkZXJzXG4gICAgICBleHBlY3RlZDogcGFyc2VTaWduYXR1cmUgY29udGV4dC5zaWduYXR1cmVzXG5cbiAgICBpZiBtZXRob2RBcmdzXG4gICAgICB7Ym9keSwgYXV0aG9yaXphdGlvbiwgc2hvdWxkRm9sbG93fSA9IG1ldGhvZEFyZ3NcbiAgICAgIF9jb250ZXh0LnNob3VsZEZvbGxvdyA9IHNob3VsZEZvbGxvd1xuICAgICAgaWYgYm9keT9cbiAgICAgICAgIyBUT0RPOiB0aGlzIHdpbGwgbGF0ZXIgcmVseSBvbiB0aGUgbWV0aG9kIHNpZ25hdHVyZVxuICAgICAgICBfY29udGV4dC5ib2R5ID0gSlNPTi5zdHJpbmdpZnkgYm9keVxuICAgICAgICBfY29udGV4dC5oZWFkZXJzW1wiY29udGVudC10eXBlXCJdID89IFwiYXBwbGljYXRpb24vanNvblwiXG4gICAgICBpZiBjb250ZXh0Lm1ldGhvZE5hbWUgaW4gW1wiZ2V0XCIsIFwicHV0XCIsIFwicG9zdFwiLCBcInBhdGNoXCJdXG4gICAgICAgIF9jb250ZXh0LmhlYWRlcnNbXCJhY2NlcHRcIl0gPz0gXCJhcHBsaWNhdGlvbi9qc29uXCJcbiAgICAgIGlmIGF1dGhvcml6YXRpb24/XG4gICAgICAgIF9jb250ZXh0LmhlYWRlcnNbXCJhdXRob3JpemF0aW9uXCJdID0gYnVpbGRBdXRob3JpemF0aW9uIGF1dGhvcml6YXRpb25cblxuICAgICMgT3ZlcnJpZGUgZ2xvYmFsIGhlYWRlciBzZXR0aW5ncyB3aXRoIGFueXRoaW5nIGluIHRoZSBtZXRob2QgaW52b2NhdGlvbi5cbiAgICBfY29udGV4dC5oZWFkZXJzID0gbWVyZ2UgX2NvbnRleHQuaGVhZGVycywgbWV0aG9kQXJncz8uaGVhZGVyc1xuXG4gICAgaHR0cFtjb250ZXh0Lm1ldGhvZE5hbWVdIGxpYiwgX2NvbnRleHRcblxuZXhwb3J0IGRlZmF1bHQgY3JlYXRlTWV0aG9kXG4iXSwic291cmNlUm9vdCI6IiJ9 //# sourceURL=/Users/david/repos/panda-sky-client/src/method.coffee