Return file info in /files

Closes #31
This commit is contained in:
rijkvanzanten
2020-06-30 10:32:25 -04:00
parent 0dbe18e742
commit 10f632b8c0
2 changed files with 68 additions and 1 deletions

44
src/constants.ts Normal file
View File

@@ -0,0 +1,44 @@
export const SYSTEM_ASSET_WHITELIST = [
{
key: 'directus-small-crop',
width: 64,
height: 64,
fit: 'crop',
quality: 80,
},
{
key: 'directus-small-contain',
width: 64,
height: 64,
fit: 'contain',
quality: 80,
},
{
key: 'directus-medium-crop',
width: 300,
height: 300,
fit: 'crop',
quality: 80,
},
{
key: 'directus-medium-contain',
width: 300,
height: 300,
fit: 'contain',
quality: 80,
},
{
key: 'directus-large-crop',
width: 800,
height: 600,
fit: 'crop',
quality: 80,
},
{
key: 'directus-large-contain',
width: 800,
height: 600,
fit: 'contain',
quality: 80,
},
];

View File

@@ -9,6 +9,7 @@ import { parse as parseICC } from 'icc';
import parseEXIF from 'exif-reader';
import parseIPTC from '../utils/parse-iptc';
import path from 'path';
import { SYSTEM_ASSET_WHITELIST } from '../constants';
export const createFile = async (
data: Record<string, any>,
@@ -54,7 +55,29 @@ export const readFiles = async (query: Query) => {
};
export const readFile = async (pk: string | number, query: Query) => {
return await ItemsService.readItem('directus_files', pk, query);
const file = await ItemsService.readItem('directus_files', pk, query);
const { asset_allowlist: assetAllowlist } =
(await database.select('asset_allowlist').from('directus_settings').first()) || {};
const assetSizes = [...SYSTEM_ASSET_WHITELIST, ...(assetAllowlist || [])];
file.links = {
asset_url: new URL(`/assets/${file.id}`, process.env.PUBLIC_URL),
/** @TODO confirm is public url is set before returning */
original_url: new URL(
file.filename_disk,
process.env[`STORAGE_${file.storage.toUpperCase()}_PUBLIC_URL`]
),
thumbnails: assetSizes.map((size) => {
return {
...size,
url: new URL(`/assets/${file.id}?key=${size.key}`, process.env.PUBLIC_URL),
};
}),
};
return file;
};
// @todo Add query support