wildebeest/consumer/src/deliver.ts

19 wiersze
863 B
TypeScript

import type { DeliverMessageBody } from 'wildebeest/backend/src/types/queue'
import { getSigningKey } from 'wildebeest/backend/src/mastodon/account'
import * as actors from 'wildebeest/backend/src/activitypub/actors'
import type { Actor } from 'wildebeest/backend/src/activitypub/actors'
import type { Env } from './'
import { deliverToActor } from 'wildebeest/backend/src/activitypub/deliver'
export async function handleDeliverMessage(env: Env, actor: Actor, message: DeliverMessageBody) {
const toActorId = new URL(message.toActorId)
const targetActor = await actors.getAndCache(toActorId, env.DATABASE)
if (targetActor === null) {
console.warn(`actor ${toActorId} not found`)
return
}
const signingKey = await getSigningKey(message.userKEK, env.DATABASE, actor)
await deliverToActor(signingKey, actor, targetActor, message.activity, env.DOMAIN)
}