server: add hints to createPerson & resolvePerson

This commit is contained in:
Johann150 2022-05-20 10:36:14 +02:00
parent 90756dfdfc
commit 1f7f978bbd
Signed by untrusted user: Johann150
GPG key ID: 9EE6577A2A06F8F1

View file

@ -134,14 +134,14 @@ export async function fetchPerson(uri: string, resolver?: Resolver): Promise<Cac
/**
* Personを作成します
*/
export async function createPerson(uri: string, resolver?: Resolver = new Resolver()): Promise<User> {
export async function createPerson(uri: string, resolver?: Resolver = new Resolver(), hint?: IObject): Promise<User> {
if (typeof uri !== 'string') throw new Error('uri is not string');
if (uri.startsWith(config.url)) {
throw new StatusError('cannot resolve local user', 400, 'cannot resolve local user');
}
const object = await resolver.resolve(uri) as any;
const object = hint ?? await resolver.resolve(uri) as any;
const person = validateActor(object, uri);
@ -389,7 +389,7 @@ export async function updatePerson(uri: string, resolver?: Resolver = new Resolv
* If the target Person is registered in FoundKey, return it; otherwise, fetch it from a remote server and return it.
* Fetch the person from the remote server, register it in FoundKey, and return it.
*/
export async function resolvePerson(uri: string, resolver?: Resolver): Promise<CacheableUser> {
export async function resolvePerson(uri: string, resolver?: Resolver, hint?: IObject): Promise<CacheableUser> {
if (typeof uri !== 'string') throw new Error('uri is not string');
//#region このサーバーに既に登録されていたらそれを返す
@ -401,7 +401,7 @@ export async function resolvePerson(uri: string, resolver?: Resolver): Promise<C
//#endregion
// リモートサーバーからフェッチしてきて登録
return await createPerson(uri, resolver ?? new Resolver());
return await createPerson(uri, resolver ?? new Resolver(), hint);
}
const services: {