diff options
| author | MeiMei <30769358+mei23@users.noreply.github.com> | 2020-04-09 23:42:23 +0900 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2020-04-09 23:42:23 +0900 |
| commit | d3c0f3c251e8371d78d953f32f7311a38f4a1bdb (patch) | |
| tree | ef746ec79b4cc53ad15da2680b2e5d6280d39867 /src/misc/fetch.ts | |
| parent | Create aiscript.ja-JP.md (diff) | |
| download | sharkey-d3c0f3c251e8371d78d953f32f7311a38f4a1bdb.tar.gz sharkey-d3c0f3c251e8371d78d953f32f7311a38f4a1bdb.tar.bz2 sharkey-d3c0f3c251e8371d78d953f32f7311a38f4a1bdb.zip | |
Use node-fetch instead of request (#6228)
* requestをnode-fetchになど
* format
* fix error
* t
* Fix test
Diffstat (limited to 'src/misc/fetch.ts')
| -rw-r--r-- | src/misc/fetch.ts | 43 |
1 files changed, 43 insertions, 0 deletions
diff --git a/src/misc/fetch.ts b/src/misc/fetch.ts new file mode 100644 index 0000000000..887aae1659 --- /dev/null +++ b/src/misc/fetch.ts @@ -0,0 +1,43 @@ +import * as http from 'http'; +import * as https from 'https'; +import * as cache from 'lookup-dns-cache'; +import fetch, { HeadersInit } from 'node-fetch'; +import { HttpProxyAgent } from 'http-proxy-agent'; +import { HttpsProxyAgent } from 'https-proxy-agent'; +import config from '../config'; + +export async function getJson(url: string, accept = 'application/json, */*', timeout = 10000, headers?: HeadersInit) { + const res = await fetch(url, { + headers: Object.assign({ + 'User-Agent': config.userAgent, + Accept: accept + }, headers || {}), + timeout, + agent: u => u.protocol == 'http:' ? httpAgent : httpsAgent, + }); + + if (!res.ok) { + throw { + name: `StatusError`, + statusCode: res.status, + message: `${res.status} ${res.statusText}`, + }; + } + + return await res.json(); +} + +export const httpAgent = config.proxy + ? new HttpProxyAgent(config.proxy) + : new http.Agent({ + keepAlive: true, + keepAliveMsecs: 30 * 1000, + }); + +export const httpsAgent = config.proxy + ? new HttpsProxyAgent(config.proxy) + : new https.Agent({ + keepAlive: true, + keepAliveMsecs: 30 * 1000, + lookup: cache.lookup, + }); |