X-Git-Url: https://git.immae.eu/?a=blobdiff_plain;f=server%2Fhelpers%2Fwebfinger.ts;h=5443a266b0087de6587659cdb30b493b1b6efa9b;hb=32c68d67d9125df62ead71668efca4da30132786;hp=5c60de10c2cca88254f5a4c10dfefe1f7173beb6;hpb=06a05d5f4784a7cbb27aa1188385b5679845dad8;p=github%2FChocobozzz%2FPeerTube.git diff --git a/server/helpers/webfinger.ts b/server/helpers/webfinger.ts index 5c60de10c..5443a266b 100644 --- a/server/helpers/webfinger.ts +++ b/server/helpers/webfinger.ts @@ -3,6 +3,8 @@ import { WebFingerData } from '../../shared' import { ActorModel } from '../models/activitypub/actor' import { isTestInstance } from './core-utils' import { isActivityPubUrlValid } from './custom-validators/activitypub/misc' +import { WEBSERVER } from '../initializers/constants' +import { MActorFull } from '../typings/models' const webfinger = new WebFinger({ webfist_fallback: false, @@ -11,10 +13,19 @@ const webfinger = new WebFinger({ request_timeout: 3000 }) -async function loadActorUrlOrGetFromWebfinger (uri: string) { +async function loadActorUrlOrGetFromWebfinger (uriArg: string) { + // Handle strings like @toto@example.com + const uri = uriArg.startsWith('@') ? uriArg.slice(1) : uriArg + const [ name, host ] = uri.split('@') + let actor: MActorFull + + if (!host || host === WEBSERVER.HOST) { + actor = await ActorModel.loadLocalByName(name) + } else { + actor = await ActorModel.loadByNameAndHost(name, host) + } - const actor = await ActorModel.loadByNameAndHost(name, host) if (actor) return actor.url return getUrlFromWebfinger(uri)