From 08beb45935961066ddc543b1659f5cc6e891aa6c Mon Sep 17 00:00:00 2001 From: syuilo Date: Mon, 9 Apr 2018 04:08:56 +0900 Subject: wip --- src/remote/activitypub/objects/image.ts | 29 +++++++++++++++++++++++++++++ 1 file changed, 29 insertions(+) create mode 100644 src/remote/activitypub/objects/image.ts (limited to 'src/remote/activitypub/objects/image.ts') diff --git a/src/remote/activitypub/objects/image.ts b/src/remote/activitypub/objects/image.ts new file mode 100644 index 0000000000..7f79fc5c06 --- /dev/null +++ b/src/remote/activitypub/objects/image.ts @@ -0,0 +1,29 @@ +import * as debug from 'debug'; + +import uploadFromUrl from '../../../services/drive/upload-from-url'; +import { IRemoteUser } from '../../../models/user'; +import { IDriveFile } from '../../../models/drive-file'; + +const log = debug('misskey:activitypub'); + +/** + * Imageを作成します。 + */ +export async function createImage(actor: IRemoteUser, image): Promise { + log(`Creating the Image: ${image.url}`); + + return await uploadFromUrl(image.url, actor); +} + +/** + * Imageを解決します。 + * + * Misskeyに対象のImageが登録されていればそれを返し、そうでなければ + * リモートサーバーからフェッチしてMisskeyに登録しそれを返します。 + */ +export async function resolveImage(actor: IRemoteUser, value: any): Promise { + // TODO + + // リモートサーバーからフェッチしてきて登録 + return await createImage(actor, value); +} -- cgit v1.2.3-freya From d8a87379ca512a01ad0177697b830ca0ce8dc104 Mon Sep 17 00:00:00 2001 From: syuilo Date: Mon, 9 Apr 2018 05:14:47 +0900 Subject: Fix bug --- src/remote/activitypub/objects/image.ts | 9 ++++++++- src/remote/activitypub/type.ts | 1 + 2 files changed, 9 insertions(+), 1 deletion(-) (limited to 'src/remote/activitypub/objects/image.ts') diff --git a/src/remote/activitypub/objects/image.ts b/src/remote/activitypub/objects/image.ts index 7f79fc5c06..d7bc5aff2f 100644 --- a/src/remote/activitypub/objects/image.ts +++ b/src/remote/activitypub/objects/image.ts @@ -3,13 +3,20 @@ import * as debug from 'debug'; import uploadFromUrl from '../../../services/drive/upload-from-url'; import { IRemoteUser } from '../../../models/user'; import { IDriveFile } from '../../../models/drive-file'; +import Resolver from '../resolver'; const log = debug('misskey:activitypub'); /** * Imageを作成します。 */ -export async function createImage(actor: IRemoteUser, image): Promise { +export async function createImage(actor: IRemoteUser, value): Promise { + const image = await new Resolver().resolve(value); + + if (image.url == null) { + throw new Error('invalid image: url not privided'); + } + log(`Creating the Image: ${image.url}`); return await uploadFromUrl(image.url, actor); diff --git a/src/remote/activitypub/type.ts b/src/remote/activitypub/type.ts index 983eb621fa..08e5493dd4 100644 --- a/src/remote/activitypub/type.ts +++ b/src/remote/activitypub/type.ts @@ -14,6 +14,7 @@ export interface IObject { content: string; icon?: any; image?: any; + url?: string; } export interface IActivity extends IObject { -- cgit v1.2.3-freya