mirror of
https://github.com/mollersuite/monofile.git
synced 2024-11-23 14:16:26 -08:00
organize
This commit is contained in:
parent
6dc6b12b91
commit
411e01a5c1
|
@ -1,10 +1,7 @@
|
||||||
import bodyParser from "body-parser"
|
|
||||||
import multer, {memoryStorage} from "multer"
|
|
||||||
import cookieParser from "cookie-parser";
|
import cookieParser from "cookie-parser";
|
||||||
import { IntentsBitField, Client } from "discord.js"
|
import { IntentsBitField, Client } from "discord.js"
|
||||||
import express from "express"
|
import express from "express"
|
||||||
import fs from "fs"
|
import fs from "fs"
|
||||||
import axios, { AxiosResponse } from "axios"
|
|
||||||
import bytes from "bytes";
|
import bytes from "bytes";
|
||||||
|
|
||||||
import ServeError from "./lib/errors"
|
import ServeError from "./lib/errors"
|
||||||
|
@ -19,7 +16,6 @@ import * as primaryApi from "./routes/primaryApi";
|
||||||
|
|
||||||
require("dotenv").config()
|
require("dotenv").config()
|
||||||
|
|
||||||
const multerSetup = multer({storage:memoryStorage()})
|
|
||||||
let pkg = require(`${process.cwd()}/package.json`)
|
let pkg = require(`${process.cwd()}/package.json`)
|
||||||
let app = express()
|
let app = express()
|
||||||
let config = require(`${process.cwd()}/config.json`)
|
let config = require(`${process.cwd()}/config.json`)
|
||||||
|
@ -75,67 +71,6 @@ app.get("/", function(req,res) {
|
||||||
res.sendFile(process.cwd()+"/pages/index.html")
|
res.sendFile(process.cwd()+"/pages/index.html")
|
||||||
})
|
})
|
||||||
|
|
||||||
// upload handlers
|
|
||||||
|
|
||||||
app.post("/upload",multerSetup.single('file'),async (req,res) => {
|
|
||||||
if (req.file) {
|
|
||||||
try {
|
|
||||||
let prm = req.header("monofile-params")
|
|
||||||
let params:{[key:string]:any} = {}
|
|
||||||
if (prm) {
|
|
||||||
params = JSON.parse(prm)
|
|
||||||
}
|
|
||||||
|
|
||||||
files.uploadFile({
|
|
||||||
owner: auth.validate(req.cookies.auth),
|
|
||||||
|
|
||||||
uploadId:params.uploadId,
|
|
||||||
name:req.file.originalname,
|
|
||||||
mime:req.file.mimetype
|
|
||||||
},req.file.buffer)
|
|
||||||
.then((uID) => res.send(uID))
|
|
||||||
.catch((stat) => {
|
|
||||||
res.status(stat.status);
|
|
||||||
res.send(`[err] ${stat.message}`)
|
|
||||||
})
|
|
||||||
} catch {
|
|
||||||
res.status(400)
|
|
||||||
res.send("[err] bad request")
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
res.status(400)
|
|
||||||
res.send("[err] bad request")
|
|
||||||
}
|
|
||||||
})
|
|
||||||
|
|
||||||
app.post("/clone", bodyParser.json({type: ["text/plain","application/json"]}) ,(req,res) => {
|
|
||||||
try {
|
|
||||||
axios.get(req.body.url,{responseType:"arraybuffer"}).then((data:AxiosResponse) => {
|
|
||||||
|
|
||||||
files.uploadFile({
|
|
||||||
owner: auth.validate(req.cookies.auth),
|
|
||||||
|
|
||||||
name:req.body.url.split("/")[req.body.url.split("/").length-1] || "generic",
|
|
||||||
mime:data.headers["content-type"],
|
|
||||||
uploadId:req.body.uploadId
|
|
||||||
},Buffer.from(data.data))
|
|
||||||
.then((uID) => res.send(uID))
|
|
||||||
.catch((stat) => {
|
|
||||||
res.status(stat.status);
|
|
||||||
res.send(`[err] ${stat.message}`)
|
|
||||||
})
|
|
||||||
|
|
||||||
}).catch((err) => {
|
|
||||||
console.log(err)
|
|
||||||
res.status(400)
|
|
||||||
res.send(`[err] failed to fetch data`)
|
|
||||||
})
|
|
||||||
} catch {
|
|
||||||
res.status(500)
|
|
||||||
res.send("[err] an error occured")
|
|
||||||
}
|
|
||||||
})
|
|
||||||
|
|
||||||
// serve download page
|
// serve download page
|
||||||
|
|
||||||
app.get("/download/:fileId",(req,res) => {
|
app.get("/download/:fileId",(req,res) => {
|
||||||
|
@ -174,7 +109,7 @@ app.get("/download/:fileId",(req,res) => {
|
||||||
<!-- honestly probably good enough for now -->
|
<!-- honestly probably good enough for now -->
|
||||||
<meta property="twitter:image" content="0">`
|
<meta property="twitter:image" content="0">`
|
||||||
// quick lazy fix as a fallback
|
// quick lazy fix as a fallback
|
||||||
// mayeb i'll improve this later, but probably not.
|
// maybe i'll improve this later, but probably not.
|
||||||
+ ((file.sizeInBytes||0) >= 26214400 ? `
|
+ ((file.sizeInBytes||0) >= 26214400 ? `
|
||||||
<meta property="og:video:width" content="1280">
|
<meta property="og:video:width" content="1280">
|
||||||
<meta property="og:video:height" content="720">` : "")
|
<meta property="og:video:height" content="720">` : "")
|
||||||
|
|
|
@ -2,9 +2,9 @@ import bodyParser from "body-parser";
|
||||||
import express, { Router } from "express";
|
import express, { Router } from "express";
|
||||||
import * as Accounts from "../lib/accounts";
|
import * as Accounts from "../lib/accounts";
|
||||||
import * as auth from "../lib/auth";
|
import * as auth from "../lib/auth";
|
||||||
import bytes from "bytes"
|
import axios, { AxiosResponse } from "axios"
|
||||||
import {writeFile} from "fs";
|
|
||||||
import { type Range } from "range-parser";
|
import { type Range } from "range-parser";
|
||||||
|
import multer, {memoryStorage} from "multer"
|
||||||
|
|
||||||
import ServeError from "../lib/errors";
|
import ServeError from "../lib/errors";
|
||||||
import Files from "../lib/files";
|
import Files from "../lib/files";
|
||||||
|
@ -20,6 +20,8 @@ export function setFilesObj(newFiles:Files) {
|
||||||
files = newFiles
|
files = newFiles
|
||||||
}
|
}
|
||||||
|
|
||||||
|
const multerSetup = multer({storage:memoryStorage()})
|
||||||
|
|
||||||
let config = require(`${process.cwd()}/config.json`)
|
let config = require(`${process.cwd()}/config.json`)
|
||||||
|
|
||||||
|
|
||||||
|
@ -106,3 +108,64 @@ primaryApi.head(["/file/:fileId", "/cpt/:fileId/*", "/:fileId"], (req: express.R
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
|
|
||||||
|
// upload handlers
|
||||||
|
|
||||||
|
primaryApi.post("/upload",multerSetup.single('file'),async (req,res) => {
|
||||||
|
if (req.file) {
|
||||||
|
try {
|
||||||
|
let prm = req.header("monofile-params")
|
||||||
|
let params:{[key:string]:any} = {}
|
||||||
|
if (prm) {
|
||||||
|
params = JSON.parse(prm)
|
||||||
|
}
|
||||||
|
|
||||||
|
files.uploadFile({
|
||||||
|
owner: auth.validate(req.cookies.auth),
|
||||||
|
|
||||||
|
uploadId:params.uploadId,
|
||||||
|
name:req.file.originalname,
|
||||||
|
mime:req.file.mimetype
|
||||||
|
},req.file.buffer)
|
||||||
|
.then((uID) => res.send(uID))
|
||||||
|
.catch((stat) => {
|
||||||
|
res.status(stat.status);
|
||||||
|
res.send(`[err] ${stat.message}`)
|
||||||
|
})
|
||||||
|
} catch {
|
||||||
|
res.status(400)
|
||||||
|
res.send("[err] bad request")
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
res.status(400)
|
||||||
|
res.send("[err] bad request")
|
||||||
|
}
|
||||||
|
})
|
||||||
|
|
||||||
|
primaryApi.post("/clone", bodyParser.json({type: ["text/plain","application/json"]}) ,(req,res) => {
|
||||||
|
try {
|
||||||
|
axios.get(req.body.url,{responseType:"arraybuffer"}).then((data:AxiosResponse) => {
|
||||||
|
|
||||||
|
files.uploadFile({
|
||||||
|
owner: auth.validate(req.cookies.auth),
|
||||||
|
|
||||||
|
name:req.body.url.split("/")[req.body.url.split("/").length-1] || "generic",
|
||||||
|
mime:data.headers["content-type"],
|
||||||
|
uploadId:req.body.uploadId
|
||||||
|
},Buffer.from(data.data))
|
||||||
|
.then((uID) => res.send(uID))
|
||||||
|
.catch((stat) => {
|
||||||
|
res.status(stat.status);
|
||||||
|
res.send(`[err] ${stat.message}`)
|
||||||
|
})
|
||||||
|
|
||||||
|
}).catch((err) => {
|
||||||
|
console.log(err)
|
||||||
|
res.status(400)
|
||||||
|
res.send(`[err] failed to fetch data`)
|
||||||
|
})
|
||||||
|
} catch {
|
||||||
|
res.status(500)
|
||||||
|
res.send("[err] an error occured")
|
||||||
|
}
|
||||||
|
})
|
Loading…
Reference in a new issue