added stream controller to fileserver

This commit is contained in:
SrGooglo 2023-07-13 15:52:58 +00:00
parent ac1cfb42d6
commit 9dedf59994
2 changed files with 44 additions and 0 deletions

View File

@ -0,0 +1,20 @@
import path from "path"
import createRoutesFromDirectory from "@utils/createRoutesFromDirectory"
import getMiddlewares from "@utils/getMiddlewares"
export default async (router) => {
const routesPath = path.resolve(__dirname, "routes")
const middlewares = await getMiddlewares(["withOptionalAuth"])
for (const middleware of middlewares) {
router.use(middleware)
}
router = createRoutesFromDirectory("routes", routesPath, router)
return {
path: "/stream",
router,
}
}

View File

@ -0,0 +1,24 @@
import { NotFoundError, InternalServerError } from "@shared-classes/Errors"
import mimetypes from "mime-types"
export default async (req, res) => {
const streamPath = req.params[0]
global.storage.getObject(process.env.S3_BUCKET, streamPath, (err, dataStream) => {
if (err) {
console.error(err)
return new InternalServerError(req, res, "Error while getting file from storage")
}
const extname = mimetypes.lookup(streamPath)
// send chunked response
res.status(200)
// set headers
res.setHeader("Content-Type", extname)
res.setHeader("Accept-Ranges", "bytes")
return dataStream.pipe(res)
})
}