diff options
| author | Acid Chicken (硫酸鶏) <root@acid-chicken.com> | 2019-01-31 17:53:49 +0900 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2019-01-31 17:53:49 +0900 |
| commit | 76569bfb08b781ca2596a271408d22d9ea719385 (patch) | |
| tree | 9810122a7a2d8857dd318f63c4766f48441f9f31 /src | |
| parent | Create type definition for 'promise-any' (#4055) (diff) | |
| download | sharkey-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.ts | 17 | ||||
| -rw-r--r-- | src/remote/activitypub/request.ts | 12 |
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); }); }); } |