Skip to content
Snippets Groups Projects
Commit 4e9ae8e8 authored by syuilo's avatar syuilo
Browse files

Split code

parent 574e3b0b
No related branches found
No related tags found
No related merge requests found
import * as debug from 'debug';
import Resolver from '../../resolver';
import uploadFromUrl from '../../../../services/drive/upload-from-url';
import { IRemoteUser } from '../../../../models/user';
import { IDriveFile } from '../../../../models/drive-file';
const log = debug('misskey:activitypub');
export default async function(resolver: Resolver, actor: IRemoteUser, image): Promise<IDriveFile> {
if ('attributedTo' in image && actor.account.uri !== image.attributedTo) {
log(`invalid image: ${JSON.stringify(image, null, 2)}`);
throw new Error('invalid image');
}
log(`Creating the Image: ${image.id}`);
return await uploadFromUrl(image.url, actor);
}
import * as debug from 'debug';
import Resolver from '../../resolver';
import { IRemoteUser } from '../../../../models/user';
import createNote from './note';
import createImage from './image';
const log = debug('misskey:activitypub');
export default async (actor: IRemoteUser, activity): Promise<void> => {
if ('actor' in activity && actor.account.uri !== activity.actor) {
throw new Error('invalid actor');
}
const uri = activity.id || activity;
log(`Create: ${uri}`);
// TODO: 同じURIをもつものが既に登録されていないかチェック
const resolver = new Resolver();
let object;
try {
object = await resolver.resolve(activity.object);
} catch (e) {
log(`Resolution failed: ${e}`);
throw e;
}
switch (object.type) {
case 'Image':
createImage(resolver, actor, object);
break;
case 'Note':
createNote(resolver, actor, object);
break;
default:
console.warn(`Unknown type: ${object.type}`);
break;
}
};
import { JSDOM } from 'jsdom';
import * as debug from 'debug';
import Resolver from '../resolver';
import Post from '../../../models/post';
import uploadFromUrl from '../../../services/drive/upload-from-url';
import createPost from '../../../services/post/create';
import { IRemoteUser, isRemoteUser } from '../../../models/user';
import resolvePerson from '../resolve-person';
import Resolver from '../../resolver';
import Post, { IPost } from '../../../../models/post';
import createPost from '../../../../services/post/create';
import { IRemoteUser, isRemoteUser } from '../../../../models/user';
import resolvePerson from '../../resolve-person';
import createImage from './image';
const log = debug('misskey:activitypub');
export default async (actor: IRemoteUser, activity): Promise<void> => {
if ('actor' in activity && actor.account.uri !== activity.actor) {
throw new Error('invalid actor');
}
const uri = activity.id || activity;
log(`Create: ${uri}`);
// TODO: 同じURIをもつものが既に登録されていないかチェック
const resolver = new Resolver();
let object;
try {
object = await resolver.resolve(activity.object);
} catch (e) {
log(`Resolution failed: ${e}`);
throw e;
}
switch (object.type) {
case 'Image':
createImage(resolver, actor, object);
break;
case 'Note':
createNote(resolver, actor, object);
break;
default:
console.warn(`Unknown type: ${object.type}`);
break;
}
};
async function createImage(resolver: Resolver, actor: IRemoteUser, image) {
if ('attributedTo' in image && actor.account.uri !== image.attributedTo) {
log(`invalid image: ${JSON.stringify(image, null, 2)}`);
throw new Error('invalid image');
}
log(`Creating the Image: ${image.id}`);
return await uploadFromUrl(image.url, actor);
}
async function createNote(resolver: Resolver, actor: IRemoteUser, note) {
export default async function createNote(resolver: Resolver, actor: IRemoteUser, note): Promise<IPost> {
if (
('attributedTo' in note && actor.account.uri !== note.attributedTo) ||
typeof note.id !== 'string'
......
import Resolver from '../resolver';
import Post from '../../../models/post';
import { createDb } from '../../../queue';
import Resolver from '../../resolver';
import deleteNote from './note';
export default async (actor, activity): Promise<void> => {
if ('actor' in activity && actor.account.uri !== activity.actor) {
......@@ -16,13 +15,4 @@ export default async (actor, activity): Promise<void> => {
deleteNote(object);
break;
}
async function deleteNote(note) {
const post = await Post.findOneAndDelete({ uri: note.id });
createDb({
type: 'deletePostDependents',
id: post._id
}).delay(65536).save();
}
};
import Post from '../../../../models/post';
import { createDb } from '../../../../queue';
export default async function(note) {
const post = await Post.findOneAndDelete({ uri: note.id });
createDb({
type: 'deletePostDependents',
id: post._id
}).delay(65536).save();
}
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment