From a219c9100b3ce8774d454497d46be87465bf664e Mon Sep 17 00:00:00 2001 From: Chocobozzz Date: Wed, 23 Mar 2022 16:14:33 +0100 Subject: Refactor AP context builder --- .../handlers/activitypub-http-broadcast.ts | 2 +- .../job-queue/handlers/activitypub-http-unicast.ts | 2 +- .../handlers/utils/activitypub-http-utils.ts | 59 ---------------------- 3 files changed, 2 insertions(+), 61 deletions(-) delete mode 100644 server/lib/job-queue/handlers/utils/activitypub-http-utils.ts (limited to 'server/lib/job-queue/handlers') diff --git a/server/lib/job-queue/handlers/activitypub-http-broadcast.ts b/server/lib/job-queue/handlers/activitypub-http-broadcast.ts index fbf01d276..709e8501f 100644 --- a/server/lib/job-queue/handlers/activitypub-http-broadcast.ts +++ b/server/lib/job-queue/handlers/activitypub-http-broadcast.ts @@ -1,11 +1,11 @@ import { map } from 'bluebird' import { Job } from 'bull' +import { buildGlobalHeaders, buildSignedRequestOptions, computeBody } from '@server/lib/activitypub/send' import { ActorFollowHealthCache } from '@server/lib/actor-follow-health-cache' import { ActivitypubHttpBroadcastPayload } from '@shared/models' import { logger } from '../../../helpers/logger' import { doRequest } from '../../../helpers/requests' import { BROADCAST_CONCURRENCY } from '../../../initializers/constants' -import { buildGlobalHeaders, buildSignedRequestOptions, computeBody } from './utils/activitypub-http-utils' async function processActivityPubHttpBroadcast (job: Job) { logger.info('Processing ActivityPub broadcast in job %d.', job.id) diff --git a/server/lib/job-queue/handlers/activitypub-http-unicast.ts b/server/lib/job-queue/handlers/activitypub-http-unicast.ts index 673583d2b..99bcd3e8d 100644 --- a/server/lib/job-queue/handlers/activitypub-http-unicast.ts +++ b/server/lib/job-queue/handlers/activitypub-http-unicast.ts @@ -1,9 +1,9 @@ import { Job } from 'bull' +import { buildGlobalHeaders, buildSignedRequestOptions, computeBody } from '@server/lib/activitypub/send' import { ActivitypubHttpUnicastPayload } from '@shared/models' import { logger } from '../../../helpers/logger' import { doRequest } from '../../../helpers/requests' import { ActorFollowHealthCache } from '../../actor-follow-health-cache' -import { buildGlobalHeaders, buildSignedRequestOptions, computeBody } from './utils/activitypub-http-utils' async function processActivityPubHttpUnicast (job: Job) { logger.info('Processing ActivityPub unicast in job %d.', job.id) diff --git a/server/lib/job-queue/handlers/utils/activitypub-http-utils.ts b/server/lib/job-queue/handlers/utils/activitypub-http-utils.ts deleted file mode 100644 index 2a03325b7..000000000 --- a/server/lib/job-queue/handlers/utils/activitypub-http-utils.ts +++ /dev/null @@ -1,59 +0,0 @@ -import { buildDigest } from '@server/helpers/peertube-crypto' -import { buildSignedActivity } from '@server/lib/activitypub/activity' -import { getServerActor } from '@server/models/application/application' -import { ContextType } from '@shared/models/activitypub/context' -import { ACTIVITY_PUB, HTTP_SIGNATURE } from '../../../../initializers/constants' -import { ActorModel } from '../../../../models/actor/actor' -import { MActor } from '../../../../types/models' - -type Payload = { body: T, contextType?: ContextType, signatureActorId?: number } - -async function computeBody ( - payload: Payload -): Promise { - let body = payload.body - - if (payload.signatureActorId) { - const actorSignature = await ActorModel.load(payload.signatureActorId) - if (!actorSignature) throw new Error('Unknown signature actor id.') - - body = await buildSignedActivity(actorSignature, payload.body, payload.contextType) - } - - return body -} - -async function buildSignedRequestOptions (payload: Payload) { - let actor: MActor | null - - if (payload.signatureActorId) { - actor = await ActorModel.load(payload.signatureActorId) - if (!actor) throw new Error('Unknown signature actor id.') - } else { - // We need to sign the request, so use the server - actor = await getServerActor() - } - - const keyId = actor.url - return { - algorithm: HTTP_SIGNATURE.ALGORITHM, - authorizationHeaderName: HTTP_SIGNATURE.HEADER_NAME, - keyId, - key: actor.privateKey, - headers: HTTP_SIGNATURE.HEADERS_TO_SIGN - } -} - -function buildGlobalHeaders (body: any) { - return { - 'digest': buildDigest(body), - 'content-type': 'application/activity+json', - 'accept': ACTIVITY_PUB.ACCEPT_HEADER - } -} - -export { - buildGlobalHeaders, - computeBody, - buildSignedRequestOptions -} -- cgit v1.2.3