401 lines
10 KiB
TypeScript
401 lines
10 KiB
TypeScript
import { Request, Response } from "express";
|
|
import {UserInterface} from "../models/user";
|
|
import GoogleFileService from "../services/GoogleFileService";
|
|
import { googleQueryType } from "../utils/createQueryGoogle";
|
|
|
|
const googleFileService = new GoogleFileService();
|
|
|
|
type userAccessType = {
|
|
_id: string,
|
|
emailVerified: boolean,
|
|
email: string,
|
|
s3Enabled: boolean,
|
|
}
|
|
|
|
interface RequestTypeRefresh extends Request {
|
|
user?: UserInterface,
|
|
encryptedToken?: string
|
|
}
|
|
|
|
interface RequestTypeFullUser extends Request {
|
|
user?: UserInterface,
|
|
encryptedToken?: string
|
|
}
|
|
|
|
interface RequestType extends Request {
|
|
user?: userAccessType,
|
|
encryptedToken?: string
|
|
}
|
|
|
|
class GoogleFileController {
|
|
|
|
constructor() {
|
|
|
|
}
|
|
|
|
getList = async(req: RequestTypeFullUser, res: Response) => {
|
|
|
|
|
|
if (!req.user) {
|
|
return;
|
|
}
|
|
|
|
try {
|
|
|
|
const user = req.user;
|
|
const query = req.query as unknown as googleQueryType;
|
|
|
|
const googleFiles = await googleFileService.getList(user, query);
|
|
|
|
res.send(googleFiles)
|
|
|
|
} catch (e) {
|
|
|
|
console.log("\nGet Google List Error Google File Route:", e.message);
|
|
const code = !e.code ? 500 : e.code >= 400 && e.code <= 599 ? e.code : 500;
|
|
res.status(code).send();
|
|
}
|
|
}
|
|
|
|
getMongoGoogleList = async(req: RequestTypeFullUser, res: Response) => {
|
|
|
|
if (!req.user) {
|
|
return;
|
|
}
|
|
|
|
try {
|
|
|
|
const user = req.user;
|
|
const query = req.query as unknown as googleQueryType;
|
|
|
|
const mongoGoogleFiles = await googleFileService.getMongoGoogleList(user, query);
|
|
|
|
res.send(mongoGoogleFiles)
|
|
|
|
} catch (e) {
|
|
|
|
console.log("\nGet Google/Mongo List Error Google File Route:", e.message);
|
|
const code = !e.code ? 500 : e.code >= 400 && e.code <= 599 ? e.code : 500;
|
|
res.status(code).send();
|
|
}
|
|
}
|
|
|
|
getFileInfo = async(req: RequestTypeFullUser, res: Response) => {
|
|
|
|
if (!req.user) {
|
|
return;
|
|
}
|
|
|
|
try {
|
|
|
|
const id: any = req.params.id;
|
|
const user = req.user;
|
|
|
|
const fileInfo = await googleFileService.getFileInfo(user, id);
|
|
|
|
res.send(fileInfo);
|
|
|
|
} catch (e) {
|
|
|
|
console.log("\nGet Info Error Google File Route:", e.message);
|
|
const code = !e.code ? 500 : e.code >= 400 && e.code <= 599 ? e.code : 500;
|
|
res.status(code).send();
|
|
}
|
|
}
|
|
|
|
getGoogleMongoQuickList = async(req: RequestTypeFullUser, res: Response) => {
|
|
|
|
if (!req.user) {
|
|
return;
|
|
}
|
|
|
|
try {
|
|
|
|
const user = req.user;
|
|
|
|
const googleMongoQuickList = await googleFileService.getGoogleMongoQuickList(user);
|
|
|
|
res.send(googleMongoQuickList);
|
|
|
|
} catch (e) {
|
|
|
|
console.log("\nGet Google/Mongo Quicklist Error Google File Route:", e.message);
|
|
const code = !e.code ? 500 : e.code >= 400 && e.code <= 599 ? e.code : 500;
|
|
res.status(code).send();
|
|
}
|
|
}
|
|
|
|
getGoogleMongoSuggestedList = async(req: RequestTypeFullUser, res: Response) => {
|
|
|
|
if (!req.user) {
|
|
return;
|
|
}
|
|
|
|
try {
|
|
|
|
const user = req.user;
|
|
|
|
const searchQuery: any = req.query.search || "";
|
|
|
|
const fileAndFolderList = await googleFileService.getGoogleMongoSuggestedList(user, searchQuery);
|
|
|
|
res.send(fileAndFolderList);
|
|
|
|
} catch (e) {
|
|
|
|
console.log("\nGet Google/Mongo Suggested List Error Google File Route:", e.message);
|
|
const code = !e.code ? 500 : e.code >= 400 && e.code <= 599 ? e.code : 500;
|
|
res.status(code).send();
|
|
}
|
|
}
|
|
|
|
renameFile = async(req: RequestTypeFullUser, res: Response) => {
|
|
|
|
if (!req.user) {
|
|
return;
|
|
}
|
|
|
|
try {
|
|
|
|
const user = req.user;
|
|
const fileID = req.body.id;
|
|
const title = req.body.title
|
|
|
|
await googleFileService.renameFile(user, fileID, title);
|
|
|
|
res.send();
|
|
|
|
} catch (e) {
|
|
|
|
console.log("\nRename File Error Google File Route:", e.message);
|
|
const code = !e.code ? 500 : e.code >= 400 && e.code <= 599 ? e.code : 500;
|
|
res.status(code).send();
|
|
}
|
|
}
|
|
|
|
removeFile = async(req: RequestTypeFullUser, res: Response) => {
|
|
|
|
if (!req.user) {
|
|
return;
|
|
}
|
|
|
|
try {
|
|
|
|
const fileID = req.body.id;
|
|
const user = req.user!;
|
|
|
|
await googleFileService.removeFile(user, fileID);
|
|
|
|
res.send();
|
|
|
|
} catch (e) {
|
|
|
|
console.log("\nRemove File Error Error Google File Route:", e.message);
|
|
const code = !e.code ? 500 : e.code >= 400 && e.code <= 599 ? e.code : 500;
|
|
res.status(code).send();
|
|
}
|
|
}
|
|
|
|
downloadFile = async(req: RequestTypeFullUser, res: Response) => {
|
|
|
|
if (!req.user) {
|
|
return;
|
|
}
|
|
|
|
try {
|
|
|
|
const user = req.user!;
|
|
const fileID = req.params.id;
|
|
|
|
await googleFileService.downloadFile(user, fileID, res);
|
|
|
|
} catch (e) {
|
|
|
|
console.log("\nDownload File Error Google File Route:", e.message);
|
|
const code = !e.code ? 500 : e.code >= 400 && e.code <= 599 ? e.code : 500;
|
|
res.status(code).send();
|
|
}
|
|
}
|
|
|
|
downloadDoc = async(req: RequestTypeFullUser, res: Response) => {
|
|
|
|
if (!req.user) {
|
|
return;
|
|
}
|
|
|
|
try {
|
|
|
|
const user = req.user;
|
|
const fileID = req.params.id;
|
|
|
|
await googleFileService.downloadDoc(user, fileID, res);
|
|
|
|
} catch (e) {
|
|
|
|
console.log("\nDownload Doc Error Google File Route:", e.message);
|
|
const code = !e.code ? 500 : e.code >= 400 && e.code <= 599 ? e.code : 500;
|
|
res.status(code).send();
|
|
}
|
|
}
|
|
|
|
getThumbnail = async(req: RequestTypeFullUser, res: Response) => {
|
|
|
|
if (!req.user) {
|
|
return;
|
|
}
|
|
|
|
try {
|
|
|
|
const user = req.user;
|
|
const fileID = req.params.id;
|
|
|
|
await googleFileService.getThumbnail(user, fileID, res);
|
|
|
|
} catch(e) {
|
|
|
|
console.log("\nGet Thumbnail Error Google File Route:", e.message);
|
|
const code = !e.code ? 500 : e.code >= 400 && e.code <= 599 ? e.code : 500;
|
|
res.status(code).send();
|
|
}
|
|
|
|
}
|
|
|
|
getFulllThumbnail = async(req: RequestTypeFullUser, res: Response) => {
|
|
|
|
if (!req.user) {
|
|
return;
|
|
}
|
|
|
|
try {
|
|
|
|
const user = req.user;
|
|
const fileID = req.params.id;
|
|
|
|
await googleFileService.getFullThumbnail(user, fileID, res);
|
|
|
|
} catch (e) {
|
|
|
|
console.log("\nGet Full Thumbnail Error Google File Route:", e.message);
|
|
const code = !e.code ? 500 : e.code >= 400 && e.code <= 599 ? e.code : 500;
|
|
res.status(code).send();
|
|
}
|
|
}
|
|
|
|
streamVideo = async(req: RequestTypeFullUser, res: Response) => {
|
|
|
|
if (!req.user) {
|
|
return;
|
|
}
|
|
|
|
try {
|
|
|
|
const user = req.user!;
|
|
const fileID = req.params.id;
|
|
const tempUUID = req.params.uuid;
|
|
|
|
await googleFileService.streamVideo(user, fileID, tempUUID, req, res);
|
|
|
|
} catch (e) {
|
|
|
|
console.log("\nStream Video Error Google File Route:", e.message);
|
|
const code = !e.code ? 500 : e.code >= 400 && e.code <= 599 ? e.code : 500;
|
|
res.status(code).send();
|
|
}
|
|
}
|
|
|
|
uploadFile = async(req: RequestTypeFullUser, res: Response) => {
|
|
|
|
if (!req.user) {
|
|
return;
|
|
}
|
|
|
|
try {
|
|
|
|
const user = req.user;
|
|
const busboy = req.busboy;
|
|
|
|
req.pipe(busboy);
|
|
|
|
await googleFileService.uploadFile(user, busboy, req, res);
|
|
|
|
} catch (e) {
|
|
|
|
console.log("\nUpload File Error Google File Route:", e.message);
|
|
const code = !e.code ? 500 : e.code >= 400 && e.code <= 599 ? e.code : 500;
|
|
res.status(code).send();
|
|
}
|
|
}
|
|
|
|
moveFile = async(req: RequestTypeFullUser, res: Response) => {
|
|
|
|
if (!req.user) {
|
|
return;
|
|
}
|
|
|
|
try {
|
|
|
|
const user = req.user!;
|
|
const fileID = req.body.id;
|
|
const parentID = req.body.parent;
|
|
|
|
await googleFileService.moveFile(user, fileID, parentID);
|
|
|
|
res.send();
|
|
|
|
} catch (e) {
|
|
|
|
console.log("\nMove File Error Google File Route:", e.message);
|
|
const code = !e.code ? 500 : e.code >= 400 && e.code <= 599 ? e.code : 500;
|
|
res.status(code).send();
|
|
}
|
|
|
|
}
|
|
|
|
makeFilePublic = async(req: RequestTypeFullUser, res: Response) => {
|
|
|
|
if (!req.user) {
|
|
return;
|
|
}
|
|
|
|
try {
|
|
|
|
const user = req.user;
|
|
const fileID = req.params.id;
|
|
|
|
const publicURL = await googleFileService.makeFilePublic(user, fileID);
|
|
|
|
res.send(publicURL);
|
|
|
|
} catch (e) {
|
|
|
|
console.log("\nMake Public Error Google File Route:", e.message);
|
|
const code = !e.code ? 500 : e.code >= 400 && e.code <= 599 ? e.code : 500;
|
|
res.status(code).send();
|
|
}
|
|
}
|
|
|
|
removePublicLink = async(req: RequestTypeFullUser, res: Response) => {
|
|
|
|
if (!req.user) {
|
|
return;
|
|
}
|
|
|
|
try {
|
|
|
|
const user = req.user!;
|
|
const fileID = req.params.id;
|
|
|
|
await googleFileService.removePublicLink(user, fileID);
|
|
|
|
res.send();
|
|
|
|
} catch (e) {
|
|
|
|
console.log("\nRemove Public Error Google File Route:", e.message);
|
|
const code = !e.code ? 500 : e.code >= 400 && e.code <= 599 ? e.code : 500;
|
|
res.status(code).send();
|
|
}
|
|
}
|
|
}
|
|
|
|
export default GoogleFileController; |