mirror of
https://github.com/get-drexa/drive.git
synced 2025-12-01 05:51:39 +00:00
40 lines
913 B
TypeScript
40 lines
913 B
TypeScript
import { api } from "@fileone/convex/api"
|
|
import { newRouter } from "./router"
|
|
|
|
const r = newRouter().basePath("/files")
|
|
|
|
r.get(":shareToken", async (c) => {
|
|
const shareToken = c.req.param("shareToken")
|
|
if (!shareToken) {
|
|
return c.json({ error: "not found" }, 404)
|
|
}
|
|
|
|
const fileShare = await c.var.convex.query(api.fileshare.findFileShare, {
|
|
apiKey: c.var.apiKey,
|
|
shareToken,
|
|
})
|
|
if (!fileShare) {
|
|
return c.json({ error: "not found" }, 404)
|
|
}
|
|
|
|
const fileUrl = await c.var.convex.query(api.filesystem.getStorageUrl, {
|
|
apiKey: c.var.apiKey,
|
|
storageId: fileShare.storageId,
|
|
})
|
|
if (!fileUrl) {
|
|
return c.json({ error: "not found" }, 404)
|
|
}
|
|
|
|
const fileResponse = await fetch(fileUrl)
|
|
if (!fileResponse.ok) {
|
|
return c.json({ error: "not found" }, 404)
|
|
}
|
|
|
|
return new Response(fileResponse.body, {
|
|
status: fileResponse.status,
|
|
headers: fileResponse.headers,
|
|
})
|
|
})
|
|
|
|
export { r as files }
|