Skip to content

Commit

Permalink
Recv Update
Browse files Browse the repository at this point in the history
  • Loading branch information
mei23 committed Jan 20, 2019
1 parent 63d8bbe commit ffda39c
Show file tree
Hide file tree
Showing 3 changed files with 48 additions and 10 deletions.
19 changes: 9 additions & 10 deletions src/queue/processors/http/process-inbox.ts
Original file line number Diff line number Diff line change
Expand Up @@ -62,16 +62,15 @@ export default async (job: bq.Job, done: any): Promise<void> => {
}) as IRemoteUser;
}

// Update activityの場合は、ここで署名検証/更新処理まで実施して終了
if (activity.type === 'Update') {
if (activity.object && activity.object.type === 'Person') {
if (user == null) {
console.warn('Update activity received, but user not registed.');
} else if (!httpSignature.verifySignature(signature, user.publicKey.publicKeyPem)) {
console.warn('Update activity received, but signature verification failed.');
} else {
updatePerson(activity.actor, null, activity.object);
}
// Update<Person> activityの場合は、ここで署名検証/更新処理まで実施して終了
if (activity.type === 'Update'
&& activity.object && activity.object.type === 'Person') {
if (user == null) {
console.warn('Update activity received, but user not registed.');
} else if (!httpSignature.verifySignature(signature, user.publicKey.publicKeyPem)) {
console.warn('Update activity received, but signature verification failed.');
} else {
updatePerson(activity.actor, null, activity.object);
}
done();
return;
Expand Down
5 changes: 5 additions & 0 deletions src/remote/activitypub/kernel/index.ts
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,7 @@ import reject from './reject';
import add from './add';
import remove from './remove';
import block from './block';
import update from './update';

const self = async (actor: IRemoteUser, activity: Object): Promise<void> => {
switch (activity.type) {
Expand Down Expand Up @@ -58,6 +59,10 @@ const self = async (actor: IRemoteUser, activity: Object): Promise<void> => {
await block(actor, activity);
break;

case 'Update':
await update(actor, activity);
break;

case 'Collection':
case 'OrderedCollection':
// TODO
Expand Down
34 changes: 34 additions & 0 deletions src/remote/activitypub/kernel/update/index.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,34 @@
import { IRemoteUser } from '../../../../models/user';
import * as debug from 'debug';
import { IUpdate } from '../../type';
import { extractPollFromQuestion } from '../../models/question';
import Note from '../../../../models/note';

const log = debug('misskey:activitypub');

export default async (actor: IRemoteUser, activity: IUpdate): Promise<void> => {
const id = typeof activity.object == 'string' ? activity.object : activity.object.id;
const type = (activity.object as any).type;

log(`Update<${type}>: ${id}`);

switch (type) {
case 'Question':
const note = await Note.findOne({
questionUri: id
});

if (note === null) throw 'note not found';

const poll = await extractPollFromQuestion(id);

await Note.update({
_id: note._id
}, {
$set: {
poll
}
});
break;
}
};

0 comments on commit ffda39c

Please sign in to comment.