moved `verify()` and `generateId()` to TS exports

pull/62/head
tycrek 3 years ago
parent c188a7dacd
commit de1358cfc8
No known key found for this signature in database
GPG Key ID: 25D74F3943625263

@ -5,7 +5,7 @@ import escape from 'escape-html';
import fetch, { Response } from 'node-fetch';
const { deleteS3 } = require('../storage');
const { diskFilePath, s3enabled, viewDirect } = require('../../config.json');
const { path, log, getTrueHttp, getTrueDomain, formatBytes, formatTimestamp, getS3url, getDirectUrl, getResourceColor, replaceholder } = require('../utils');
import { path, log, getTrueHttp, getTrueDomain, formatBytes, formatTimestamp, getS3url, getDirectUrl, getResourceColor, replaceholder } from '../utils';
const { CODE_UNAUTHORIZED, CODE_NOT_FOUND, } = require('../../MagicNumbers.json');
const data = require('../data');
const users = require('../auth');
@ -26,12 +26,14 @@ router.use((req: AssRequest, res: AssResponse, next) => {
// View file
router.get('/', (req: AssRequest, res: AssResponse, next) => data.get(req.ass?.resourceId).then((fileData: FileData) => {
const resourceId = req.ass?.resourceId;
const resourceId = req.ass!.resourceId;
// Build OpenGraph meta tags
const og = fileData.opengraph, ogs = [''];
og.title && (ogs.push(`<meta property="og:title" content="${og.title}">`)); // skipcq: JS-0093
og.description && (ogs.push(`<meta property="og:description" content="${og.description}">`)); // skipcq: JS-0093
// todo: figure out how to not ignore this
// @ts-ignore
og.color && (ogs.push(`<meta name="theme-color" content="${getResourceColor(og.color, fileData.vibrant)}">`)); // skipcq: JS-0093
!fileData.is.video && (ogs.push(`<meta name="twitter:card" content="summary_large_image">`)); // skipcq: JS-0093
@ -43,6 +45,8 @@ router.get('/', (req: AssRequest, res: AssResponse, next) => data.get(req.ass?.r
uploader: users[fileData.token].username,
timestamp: formatTimestamp(fileData.timestamp),
size: formatBytes(fileData.size),
// todo: figure out how to not ignore this
// @ts-ignore
color: getResourceColor(fileData.opengraph.color || null, fileData.vibrant),
resourceAttr: { src: getDirectUrl(resourceId) },
discordUrl: `${getDirectUrl(resourceId)}${fileData.ext}`,
@ -93,7 +97,11 @@ router.get('/oembed', (req: AssRequest, res: AssResponse, next) =>
type: fileData.is.video ? 'video' : fileData.is.image ? 'photo' : 'link',
author_url: fileData.opengraph.authorUrl,
provider_url: fileData.opengraph.providerUrl,
// todo: figure out how to not ignore this
// @ts-ignore
author_name: replaceholder(fileData.opengraph.author || '', fileData.size, fileData.timestamp, fileData.originalname),
// todo: figure out how to not ignore this
// @ts-ignore
provider_name: replaceholder(fileData.opengraph.provider || '', fileData.size, fileData.timestamp, fileData.originalname)
}))
.catch(next));

@ -6,7 +6,7 @@ const { DateTime } = require('luxon');
const { WebhookClient, MessageEmbed } = require('discord.js');
const { doUpload, processUploaded } = require('../storage');
const { maxUploadSize, resourceIdSize, gfyIdSize, resourceIdType } = require('../../config.json');
const { path, log, verify, getTrueHttp, getTrueDomain, generateId, formatBytes } = require('../utils');
import { path, log, verify, getTrueHttp, getTrueDomain, generateId, formatBytes } from '../utils';
const { CODE_UNAUTHORIZED, CODE_PAYLOAD_TOO_LARGE } = require('../../MagicNumbers.json');
const data = require('../data');
const users = require('../auth');
@ -106,7 +106,7 @@ router.post('/', (req: AssRequest, res: AssResponse, next: Function) => {
// Also update the users upload count
if (!users[req.token ?? '']) {
const generateUsername = () => generateId('random', 20, null); // skipcq: JS-0074
const generateUsername = () => generateId('random', 20, 0, req.file!.size.toString()); // skipcq: JS-0074
let username: string = generateUsername();
// eslint-disable-next-line @typescript-eslint/ban-ts-comment

@ -79,6 +79,13 @@ export function arrayEquals(arr1: any[], arr2: any[]) {
return arr1.length === arr2.length && arr1.slice().sort().every((value: string, index: number) => value === arr2.slice().sort()[index])
};
export function verify(req: AssRequest, users: JSON) {
return req.headers.authorization && Object.prototype.hasOwnProperty.call(users, req.headers.authorization);
}
export function generateId(mode: string, length: number, gfyLength: number, originalName: string) {
return (GENERATORS.has(mode) ? GENERATORS.get(mode)({ length, gfyLength }) : originalName);
}
// Set up pathing
export const path = (...paths: string[]) => Path.join(process.cwd(), ...paths); // '..' was added to make it easier to run files after moving the project to src/
@ -109,7 +116,7 @@ module.exports = {
getDatedDirname,
randomHexColour,
sanitize,
verify: (req: AssRequest, users: JSON) => req.headers.authorization && Object.prototype.hasOwnProperty.call(users, req.headers.authorization),
verify,
renameFile: (req: AssRequest, newName: string) => new Promise((resolve: Function, reject) => {
try {
const paths = [req.file!.destination, newName];
@ -121,7 +128,7 @@ module.exports = {
}
}),
generateToken: () => token(),
generateId: (mode: string, length: number, gfyLength: number, originalName: string) => (GENERATORS.has(mode) ? GENERATORS.get(mode)({ length, gfyLength }) : originalName),
generateId,
arrayEquals,
downloadTempS3: (file: FileData) => new Promise((resolve: Function, reject) =>
fetch(getS3url(file.randomId, file.ext))

Loading…
Cancel
Save