MeiMei 070f1f3c6e
APリファクタとLD-Signatureの検証に対応 (#6300)
* DbResolver

* inbox types

* 認証順を変更

* User/Keyあたりをまとめる

* LD-Signatue

* Validate contexts url

* LD-Signature DocumentLoaderにProxyとTimeout
2020-05-09 08:21:42 +09:00

35 lines
1.0 KiB
TypeScript

import { IRemoteUser } from '../../../../models/entities/user';
import { IUpdate, validActor } from '../../type';
import { apLogger } from '../../logger';
import { updateQuestion } from '../../models/question';
import Resolver from '../../resolver';
import { updatePerson } from '../../models/person';
/**
* Updateアクティビティを捌きます
*/
export default async (actor: IRemoteUser, activity: IUpdate): Promise<string> => {
if ('actor' in activity && actor.uri !== activity.actor) {
return `skip: invalid actor`;
}
apLogger.debug('Update');
const resolver = new Resolver();
const object = await resolver.resolve(activity.object).catch(e => {
apLogger.error(`Resolution failed: ${e}`);
throw e;
});
if (validActor.includes(object.type)) {
await updatePerson(actor.uri!, resolver, object);
return `ok: Person updated`;
} else if (object.type === 'Question') {
await updateQuestion(object).catch(e => console.log(e));
return `ok: Question updated`;
} else {
return `skip: Unknown type: ${object.type}`;
}
};