summaryrefslogtreecommitdiff
path: root/src/remote/webfinger.ts
diff options
context:
space:
mode:
authorAkihiko Odaki <nekomanma@pixiv.co.jp>2018-04-02 18:36:47 +0900
committerAkihiko Odaki <nekomanma@pixiv.co.jp>2018-04-02 18:36:47 +0900
commit69763ac32b4e79e84d8338ba8e20b83add9d8560 (patch)
treea3ac499dac06decbc8c47a3d393336f5fbedc56a /src/remote/webfinger.ts
parentDistribute posts from remote (diff)
downloadmisskey-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.ts24
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());
+}