summaryrefslogtreecommitdiff
path: root/src/remote
diff options
context:
space:
mode:
authorsyuilo <syuilotan@yahoo.co.jp>2018-04-04 23:59:38 +0900
committersyuilo <syuilotan@yahoo.co.jp>2018-04-04 23:59:38 +0900
commit77f056b4fcdf74da8b6a8cc4a923eb8789d6f5ae (patch)
tree9e954a928e0b51bb5228eae8d5ab40c7c5709d7f /src/remote
parentwip (diff)
downloadmisskey-77f056b4fcdf74da8b6a8cc4a923eb8789d6f5ae.tar.gz
misskey-77f056b4fcdf74da8b6a8cc4a923eb8789d6f5ae.tar.bz2
misskey-77f056b4fcdf74da8b6a8cc4a923eb8789d6f5ae.zip
wip
Diffstat (limited to 'src/remote')
-rw-r--r--src/remote/activitypub/act/create.ts8
-rw-r--r--src/remote/activitypub/act/follow.ts59
2 files changed, 8 insertions, 59 deletions
diff --git a/src/remote/activitypub/act/create.ts b/src/remote/activitypub/act/create.ts
index c1a30ce7d0..7ee9f8dfb7 100644
--- a/src/remote/activitypub/act/create.ts
+++ b/src/remote/activitypub/act/create.ts
@@ -4,10 +4,10 @@ const createDOMPurify = require('dompurify');
import Resolver from '../resolver';
import DriveFile from '../../../models/drive-file';
import Post from '../../../models/post';
-import uploadFromUrl from '../../../drive/upload-from-url';
-import createPost from '../../../post/create';
+import uploadFromUrl from '../../../api/drive/upload-from-url';
+import createPost from '../../../api/post/create';
-export default async (resolver: Resolver, actor, activity): Promise<void> => {
+export default async (actor, activity): Promise<void> => {
if ('actor' in activity && actor.account.uri !== activity.actor) {
throw new Error('invalid actor');
}
@@ -31,6 +31,8 @@ export default async (resolver: Resolver, actor, activity): Promise<void> => {
throw new Error(`already registered: ${uri}`);
}
+ const resolver = new Resolver();
+
const object = await resolver.resolve(activity);
switch (object.type) {
diff --git a/src/remote/activitypub/act/follow.ts b/src/remote/activitypub/act/follow.ts
index 23fa41df8e..dc173a0acb 100644
--- a/src/remote/activitypub/act/follow.ts
+++ b/src/remote/activitypub/act/follow.ts
@@ -1,15 +1,9 @@
-import { MongoError } from 'mongodb';
import parseAcct from '../../../acct/parse';
-import Following, { IFollowing } from '../../../models/following';
import User from '../../../models/user';
import config from '../../../config';
-import queue from '../../../queue';
-import context from '../renderer/context';
-import renderAccept from '../renderer/accept';
-import request from '../../request';
-import Resolver from '../resolver';
+import follow from '../../../api/following/create';
-export default async (resolver: Resolver, actor, activity, distribute) => {
+export default async (actor, activity): Promise<void> => {
const prefix = config.url + '/@';
const id = activity.object.id || activity.object;
@@ -27,52 +21,5 @@ export default async (resolver: Resolver, actor, activity, distribute) => {
throw new Error();
}
- if (!distribute) {
- const { _id } = await Following.findOne({
- followerId: actor._id,
- followeeId: followee._id
- });
-
- return {
- resolver,
- object: { $ref: 'following', $id: _id }
- };
- }
-
- const promisedFollowing = Following.insert({
- createdAt: new Date(),
- followerId: actor._id,
- followeeId: followee._id
- }).then(following => new Promise((resolve, reject) => {
- queue.create('http', {
- type: 'follow',
- following: following._id
- }).save(error => {
- if (error) {
- reject(error);
- } else {
- resolve(following);
- }
- });
- }) as Promise<IFollowing>, async error => {
- // duplicate key error
- if (error instanceof MongoError && error.code === 11000) {
- return Following.findOne({
- followerId: actor._id,
- followeeId: followee._id
- });
- }
-
- throw error;
- });
-
- const accept = renderAccept(activity);
- accept['@context'] = context;
-
- await request(followee, actor.account.inbox, accept);
-
- return promisedFollowing.then(({ _id }) => ({
- resolver,
- object: { $ref: 'following', $id: _id }
- }));
+ await follow(actor, followee, activity);
};