summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorAcid Chicken (硫酸鶏) <root@acid-chicken.com>2019-01-31 17:53:49 +0900
committerGitHub <noreply@github.com>2019-01-31 17:53:49 +0900
commit76569bfb08b781ca2596a271408d22d9ea719385 (patch)
tree9810122a7a2d8857dd318f63c4766f48441f9f31 /src
parentCreate type definition for 'promise-any' (#4055) (diff)
downloadsharkey-76569bfb08b781ca2596a271408d22d9ea719385.tar.gz
sharkey-76569bfb08b781ca2596a271408d22d9ea719385.tar.bz2
sharkey-76569bfb08b781ca2596a271408d22d9ea719385.zip
Create type definition for 'lookup-dns-cache' (#4051)
Diffstat (limited to 'src')
-rw-r--r--src/@types/lookup-dns-cache.d.ts17
-rw-r--r--src/remote/activitypub/request.ts12
2 files changed, 23 insertions, 6 deletions
diff --git a/src/@types/lookup-dns-cache.d.ts b/src/@types/lookup-dns-cache.d.ts
new file mode 100644
index 0000000000..ae93cc539b
--- /dev/null
+++ b/src/@types/lookup-dns-cache.d.ts
@@ -0,0 +1,17 @@
+declare module 'lookup-dns-cache' {
+ type IPv4 = 4;
+
+ type IPv6 = 6;
+
+ type Family = IPv4 | IPv6 | undefined;
+
+ interface IRunOptions {
+ family?: Family;
+ all?: boolean;
+ }
+
+ type RunCallback = (error: Error | null, address?: string | string[], family?: Family) => void;
+
+ export function lookup(hostname: string, options: IRunOptions | Family, callback: RunCallback): {} | undefined;
+ export function lookup(hostname: string, callback: RunCallback): {} | undefined;
+}
diff --git a/src/remote/activitypub/request.ts b/src/remote/activitypub/request.ts
index 7e487f76ec..9baab83740 100644
--- a/src/remote/activitypub/request.ts
+++ b/src/remote/activitypub/request.ts
@@ -3,7 +3,7 @@ const { sign } = require('http-signature');
import { URL } from 'url';
import * as debug from 'debug';
import * as crypto from 'crypto';
-const { lookup } = require('lookup-dns-cache');
+import { lookup, IRunOptions } from 'lookup-dns-cache';
import * as promiseAny from 'promise-any';
import config from '../../config';
@@ -89,16 +89,16 @@ export default (user: ILocalUser, url: string, object: any) => new Promise(async
async function resolveAddr(domain: string) {
// v4/v6で先に取得できた方を採用する
return await promiseAny([
- resolveAddrInner(domain, { ipv6: false }),
- resolveAddrInner(domain, { ipv6: true })
+ resolveAddrInner(domain, { family: 4 }),
+ resolveAddrInner(domain, { family: 6 })
]);
}
-function resolveAddrInner(domain: string, options = { }): Promise<string> {
+function resolveAddrInner(domain: string, options: IRunOptions = {}): Promise<string> {
return new Promise((res, rej) => {
- lookup(domain, options, (error: any, address: string) => {
+ lookup(domain, options, (error: any, address: string | string[]) => {
if (error) return rej(error);
- return res(address);
+ return res(Array.isArray(address) ? address[0] : address);
});
});
}