summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorsyuilo <syuilotan@yahoo.co.jp>2018-08-16 21:23:31 +0900
committersyuilo <syuilotan@yahoo.co.jp>2018-08-16 21:23:31 +0900
commit7f9a35d7acf33c3c64ed451e10054729d25973cc (patch)
treeb1003aad6800ef0f621d0a063d11603b52c87be6 /src
parentFix bug (diff)
downloadsharkey-7f9a35d7acf33c3c64ed451e10054729d25973cc.tar.gz
sharkey-7f9a35d7acf33c3c64ed451e10054729d25973cc.tar.bz2
sharkey-7f9a35d7acf33c3c64ed451e10054729d25973cc.zip
Improve object storage key
Diffstat (limited to 'src')
-rw-r--r--src/services/drive/add-file.ts16
-rw-r--r--src/services/drive/delete-file.ts8
2 files changed, 14 insertions, 10 deletions
diff --git a/src/services/drive/add-file.ts b/src/services/drive/add-file.ts
index 03bb1468bd..da0d3fd82f 100644
--- a/src/services/drive/add-file.ts
+++ b/src/services/drive/add-file.ts
@@ -35,20 +35,19 @@ async function save(path: string, name: string, type: string, hash: string, size
if (config.drive && config.drive.storage == 'minio') {
const minio = new Minio.Client(config.drive.config);
- const id = uuid.v4();
- const obj = `${config.drive.prefix}/${id}`;
- const thumbnailObj = `${obj}-thumbnail`;
+ const key = `${config.drive.prefix}/${uuid.v4()}/${name}`;
+ const thumbnailKey = `${config.drive.prefix}/${uuid.v4()}/${name}.thumbnail.jpg`;
const baseUrl = config.drive.baseUrl
|| `${ config.drive.config.secure ? 'https' : 'http' }://${ config.drive.config.endPoint }${ config.drive.config.port ? ':' + config.drive.config.port : '' }/${ config.drive.bucket }`;
- await minio.putObject(config.drive.bucket, obj, fs.createReadStream(path), size, {
+ await minio.putObject(config.drive.bucket, key, fs.createReadStream(path), size, {
'Content-Type': type,
'Cache-Control': 'max-age=31536000, immutable'
});
if (thumbnail) {
- await minio.putObject(config.drive.bucket, thumbnailObj, thumbnail, size, {
+ await minio.putObject(config.drive.bucket, thumbnailKey, thumbnail, size, {
'Content-Type': 'image/jpeg',
'Cache-Control': 'max-age=31536000, immutable'
});
@@ -58,10 +57,11 @@ async function save(path: string, name: string, type: string, hash: string, size
withoutChunks: true,
storage: 'minio',
storageProps: {
- id: id
+ key: key,
+ thumbnailKey: thumbnailKey
},
- url: `${ baseUrl }/${ obj }`,
- thumbnailUrl: thumbnail ? `${ baseUrl }/${ thumbnailObj }` : null
+ url: `${ baseUrl }/${ key }`,
+ thumbnailUrl: thumbnail ? `${ baseUrl }/${ thumbnailKey }` : null
});
const file = await DriveFile.insert({
diff --git a/src/services/drive/delete-file.ts b/src/services/drive/delete-file.ts
index a417d260fa..445d231d66 100644
--- a/src/services/drive/delete-file.ts
+++ b/src/services/drive/delete-file.ts
@@ -7,11 +7,15 @@ export default async function(file: IDriveFile, isExpired = false) {
if (file.metadata.storage == 'minio') {
const minio = new Minio.Client(config.drive.config);
- const obj = `${config.drive.prefix}/${file.metadata.storageProps.id}`;
+ // 後方互換性のため、file.metadata.storageProps.key があるかどうかチェックしています。
+ // 将来的には const obj = file.metadata.storageProps.key; とします。
+ const obj = file.metadata.storageProps.key ? file.metadata.storageProps.key : `${config.drive.prefix}/${file.metadata.storageProps.id}`;
await minio.removeObject(config.drive.bucket, obj);
if (file.metadata.thumbnailUrl) {
- const thumbnailObj = `${config.drive.prefix}/${file.metadata.storageProps.id}-thumbnail`;
+ // 後方互換性のため、file.metadata.storageProps.thumbnailKey があるかどうかチェックしています。
+ // 将来的には const thumbnailObj = file.metadata.storageProps.thumbnailKey; とします。
+ const thumbnailObj = file.metadata.storageProps.thumbnailKey ? file.metadata.storageProps.thumbnailKey : `${config.drive.prefix}/${file.metadata.storageProps.id}-thumbnail`;
await minio.removeObject(config.drive.bucket, thumbnailObj);
}
}