diff options
| author | Hazelnoot <acomputerdog@gmail.com> | 2025-05-26 11:17:20 -0400 |
|---|---|---|
| committer | Hazelnoot <acomputerdog@gmail.com> | 2025-05-26 11:17:20 -0400 |
| commit | e689c047644e4083bafe8e2a79ff9a677fa96e1b (patch) | |
| tree | ffd4c2843efc276f685f190559d4e2f58236ec45 /packages | |
| parent | resolve collection items in ApInboxService (diff) | |
| download | sharkey-e689c047644e4083bafe8e2a79ff9a677fa96e1b.tar.gz sharkey-e689c047644e4083bafe8e2a79ff9a677fa96e1b.tar.bz2 sharkey-e689c047644e4083bafe8e2a79ff9a677fa96e1b.zip | |
add options expandCollectionItems and allowAnonymous to ap/get endpoint
Diffstat (limited to 'packages')
| -rw-r--r-- | packages/backend/src/server/api/endpoints/ap/get.ts | 16 |
1 files changed, 15 insertions, 1 deletions
diff --git a/packages/backend/src/server/api/endpoints/ap/get.ts b/packages/backend/src/server/api/endpoints/ap/get.ts index 14286bc23e..3fe5c60a44 100644 --- a/packages/backend/src/server/api/endpoints/ap/get.ts +++ b/packages/backend/src/server/api/endpoints/ap/get.ts @@ -7,6 +7,7 @@ import { Injectable } from '@nestjs/common'; import ms from 'ms'; import { Endpoint } from '@/server/api/endpoint-base.js'; import { ApResolverService } from '@/core/activitypub/ApResolverService.js'; +import { isCollectionOrOrderedCollection, isOrderedCollection, isOrderedCollectionPage } from '@/core/activitypub/type.js'; export const meta = { tags: ['federation'], @@ -33,6 +34,8 @@ export const paramDef = { type: 'object', properties: { uri: { type: 'string' }, + expandCollectionItems: { type: 'boolean' }, + allowAnonymous: { type: 'boolean' }, }, required: ['uri'], } as const; @@ -44,7 +47,18 @@ export default class extends Endpoint<typeof meta, typeof paramDef> { // eslint- ) { super(meta, paramDef, async (ps, me) => { const resolver = this.apResolverService.createResolver(); - const object = await resolver.resolve(ps.uri); + const object = await resolver.resolve(ps.uri, ps.allowAnonymous ?? false); + + if (ps.expandCollectionItems && isCollectionOrOrderedCollection(object)) { + const items = await resolver.resolveCollectionItems(object, undefined, ps.allowAnonymous ?? false); + + if (isOrderedCollection(object) || isOrderedCollectionPage(object)) { + object.orderedItems = items; + } else { + object.items = items; + } + } + return object; }); } |