From 0e9c48c2edbb3871b0ca3ccd6718f2c99f9760b6 Mon Sep 17 00:00:00 2001 From: Chocobozzz Date: Mon, 8 Apr 2019 11:52:29 +0200 Subject: Add ability to remove an instance follower in API --- server/lib/activitypub/send/send-reject.ts | 44 ++++++++++++++++++++++++++++++ 1 file changed, 44 insertions(+) create mode 100644 server/lib/activitypub/send/send-reject.ts (limited to 'server/lib/activitypub/send/send-reject.ts') diff --git a/server/lib/activitypub/send/send-reject.ts b/server/lib/activitypub/send/send-reject.ts new file mode 100644 index 000000000..db8c2d86d --- /dev/null +++ b/server/lib/activitypub/send/send-reject.ts @@ -0,0 +1,44 @@ +import { ActivityFollow, ActivityReject } from '../../../../shared/models/activitypub' +import { ActorModel } from '../../../models/activitypub/actor' +import { ActorFollowModel } from '../../../models/activitypub/actor-follow' +import { getActorFollowAcceptActivityPubUrl, getActorFollowActivityPubUrl } from '../url' +import { unicastTo } from './utils' +import { buildFollowActivity } from './send-follow' +import { logger } from '../../../helpers/logger' + +async function sendReject (actorFollow: ActorFollowModel) { + const follower = actorFollow.ActorFollower + const me = actorFollow.ActorFollowing + + if (!follower.serverId) { // This should never happen + logger.warn('Do not sending reject to local follower.') + return + } + + logger.info('Creating job to reject follower %s.', follower.url) + + const followUrl = getActorFollowActivityPubUrl(actorFollow) + const followData = buildFollowActivity(followUrl, follower, me) + + const url = getActorFollowAcceptActivityPubUrl(actorFollow) + const data = buildRejectActivity(url, me, followData) + + return unicastTo(data, me, follower.inboxUrl) +} + +// --------------------------------------------------------------------------- + +export { + sendReject +} + +// --------------------------------------------------------------------------- + +function buildRejectActivity (url: string, byActor: ActorModel, followActivityData: ActivityFollow): ActivityReject { + return { + type: 'Reject', + id: url, + actor: byActor.url, + object: followActivityData + } +} -- cgit v1.2.3