import { WebClient } from "@slack/web-api";
import * as wmill from "windmill-client";
import { S3Object } from "windmill-client";
type Slack = {
token: string;
};
/**
* Send app report
* Upload an app report (PDF or PNG) from Windmill object storage to a Slack channel.
*/
export async function main(
slack: Slack,
channel: string,
screenshot: S3Object,
app_path: string,
kind: "pdf" | "png",
) {
const bytes = await wmill.loadS3File(screenshot);
if (!bytes) {
throw new Error("Could not load the file from object storage");
}
const fullAppPath =
Bun.env["WM_BASE_URL"] +
"/apps/get/" +
app_path +
"?workspace=" +
Bun.env["WM_WORKSPACE"];
const client = new WebClient(slack.token);
return await client.filesUploadV2({
channel_id: channel,
file: Buffer.from(bytes),
filename: "report." + kind,
initial_comment: "App report of " + " <" + fullAppPath + "|" + app_path + ">",
});
}
Submitted by hugo989 5 days ago
type Slack = {
token: string;
};
type Base64 = string
export async function main(
slack: Slack,
channel: string,
screenshot: Base64,
app_path: string,
kind: 'pdf' | 'png',
) {
const formData = new FormData();
formData.append("token", slack.token);
formData.append("file", new Blob([Buffer.from(screenshot, "base64")], {
type: kind === "pdf" ? "application/pdf" : "image/png"
}), "report." + kind);
formData.append("channels", channel);
const fullAppPath = Bun.env["WM_BASE_URL"] + '/apps/get/' + app_path + '?workspace=' + Bun.env["WM_WORKSPACE"]
formData.append("initial_comment", "App report of " + " <" + fullAppPath + "|" + app_path + ">");
return await (
await fetch("https://slack.com/api/files.upload", {
method: "POST",
body: formData,
})
).json();
}
Submitted by hugo697 633 days ago
type Slack = {
token: string;
};
type Base64 = string
export async function main(
slack: Slack,
channel: string,
screenshot: Base64,
app_path: string,
kind: 'pdf' | 'png',
) {
const formData = new FormData();
formData.append("token", slack.token);
formData.append("file", new Blob([Buffer.from(screenshot, "base64")], {
type: kind === "pdf" ? "application/pdf" : "image/png"
}), "report." + kind);
formData.append("channels", channel);
const fullAppPath = Bun.env["WM_BASE_URL"] + '/apps/get/' + app_path + '?workspace=' + Bun.env["WM_WORKSPACE"]
formData.append("initial_comment", "App report of " + " <" + fullAppPath + "|" + app_path + ">");
return await (
await fetch("https://slack.com/api/files.upload", {
method: "POST",
body: formData,
})
).json();
}
Submitted by hugo697 825 days ago
type Slack = {
token: string;
};
export async function main(
slack: Slack,
channel: string,
pdf: string,
app_path: string
) {
const formData = new FormData();
formData.append("token", slack.token);
formData.append("file", new Blob([Buffer.from(pdf, "base64")]), "report.pdf");
formData.append("channels", channel);
formData.append("initial_comment", "App report of " + app_path);
return await (
await fetch("https://slack.com/api/files.upload", {
method: "POST",
body: formData,
})
).json();
}
Submitted by hugo697 825 days ago
type Slack = {
token: string;
};
type Base64 = string
export async function main(
slack: Slack,
channel: string,
screenshot: Base64,
app_path: string,
kind: 'pdf' | 'png',
) {
const formData = new FormData();
formData.append("token", slack.token);
formData.append("file", new Blob([Buffer.from(screenshot, "base64")], {
type: kind === "pdf" ? "application/pdf" : "image/png"
}), "report." + kind);
formData.append("channels", channel);
const fullAppPath = Bun.env["WM_BASE_URL"] + '/apps/get/' + app_path + '?workspace=' + Bun.env["WM_WORKSPACE"]
formData.append("initial_comment", "App report of " + " <" + fullAppPath + "|" + app_path + ">");
return await (
await fetch("https://slack.com/api/files.upload", {
method: "POST",
body: formData,
})
).json();
}
Submitted by hugo697 917 days ago
type Slack = {
token: string;
};
export async function main(
slack: Slack,
channel: string,
pdf: string,
app_path: string
) {
const formData = new FormData();
formData.append("token", slack.token);
formData.append("file", new Blob([Buffer.from(pdf, "base64")]), "report.pdf");
formData.append("channels", channel);
formData.append("initial_comment", "App report of " + app_path);
return await (
await fetch("https://slack.com/api/files.upload", {
method: "POST",
body: formData,
})
).json();
}
Submitted by hugo697 922 days ago