summaryrefslogtreecommitdiff
path: root/packages/backend/src/server
diff options
context:
space:
mode:
authorHazelnoot <acomputerdog@gmail.com>2025-05-26 11:17:20 -0400
committerHazelnoot <acomputerdog@gmail.com>2025-05-26 11:17:20 -0400
commite689c047644e4083bafe8e2a79ff9a677fa96e1b (patch)
treeffd4c2843efc276f685f190559d4e2f58236ec45 /packages/backend/src/server
parentresolve collection items in ApInboxService (diff)
downloadsharkey-e689c047644e4083bafe8e2a79ff9a677fa96e1b.tar.gz
sharkey-e689c047644e4083bafe8e2a79ff9a677fa96e1b.tar.bz2
sharkey-e689c047644e4083bafe8e2a79ff9a677fa96e1b.zip
add options expandCollectionItems and allowAnonymous to ap/get endpoint
Diffstat (limited to 'packages/backend/src/server')
-rw-r--r--packages/backend/src/server/api/endpoints/ap/get.ts16
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;
});
}