diff options
| author | Akihiko Odaki <nekomanma@pixiv.co.jp> | 2018-04-02 18:36:47 +0900 |
|---|---|---|
| committer | Akihiko Odaki <nekomanma@pixiv.co.jp> | 2018-04-02 18:36:47 +0900 |
| commit | 69763ac32b4e79e84d8338ba8e20b83add9d8560 (patch) | |
| tree | a3ac499dac06decbc8c47a3d393336f5fbedc56a /src/remote/webfinger.ts | |
| parent | Distribute posts from remote (diff) | |
| download | misskey-69763ac32b4e79e84d8338ba8e20b83add9d8560.tar.gz misskey-69763ac32b4e79e84d8338ba8e20b83add9d8560.tar.bz2 misskey-69763ac32b4e79e84d8338ba8e20b83add9d8560.zip | |
Resolve account by signature in inbox
Diffstat (limited to 'src/remote/webfinger.ts')
| -rw-r--r-- | src/remote/webfinger.ts | 24 |
1 files changed, 16 insertions, 8 deletions
diff --git a/src/remote/webfinger.ts b/src/remote/webfinger.ts index fec5da689c..4c0304e3f1 100644 --- a/src/remote/webfinger.ts +++ b/src/remote/webfinger.ts @@ -12,14 +12,22 @@ type IWebFinger = { subject: string; }; -export default (query, verifier): Promise<IWebFinger> => new Promise((res, rej) => webFinger.lookup(query, (error, result) => { - if (error) { - return rej(error); - } +export default async function resolve(query, verifier?: string): Promise<IWebFinger> { + const finger = await new Promise((res, rej) => webFinger.lookup(query, (error, result) => { + if (error) { + return rej(error); + } + + res(result.object); + })) as IWebFinger; + + if (verifier) { + if (finger.subject.toLowerCase().replace(/^acct:/, '') !== verifier) { + throw 'WebFinger verfification failed'; + } - if (result.object.subject.toLowerCase().replace(/^acct:/, '') !== verifier) { - return rej('WebFinger verfification failed'); + return finger; } - res(result.object); -})); + return resolve(finger.subject, finger.subject.toLowerCase()); +} |