Merge pull request #1990 from mei23/mei-osurl

オブジェクトストレージの参照URLを上書きできるようにする
This commit is contained in:
syuilo 2018-07-27 01:53:42 +09:00 committed by GitHub
commit 8dd5051201
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
3 changed files with 27 additions and 1 deletions

View File

@ -68,6 +68,29 @@ drive:
# accessKey: # accessKey:
# secretKey: # secretKey:
# S3 example
# storage: 'minio'
# bucket: bucket-name
# prefix: files
# config:
# endPoint: s3-us-west-2.amazonaws.com
# region: us-west-2
# secure: true
# accessKey: XXX
# secretKey: YYY
# S3 example (with CDN, custom domain)
# storage: 'minio'
# bucket: drive.example.com
# prefix: files
# baseUrl: https://drive.example.com
# config:
# endPoint: s3-us-west-2.amazonaws.com
# region: us-west-2
# secure: true
# accessKey: XXX
# secretKey: YYY
# #
# Below settings are optional # Below settings are optional
# #

View File

@ -53,6 +53,7 @@ export type Source = {
storage: string; storage: string;
bucket?: string; bucket?: string;
prefix?: string; prefix?: string;
baseUrl?: string;
config?: any; config?: any;
}; };

View File

@ -25,6 +25,8 @@ async function save(readable: stream.Readable, name: string, type: string, hash:
const minio = new Minio.Client(config.drive.config); const minio = new Minio.Client(config.drive.config);
const id = uuid.v4(); const id = uuid.v4();
const obj = `${config.drive.prefix}/${id}`; const obj = `${config.drive.prefix}/${id}`;
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, readable, size, { 'Content-Type': type, 'Cache-Control': 'max-age=31536000, immutable' }); await minio.putObject(config.drive.bucket, obj, readable, size, { 'Content-Type': type, 'Cache-Control': 'max-age=31536000, immutable' });
Object.assign(metadata, { Object.assign(metadata, {
@ -33,7 +35,7 @@ async function save(readable: stream.Readable, name: string, type: string, hash:
storageProps: { storageProps: {
id: id id: id
}, },
url: `${ config.drive.config.secure ? 'https' : 'http' }://${ config.drive.config.endPoint }${ config.drive.config.port ? ':' + config.drive.config.port : '' }/${ config.drive.bucket }/${ obj }` url: `${ baseUrl }/${ obj }`
}); });
const file = await DriveFile.insert({ const file = await DriveFile.insert({