From e4f97babf701481b55cc10fb3448feab5f97c867 Mon Sep 17 00:00:00 2001 From: Chocobozzz Date: Thu, 9 Nov 2017 17:51:58 +0100 Subject: Begin activitypub --- server/helpers/webfinger.ts | 44 ++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 44 insertions(+) create mode 100644 server/helpers/webfinger.ts (limited to 'server/helpers/webfinger.ts') diff --git a/server/helpers/webfinger.ts b/server/helpers/webfinger.ts new file mode 100644 index 000000000..9586fa562 --- /dev/null +++ b/server/helpers/webfinger.ts @@ -0,0 +1,44 @@ +import * as WebFinger from 'webfinger.js' + +import { isTestInstance } from './core-utils' +import { isActivityPubUrlValid } from './custom-validators' +import { WebFingerData } from '../../shared' +import { fetchRemoteAccountAndCreatePod } from './activitypub' + +const webfinger = new WebFinger({ + webfist_fallback: false, + tls_only: isTestInstance(), + uri_fallback: false, + request_timeout: 3000 +}) + +async function getAccountFromWebfinger (url: string) { + const webfingerData: WebFingerData = await webfingerLookup(url) + + if (Array.isArray(webfingerData.links) === false) return undefined + + const selfLink = webfingerData.links.find(l => l.rel === 'self') + if (selfLink === undefined || isActivityPubUrlValid(selfLink.href) === false) return undefined + + const { account } = await fetchRemoteAccountAndCreatePod(selfLink.href) + + return account +} + +// --------------------------------------------------------------------------- + +export { + getAccountFromWebfinger +} + +// --------------------------------------------------------------------------- + +function webfingerLookup (url: string) { + return new Promise((res, rej) => { + webfinger.lookup('nick@silverbucket.net', (err, p) => { + if (err) return rej(err) + + return p + }) + }) +} -- cgit v1.2.3