From 50d6de9c286abcb34ff4234d56d9cbb803db7665 Mon Sep 17 00:00:00 2001 From: Chocobozzz Date: Thu, 14 Dec 2017 17:38:41 +0100 Subject: Begin moving video channel to actor --- server/helpers/webfinger.ts | 33 ++++++++++++++++++--------------- 1 file changed, 18 insertions(+), 15 deletions(-) (limited to 'server/helpers/webfinger.ts') diff --git a/server/helpers/webfinger.ts b/server/helpers/webfinger.ts index d98068cd7..76444fbe3 100644 --- a/server/helpers/webfinger.ts +++ b/server/helpers/webfinger.ts @@ -1,6 +1,6 @@ import * as WebFinger from 'webfinger.js' import { WebFingerData } from '../../shared' -import { fetchRemoteAccount } from '../lib/activitypub' +import { ActorModel } from '../models/activitypub/actor' import { isTestInstance } from './core-utils' import { isActivityPubUrlValid } from './custom-validators/activitypub' @@ -11,30 +11,33 @@ const webfinger = new WebFinger({ request_timeout: 3000 }) -async function getAccountFromWebfinger (nameWithHost: string) { - const webfingerData: WebFingerData = await webfingerLookup(nameWithHost) +async function loadActorUrlOrGetFromWebfinger (name: string, host: string) { + const actor = await ActorModel.loadByNameAndHost(name, host) + if (actor) return actor.url - if (Array.isArray(webfingerData.links) === false) throw new Error('WebFinger links is not an array.') - - const selfLink = webfingerData.links.find(l => l.rel === 'self') - if (selfLink === undefined || isActivityPubUrlValid(selfLink.href) === false) { - throw new Error('Cannot find self link or href is not a valid URL.') - } - - const account = await fetchRemoteAccount(selfLink.href) - if (account === undefined) throw new Error('Cannot fetch remote account ' + selfLink.href) - - return account + const webfingerData: WebFingerData = await webfingerLookup(name + '@' + host) + return getLinkOrThrow(webfingerData) } // --------------------------------------------------------------------------- export { - getAccountFromWebfinger + loadActorUrlOrGetFromWebfinger } // --------------------------------------------------------------------------- +function getLinkOrThrow (webfingerData: WebFingerData) { + if (Array.isArray(webfingerData.links) === false) throw new Error('WebFinger links is not an array.') + + const selfLink = webfingerData.links.find(l => l.rel === 'self') + if (selfLink === undefined || isActivityPubUrlValid(selfLink.href) === false) { + throw new Error('Cannot find self link or href is not a valid URL.') + } + + return selfLink.href +} + function webfingerLookup (nameWithHost: string) { return new Promise((res, rej) => { webfinger.lookup(nameWithHost, (err, p) => { -- cgit v1.2.3