mirror of
https://github.com/discordjs/discord.js.git
synced 2026-03-16 11:33:30 +01:00
fix(rest): use http agent when protocol is not https (#7309)
This commit is contained in:
@@ -2,15 +2,14 @@ import Collection from '@discordjs/collection';
|
|||||||
import FormData from 'form-data';
|
import FormData from 'form-data';
|
||||||
import { DiscordSnowflake } from '@sapphire/snowflake';
|
import { DiscordSnowflake } from '@sapphire/snowflake';
|
||||||
import { EventEmitter } from 'node:events';
|
import { EventEmitter } from 'node:events';
|
||||||
import { Agent } from 'node:https';
|
import { Agent as httpsAgent } from 'node:https';
|
||||||
|
import { Agent as httpAgent } from 'node:http';
|
||||||
import type { RequestInit, BodyInit } from 'node-fetch';
|
import type { RequestInit, BodyInit } from 'node-fetch';
|
||||||
import type { IHandler } from './handlers/IHandler';
|
import type { IHandler } from './handlers/IHandler';
|
||||||
import { SequentialHandler } from './handlers/SequentialHandler';
|
import { SequentialHandler } from './handlers/SequentialHandler';
|
||||||
import type { RESTOptions, RestEvents } from './REST';
|
import type { RESTOptions, RestEvents } from './REST';
|
||||||
import { DefaultRestOptions, DefaultUserAgent, RESTEvents } from './utils/constants';
|
import { DefaultRestOptions, DefaultUserAgent, RESTEvents } from './utils/constants';
|
||||||
|
|
||||||
let agent: Agent | null = null;
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Represents a file to be added to the request
|
* Represents a file to be added to the request
|
||||||
*/
|
*/
|
||||||
@@ -186,6 +185,7 @@ export class RequestManager extends EventEmitter {
|
|||||||
|
|
||||||
private hashTimer!: NodeJS.Timer;
|
private hashTimer!: NodeJS.Timer;
|
||||||
private handlerTimer!: NodeJS.Timer;
|
private handlerTimer!: NodeJS.Timer;
|
||||||
|
private agent: httpsAgent | httpAgent | null = null;
|
||||||
|
|
||||||
public readonly options: RESTOptions;
|
public readonly options: RESTOptions;
|
||||||
|
|
||||||
@@ -318,7 +318,9 @@ export class RequestManager extends EventEmitter {
|
|||||||
private resolveRequest(request: InternalRequest): { url: string; fetchOptions: RequestInit } {
|
private resolveRequest(request: InternalRequest): { url: string; fetchOptions: RequestInit } {
|
||||||
const { options } = this;
|
const { options } = this;
|
||||||
|
|
||||||
agent ??= new Agent({ ...options.agent, keepAlive: true });
|
this.agent ??= options.api.startsWith('https')
|
||||||
|
? new httpsAgent({ ...options.agent, keepAlive: true })
|
||||||
|
: new httpAgent({ ...options.agent, keepAlive: true });
|
||||||
|
|
||||||
let query = '';
|
let query = '';
|
||||||
|
|
||||||
@@ -394,7 +396,7 @@ export class RequestManager extends EventEmitter {
|
|||||||
}
|
}
|
||||||
|
|
||||||
const fetchOptions = {
|
const fetchOptions = {
|
||||||
agent,
|
agent: this.agent,
|
||||||
body: finalBody,
|
body: finalBody,
|
||||||
// eslint-disable-next-line @typescript-eslint/consistent-type-assertions
|
// eslint-disable-next-line @typescript-eslint/consistent-type-assertions
|
||||||
headers: { ...(request.headers ?? {}), ...additionalHeaders, ...headers } as Record<string, string>,
|
headers: { ...(request.headers ?? {}), ...additionalHeaders, ...headers } as Record<string, string>,
|
||||||
|
|||||||
Reference in New Issue
Block a user