slack-edge
Version:
Slack app development framework for edge functions with streamlined TypeScript support
53 lines • 1.73 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.fromSocketModeToRequest = fromSocketModeToRequest;
exports.fromResponseToSocketModePayload = fromResponseToSocketModePayload;
/**
* Converts a raw Socket Mode message data to slack-edge's request data.
* @param message Socket Mode message data
* @returns slack-edge's request representation
*/
function fromSocketModeToRequest({ url, body, retryNum, retryReason }) {
if (!body) {
return undefined;
}
const payload = JSON.stringify(body);
const headers = {
"content-type": "application/json",
};
if (retryNum) {
headers["x-slack-retry-num"] = retryNum;
}
if (retryReason) {
headers["x-slack-retry-reason"] = retryReason;
}
const options = {
method: "POST",
headers: new Headers(headers),
body: new Blob([payload]).stream(),
duplex: "half", // required when running on Node.js runtime
};
return new Request(url ?? "wss://localhost", options);
}
/**
* Converts slack-edge's response representation to a Socket Mode message.
* @param response slack-edge's response representation
* @returns WebSocket message data
*/
async function fromResponseToSocketModePayload({ response }) {
let message = {};
if (response.body) {
const contentType = response.headers.get("Content-Type");
if (contentType && contentType.startsWith("text/plain")) {
const text = await response.text();
if (text) {
message = { text };
}
}
else {
message = await response.json();
}
}
return message;
}
//# sourceMappingURL=payload-handler.js.map