Skip to content

Commit

Permalink
Add Event activity-type support
Browse files Browse the repository at this point in the history
  • Loading branch information
mei23 committed Jan 29, 2020
1 parent b707cea commit b21036f
Show file tree
Hide file tree
Showing 6 changed files with 18 additions and 16 deletions.
4 changes: 2 additions & 2 deletions src/remote/activitypub/kernel/create/index.ts
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
import Resolver from '../../resolver';
import { IRemoteUser } from '../../../../models/user';
import createNote from './note';
import { ICreate, getApId, isNote } from '../../type';
import { ICreate, getApId, isPost } from '../../type';
import { apLogger } from '../../logger';

const logger = apLogger;
Expand All @@ -22,7 +22,7 @@ export default async (actor: IRemoteUser, activity: ICreate): Promise<string> =>
throw e;
}

if (isNote(object)) {
if (isPost(object)) {
return await createNote(resolver, actor, object, false, activity);
} else {
return `Unknown type: ${object.type}`;
Expand Down
4 changes: 2 additions & 2 deletions src/remote/activitypub/kernel/delete/index.ts
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
import deleteNote from './note';
import { IRemoteUser } from '../../../../models/user';
import { IDelete, getApId, isTombstone, IObject } from '../../type';
import { IDelete, getApId, isTombstone, IObject, validPost } from '../../type';
import { toSingle } from '../../../../prelude/array';

/**
Expand Down Expand Up @@ -38,7 +38,7 @@ export default async (actor: IRemoteUser, activity: IDelete): Promise<string> =>
formarType = 'Note';
}

if (['Note', 'Question', 'Article', 'Audio', 'Document', 'Image', 'Page', 'Video'].includes(formarType)) {
if (validPost.includes(formarType)) {
return await deleteNote(actor, uri);
} else if (['Person', 'Service', 'Organization', 'Group'].includes(formarType)) {
return `Delete Actor is not implanted`;
Expand Down
8 changes: 4 additions & 4 deletions src/remote/activitypub/models/note.ts
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@ import config from '../../../config';
import Resolver from '../resolver';
import Note, { INote } from '../../../models/note';
import post from '../../../services/note/create';
import { IApNote, IObject, getOneApId, getApId, isNote, isEmoji, ICreate, isCreate } from '../type';
import { IPost, IObject, getOneApId, getApId, isPost, isEmoji, ICreate, isCreate } from '../type';
import { resolvePerson, updatePerson } from './person';
import { resolveImage } from './image';
import { IRemoteUser } from '../../../models/user';
Expand All @@ -27,14 +27,14 @@ import { parseAudience } from '../audience';

const logger = apLogger;

function toNote(object: IObject, uri: string): IApNote {
function toNote(object: IObject, uri: string): IPost {
const expectHost = extractApHost(uri);

if (object == null) {
throw new Error('invalid Note: object is null');
}

if (!isNote(object)) {
if (!isPost(object)) {
throw new Error(`invalid Note: invalid object type ${object.type}`);
}

Expand Down Expand Up @@ -84,7 +84,7 @@ export async function createNote(value: string | IObject, resolver?: Resolver, s

const entryUri = getApId(value);

let note: IApNote;
let note: IPost;
try {
note = toNote(object, entryUri);
} catch (err) {
Expand Down
4 changes: 2 additions & 2 deletions src/remote/activitypub/models/person.ts
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@ import config from '../../../config';
import User, { validateUsername, IUser, IRemoteUser, isRemoteUser } from '../../../models/user';
import Resolver from '../resolver';
import { resolveImage } from './image';
import { isCollectionOrOrderedCollection, isCollection, isOrderedCollection, IObject, isPerson, IApPerson, isPropertyValue, IApPropertyValue, ApObject, getApIds, isOrderedCollectionPage, isCreate, isNote } from '../type';
import { isCollectionOrOrderedCollection, isCollection, isOrderedCollection, IObject, isPerson, IApPerson, isPropertyValue, IApPropertyValue, ApObject, getApIds, isOrderedCollectionPage, isCreate, isPost } from '../type';
import { IDriveFile } from '../../../models/drive-file';
import Meta from '../../../models/meta';
import { fromHtml } from '../../../mfm/fromHtml';
Expand Down Expand Up @@ -549,7 +549,7 @@ export async function fetchOutbox(user: IUser) {

if (isCreate(activity)) {
const object = await resolver.resolve(activity.object);
if (isNote(object)) {
if (isPost(object)) {
// Note
if (object.inReplyTo) {
// skip reply
Expand Down
10 changes: 6 additions & 4 deletions src/remote/activitypub/type.ts
Original file line number Diff line number Diff line change
Expand Up @@ -105,16 +105,18 @@ export interface IOrderedCollectionPage extends IObject {
startIndex?: number;
}

export interface IApNote extends IObject {
type: 'Note' | 'Question' | 'Article' | 'Audio' | 'Document' | 'Image' | 'Page' | 'Video';
export interface IPost extends IObject {
type: 'Note' | 'Question' | 'Article' | 'Audio' | 'Document' | 'Image' | 'Page' | 'Video' | 'Event';
_misskey_content: string;
_misskey_quote?: string;
quoteUrl?: string;
_misskey_talk?: boolean;
}

export const isNote = (object: IObject): object is IApNote =>
['Note', 'Question', 'Article', 'Audio', 'Document', 'Image', 'Page', 'Video'].includes(object.type);
export const validPost = ['Note', 'Question', 'Article', 'Audio', 'Document', 'Image', 'Page', 'Video', 'Event'];

export const isPost = (object: IObject): object is IPost =>
validPost.includes(object.type);

export interface ITombstone extends IObject {
type: 'Tombstone';
Expand Down
4 changes: 2 additions & 2 deletions src/server/api/endpoints/ap/show.ts
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,7 @@ import { createNote } from '../../../../remote/activitypub/models/note';
import Resolver from '../../../../remote/activitypub/resolver';
import { ApiError } from '../../error';
import { extractApHost } from '../../../../misc/convert-host';
import { isPerson, isNote } from '../../../../remote/activitypub/type';
import { isPerson, isPost } from '../../../../remote/activitypub/type';
import { isBlockedHost } from '../../../../misc/instance-info';

export const meta = {
Expand Down Expand Up @@ -114,7 +114,7 @@ async function fetchAny(uri: string) {
};
}

if (isNote(object)) {
if (isPost(object)) {
const note = await createNote(object.id, null, true);
return {
type: 'Note',
Expand Down

0 comments on commit b21036f

Please sign in to comment.