From 1d6cb47d4598cd5d750cf3642993bb11233e181e Mon Sep 17 00:00:00 2001
From: Kir_Antipov <kp.antipov@gmail.com>
Date: Fri, 5 Jan 2024 15:21:13 +0000
Subject: [PATCH] Added `fetch` to the generic uploader options

This allows us to have better control over the behavior of a generic uploader.
---
 src/platforms/generic-platform-uploader.ts | 12 ++++++++++++
 1 file changed, 12 insertions(+)

diff --git a/src/platforms/generic-platform-uploader.ts b/src/platforms/generic-platform-uploader.ts
index e5ee383..7cfb838 100644
--- a/src/platforms/generic-platform-uploader.ts
+++ b/src/platforms/generic-platform-uploader.ts
@@ -6,6 +6,7 @@ import { JavaVersion } from "@/utils/java";
 import { Logger, LoggingStopwatch, NULL_LOGGER } from "@/utils/logging";
 import { SecureString } from "@/utils/security";
 import { VersionType } from "@/utils/versioning";
+import { Fetch, fetch } from "@/utils/net";
 import { CurseForgeUploaderOptions } from "./curseforge/curseforge-uploader";
 import { GitHubUploaderOptions } from "./github/github-uploader";
 import { ModrinthUploaderOptions } from "./modrinth/modrinth-uploader";
@@ -20,6 +21,11 @@ export interface GenericPlatformUploaderOptions {
      * An optional logger that can be used for recording log messages.
      */
     logger?: Logger;
+
+    /**
+     * The Fetch implementation used for making HTTP requests.
+     */
+    fetch?: Fetch;
 }
 
 /**
@@ -123,6 +129,11 @@ export abstract class GenericPlatformUploader<TOptions extends GenericPlatformUp
      */
     protected readonly _logger: Logger;
 
+    /**
+     * The Fetch implementation used for making HTTP requests.
+     */
+    protected readonly _fetch: Fetch;
+
     /**
      * Constructs a new {@link PlatformUploader} instance.
      *
@@ -130,6 +141,7 @@ export abstract class GenericPlatformUploader<TOptions extends GenericPlatformUp
      */
     protected constructor(options?: TOptions) {
         this._logger = options?.logger || NULL_LOGGER;
+        this._fetch = options?.fetch || fetch;
     }
 
     /**