This commit is contained in:
Karol Wypchlo 2021-09-29 19:25:08 +02:00
parent c1b454dc10
commit a6f428db82
No known key found for this signature in database
GPG Key ID: C92C016317A964D0
1 changed files with 33 additions and 12 deletions

View File

@ -3,10 +3,23 @@ import express, { Request, Response } from "express";
import { rmdirSync, unlinkSync } from "fs";
import { extension as toExtension } from "mime-types";
import { Collection } from "mongodb";
import { API_HOSTNAME, API_PORT, MONGO_CONNECTIONSTRING, MONGO_DBNAME, UPLOAD_PATH } from "./consts";
import {
API_HOSTNAME,
API_PORT,
MONGO_CONNECTIONSTRING,
MONGO_DBNAME,
UPLOAD_PATH,
} from "./consts";
import { MongoDB } from "./mongodb";
import { IRecord } from "./types";
import { contentType, download, extractArchive, isDirectory, uploadDirectory, uploadFile } from "./utils";
import {
contentType,
download,
extractArchive,
isDirectory,
uploadDirectory,
uploadFile,
} from "./utils";
require("dotenv").config();
@ -39,21 +52,26 @@ require("dotenv").config();
});
})();
async function handleGetLink(req: Request, res: Response, recordsDB: Collection<IRecord>) {
async function handleGetLink(
req: Request,
res: Response,
recordsDB: Collection<IRecord>
) {
try {
const { cid } = req.params;
const record = await recordsDB.findOne({ cid });
if (record) {
if (record.skylink) {
res.status(200).send({ skylink: record.skylink });
return;
}
} else {
// insert an empty record for the cid
await recordsDB.insertOne({ cid, createdAt: new Date(), skylink: "" });
console.log(record);
if (record && record.skylink) {
res.status(200).send({ skylink: record.skylink });
return;
}
// insert an empty record for the cid
await recordsDB.insertOne({ cid, createdAt: new Date(), skylink: "" });
// reupload the cid and return the skylink
const skylink = await reuploadFile(cid, recordsDB);
res.status(200).send({ skylink });
@ -64,7 +82,10 @@ async function handleGetLink(req: Request, res: Response, recordsDB: Collection<
}
}
async function reuploadFile(cid: string, recordsDB: Collection<IRecord>): Promise<string> {
async function reuploadFile(
cid: string,
recordsDB: Collection<IRecord>
): Promise<string> {
// get the content type
const ct = await contentType(cid);
const ext = toExtension(ct);