mach
Version:
HTTP for JavaScript
53 lines (44 loc) • 1.51 kB
JavaScript
;
var objectAssign = require("object-assign");
var sendRequest = require("../utils/sendRequest");
var Location = require("../Location");
function defaultApp(conn) {
return sendRequest(conn, conn.location);
}
module.exports = function (mach) {
mach.call = require("../utils/callApp");
["DELETE", "GET", "HEAD", "OPTIONS", "POST", "PUT", "TRACE"].forEach(function (method) {
var property = method.toLowerCase();
mach[property] = function (app, options, modifier) {
if (typeof app !== "function") {
modifier = options;
if (typeof app === "string") {
// get(url, modifier)
options = { url: app };
} else if (app instanceof Location) {
// get(location, modifier)
options = { location: app };
} else {
// get(options, modifier)
options = objectAssign({}, app || {});
}
app = defaultApp;
} else if (typeof options === "string") {
// get(app, url, modifier)
options = { url: options };
} else if (options instanceof Location) {
// get(app, location, modifier)
options = { location: options };
} else if (typeof options !== "object") {
// get(app, modifier)
modifier = options;
options = {};
} else {
// get(app, options, modifier)
options = objectAssign({}, options || {});
}
options.method = method;
return mach.call(app, options, modifier);
};
});
};