slack-edge
Version:
Slack app development framework for edge functions with streamlined TypeScript support
51 lines • 1.96 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.toCompleteResponse = toCompleteResponse;
/**
* Builds a complete HTTP response data
* @param slackResponse slack-edge's response representation
* @returns an HTTP response
*/
function toCompleteResponse(slackResponse) {
if (!slackResponse) {
return new Response("", {
status: 200,
headers: { "Content-Type": "text/plain" },
});
}
if (typeof slackResponse === "string") {
return new Response(slackResponse, {
status: 200,
headers: { "Content-Type": "text/plain;charset=utf-8" },
});
}
let completeResponse = {};
if (Object.prototype.hasOwnProperty.call(slackResponse, "text") || Object.prototype.hasOwnProperty.call(slackResponse, "blocks")) {
completeResponse = { status: 200, body: slackResponse };
}
else if (Object.prototype.hasOwnProperty.call(slackResponse, "response_action")) {
completeResponse = { status: 200, body: slackResponse };
}
else if (Object.prototype.hasOwnProperty.call(slackResponse, "options") ||
Object.prototype.hasOwnProperty.call(slackResponse, "option_groups")) {
completeResponse = { status: 200, body: slackResponse };
}
else {
completeResponse = slackResponse;
}
const status = completeResponse.status ? completeResponse.status : 200;
let contentType = completeResponse.contentType ? completeResponse.contentType : "text/plain;charset=utf-8";
let bodyString = "";
if (typeof completeResponse.body === "object") {
contentType = "application/json;charset=utf-8";
bodyString = JSON.stringify(completeResponse.body);
}
else {
bodyString = completeResponse.body || "";
}
return new Response(bodyString, {
status,
headers: { "Content-Type": contentType },
});
}
//# sourceMappingURL=response.js.map