From afffe98839db7ccbfa9fb8b7d1413b97900fdc73 Mon Sep 17 00:00:00 2001 From: Chocobozzz Date: Fri, 17 Nov 2017 11:35:10 +0100 Subject: Speed up activity pub http requests --- .../activitypub-http-unicast-handler.ts | 40 ++++++++++++++++++++++ 1 file changed, 40 insertions(+) create mode 100644 server/lib/jobs/activitypub-http-job-scheduler/activitypub-http-unicast-handler.ts (limited to 'server/lib/jobs/activitypub-http-job-scheduler/activitypub-http-unicast-handler.ts') diff --git a/server/lib/jobs/activitypub-http-job-scheduler/activitypub-http-unicast-handler.ts b/server/lib/jobs/activitypub-http-job-scheduler/activitypub-http-unicast-handler.ts new file mode 100644 index 000000000..8d3b755ad --- /dev/null +++ b/server/lib/jobs/activitypub-http-job-scheduler/activitypub-http-unicast-handler.ts @@ -0,0 +1,40 @@ +import { logger } from '../../../helpers' +import { doRequest } from '../../../helpers/requests' +import { ActivityPubHttpPayload } from './activitypub-http-job-scheduler' +import { database as db } from '../../../initializers/database' +import { buildSignedActivity } from '../../../helpers/activitypub' + +async function process (payload: ActivityPubHttpPayload, jobId: number) { + logger.info('Processing ActivityPub unicast in job %d.', jobId) + + const accountSignature = await db.Account.load(payload.signatureAccountId) + if (!accountSignature) throw new Error('Unknown signature account id.') + + const signedBody = await buildSignedActivity(accountSignature, payload.body) + const uri = payload.uris[0] + const options = { + method: 'POST', + uri, + json: signedBody + } + + await doRequest(options) +} + +function onError (err: Error, jobId: number) { + logger.error('Error when sending ActivityPub request in job %d.', jobId, err) + return Promise.resolve() +} + +function onSuccess (jobId: number) { + logger.info('Job %d is a success.', jobId) + return Promise.resolve() +} + +// --------------------------------------------------------------------------- + +export { + process, + onError, + onSuccess +} -- cgit v1.2.3