(
_: IpcMainInvokeEvent,
fileBuffer: ArrayBuffer,
filename: string
)
| 275 | } |
| 276 | |
| 277 | export async function uploadToTmpfiles( |
| 278 | _: IpcMainInvokeEvent, |
| 279 | fileBuffer: ArrayBuffer, |
| 280 | filename: string |
| 281 | ): Promise<NativeUploadResult> { |
| 282 | try { |
| 283 | const response = await multipartFetch("https://tmpfiles.org/api/v1/upload", {}, "file", fileBuffer, filename); |
| 284 | |
| 285 | if (!response.ok) { |
| 286 | const errorText = await response.text(); |
| 287 | return { success: false, error: `Upload failed: ${response.status} ${errorText}` }; |
| 288 | } |
| 289 | |
| 290 | const data = await response.json() as { status?: string; data?: { url?: string; }; }; |
| 291 | const rawUrl = data.data?.url || ""; |
| 292 | if (!rawUrl || data.status !== "success") { |
| 293 | return { success: false, error: "No URL returned from upload" }; |
| 294 | } |
| 295 | |
| 296 | const url = rawUrl.includes("tmpfiles.org/") && !rawUrl.includes("/dl/") |
| 297 | ? rawUrl.replace(/tmpfiles\.org\/(\d+)/, "tmpfiles.org/dl/$1") |
| 298 | : rawUrl; |
| 299 | |
| 300 | return { success: true, url }; |
| 301 | } catch (e) { |
| 302 | return { success: false, error: e instanceof Error ? e.message : "Unknown error" }; |
| 303 | } |
| 304 | } |
| 305 | |
| 306 | export async function uploadToBuzzheavier( |
| 307 | _: IpcMainInvokeEvent, |
nothing calls this directly
no test coverage detected