summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorsyuilo <syuilotan@yahoo.co.jp>2018-10-31 22:35:02 +0900
committersyuilo <syuilotan@yahoo.co.jp>2018-10-31 22:35:02 +0900
commit1a51b9870039da8b328acc673b2e8cb08ae2e663 (patch)
tree71784c690f794cf0b3f37f3de56ce7316643da19 /src
parentRevert "Clean up" (diff)
downloadsharkey-1a51b9870039da8b328acc673b2e8cb08ae2e663.tar.gz
sharkey-1a51b9870039da8b328acc673b2e8cb08ae2e663.tar.bz2
sharkey-1a51b9870039da8b328acc673b2e8cb08ae2e663.zip
Refactor
Diffstat (limited to 'src')
-rw-r--r--src/misc/get-drive-file-url.ts20
-rw-r--r--src/models/drive-file.ts13
-rw-r--r--src/models/user.ts10
-rw-r--r--src/remote/activitypub/models/person.ts5
-rw-r--r--src/remote/activitypub/renderer/document.ts4
-rw-r--r--src/remote/activitypub/renderer/image.ts4
-rw-r--r--src/server/api/endpoints/i/update.ts8
7 files changed, 41 insertions, 23 deletions
diff --git a/src/misc/get-drive-file-url.ts b/src/misc/get-drive-file-url.ts
new file mode 100644
index 0000000000..0fe467261e
--- /dev/null
+++ b/src/misc/get-drive-file-url.ts
@@ -0,0 +1,20 @@
+import { IDriveFile } from '../models/drive-file';
+import config from '../config';
+
+export default function(file: IDriveFile, thumbnail = false): string {
+ if (file == null) return null;
+
+ if (file.metadata.withoutChunks) {
+ if (thumbnail) {
+ return file.metadata.thumbnailUrl || file.metadata.url;
+ } else {
+ return file.metadata.url;
+ }
+ } else {
+ if (thumbnail) {
+ return `${config.drive_url}/${file._id}?thumbnail`;
+ } else {
+ return `${config.drive_url}/${file._id}`;
+ }
+ }
+}
diff --git a/src/models/drive-file.ts b/src/models/drive-file.ts
index 5e2646a302..57f40be6a9 100644
--- a/src/models/drive-file.ts
+++ b/src/models/drive-file.ts
@@ -1,9 +1,9 @@
import * as mongo from 'mongodb';
const deepcopy = require('deepcopy');
import { pack as packFolder } from './drive-folder';
-import config from '../config';
import monkDb, { nativeDbConn } from '../db/mongodb';
import isObjectId from '../misc/is-objectid';
+import getDriveFileUrl from '../misc/get-drive-file-url';
const DriveFile = monkDb.get<IDriveFile>('driveFiles.files');
DriveFile.createIndex('md5');
@@ -33,7 +33,14 @@ export type IMetadata = {
thumbnailUrl?: string;
src?: string;
deletedAt?: Date;
+
+ /**
+ * このファイルの中身データがMongoDB内に保存されているのか否か
+ * オブジェクトストレージを利用している or リモートサーバーへの直リンクである
+ * な場合は false になります
+ */
withoutChunks?: boolean;
+
storage?: string;
storageProps?: any;
isSensitive?: boolean;
@@ -128,8 +135,8 @@ export const pack = (
_target = Object.assign(_target, _file.metadata);
- _target.url = _file.metadata.url ? _file.metadata.url : `${config.drive_url}/${_target.id}/${encodeURIComponent(_target.name)}`;
- _target.thumbnailUrl = _file.metadata.thumbnailUrl ? _file.metadata.thumbnailUrl : _file.metadata.url ? _file.metadata.url : `${config.drive_url}/${_target.id}/${encodeURIComponent(_target.name)}?thumbnail`;
+ _target.url = getDriveFileUrl(file);
+ _target.thumbnailUrl = getDriveFileUrl(file, true);
_target.isRemote = _file.metadata.isRemote;
if (_target.properties == null) _target.properties = {};
diff --git a/src/models/user.ts b/src/models/user.ts
index 57973d6ca1..ce877fe277 100644
--- a/src/models/user.ts
+++ b/src/models/user.ts
@@ -261,16 +261,6 @@ export const pack = (
if (_user.avatarUrl == null) {
_user.avatarUrl = `${config.drive_url}/default-avatar.jpg`;
-
- // 互換性のため
- if (_user.avatarId) {
- _user.avatarUrl = `${config.drive_url}/${_user.avatarId}`;
- }
- }
-
- // 互換性のため
- if (_user.bannerId && _user.bannerUrl == null) {
- _user.bannerUrl = `${config.drive_url}/${_user.bannerId}`;
}
if (!meId || !meId.equals(_user.id) || !opts.detail) {
diff --git a/src/remote/activitypub/models/person.ts b/src/remote/activitypub/models/person.ts
index f115dee87d..7842e87882 100644
--- a/src/remote/activitypub/models/person.ts
+++ b/src/remote/activitypub/models/person.ts
@@ -15,6 +15,7 @@ import { URL } from 'url';
import { resolveNote } from './note';
import registerInstance from '../../../services/register-instance';
import Instance from '../../../models/instance';
+import getDriveFileUrl from '../../../misc/get-drive-file-url';
const log = debug('misskey:activitypub');
@@ -303,8 +304,8 @@ export async function updatePerson(uri: string, resolver?: Resolver, hint?: obje
featured: person.featured,
avatarId: avatar ? avatar._id : null,
bannerId: banner ? banner._id : null,
- avatarUrl: (avatar && avatar.metadata.thumbnailUrl) ? avatar.metadata.thumbnailUrl : (avatar && avatar.metadata.url) ? avatar.metadata.url : null,
- bannerUrl: banner && banner.metadata.url ? banner.metadata.url : null,
+ avatarUrl: getDriveFileUrl(avatar, true),
+ bannerUrl: getDriveFileUrl(banner, true),
description: htmlToMFM(person.summary),
followersCount,
followingCount,
diff --git a/src/remote/activitypub/renderer/document.ts b/src/remote/activitypub/renderer/document.ts
index 1f4543d7ee..17721e9417 100644
--- a/src/remote/activitypub/renderer/document.ts
+++ b/src/remote/activitypub/renderer/document.ts
@@ -1,8 +1,8 @@
-import config from '../../../config';
import { IDriveFile } from '../../../models/drive-file';
+import getDriveFileUrl from '../../../misc/get-drive-file-url';
export default (file: IDriveFile) => ({
type: 'Document',
mediaType: file.contentType,
- url: file.metadata.url || `${config.drive_url}/${file._id}`
+ url: getDriveFileUrl(file)
});
diff --git a/src/remote/activitypub/renderer/image.ts b/src/remote/activitypub/renderer/image.ts
index b2f2555003..ec637b9521 100644
--- a/src/remote/activitypub/renderer/image.ts
+++ b/src/remote/activitypub/renderer/image.ts
@@ -1,8 +1,8 @@
-import config from '../../../config';
import { IDriveFile } from '../../../models/drive-file';
+import getDriveFileUrl from '../../../misc/get-drive-file-url';
export default (file: IDriveFile) => ({
type: 'Image',
- url: file.metadata.url || `${config.drive_url}/${file._id}`,
+ url: getDriveFileUrl(file),
sensitive: file.metadata.isSensitive
});
diff --git a/src/server/api/endpoints/i/update.ts b/src/server/api/endpoints/i/update.ts
index 7b8431f0ee..357b571293 100644
--- a/src/server/api/endpoints/i/update.ts
+++ b/src/server/api/endpoints/i/update.ts
@@ -4,9 +4,9 @@ import { publishMainStream } from '../../../../stream';
import DriveFile from '../../../../models/drive-file';
import acceptAllFollowRequests from '../../../../services/following/requests/accept-all';
import { IApp } from '../../../../models/app';
-import config from '../../../../config';
import { publishToFollowers } from '../../../../services/i/update';
import getParams from '../../get-params';
+import getDriveFileUrl from '../../../../misc/get-drive-file-url';
export const meta = {
desc: {
@@ -129,7 +129,7 @@ export default async (params: any, user: ILocalUser, app: IApp) => new Promise(a
if (avatar == null) return rej('avatar not found');
if (!avatar.contentType.startsWith('image/')) return rej('avatar not an image');
- updates.avatarUrl = avatar.metadata.thumbnailUrl || avatar.metadata.url || `${config.drive_url}/${avatar._id}`;
+ updates.avatarUrl = getDriveFileUrl(avatar, true);
if (avatar.metadata.properties.avgColor) {
updates.avatarColor = avatar.metadata.properties.avgColor;
@@ -144,7 +144,7 @@ export default async (params: any, user: ILocalUser, app: IApp) => new Promise(a
if (banner == null) return rej('banner not found');
if (!banner.contentType.startsWith('image/')) return rej('banner not an image');
- updates.bannerUrl = banner.metadata.url || `${config.drive_url}/${banner._id}`;
+ updates.bannerUrl = getDriveFileUrl(banner, true);
if (banner.metadata.properties.avgColor) {
updates.bannerColor = banner.metadata.properties.avgColor;
@@ -162,7 +162,7 @@ export default async (params: any, user: ILocalUser, app: IApp) => new Promise(a
if (wallpaper == null) return rej('wallpaper not found');
- updates.wallpaperUrl = wallpaper.metadata.url || `${config.drive_url}/${wallpaper._id}`;
+ updates.wallpaperUrl = getDriveFileUrl(wallpaper);
if (wallpaper.metadata.properties.avgColor) {
updates.wallpaperColor = wallpaper.metadata.properties.avgColor;