refactor: rewrite header handling, lowercase apiKey, and cleanup

This commit is contained in:
Derrick Hammer 2024-03-18 09:06:52 -04:00
parent ba370250a2
commit 7bc48484a2
Signed by: pcfreak30
GPG Key ID: C997C339BE476FF2
2 changed files with 49 additions and 54 deletions

View File

@ -88,7 +88,7 @@ export async function getCidUrl(
): Promise<string> { ): Promise<string> {
const opt = { ...this.customOptions, customOptions }; const opt = { ...this.customOptions, customOptions };
return addUrlQuery(path.join(this.portalUrl, cid), { return addUrlQuery(path.join(this.portalUrl, cid), {
auth_token: opt.ApiKey, auth_token: opt.apiKey,
}); });
} }

View File

@ -1,10 +1,10 @@
import { AxiosProgressEvent, AxiosRequestConfig } from "axios"; import {AxiosHeaders, AxiosProgressEvent, AxiosRequestConfig} from "axios";
import { S5Client } from "../client.js"; import {S5Client} from "../client.js";
/** /**
* Custom client options. * Custom client options.
* *
* @property [ApiKey] - Authentication password to use for a single S5 node/portal. * @property [apiKey] - Authentication password to use for a single S5 node/portal.
* @property [customUserAgent] - Custom user agent header to set. * @property [customUserAgent] - Custom user agent header to set.
* @property [customCookie] - Custom cookie header to set. WARNING: the Cookie header cannot be set in browsers. This is meant for usage in server contexts. * @property [customCookie] - Custom cookie header to set. WARNING: the Cookie header cannot be set in browsers. This is meant for usage in server contexts.
* @property [onDownloadProgress] - Optional callback to track download progress. * @property [onDownloadProgress] - Optional callback to track download progress.
@ -12,7 +12,7 @@ import { S5Client } from "../client.js";
*/ */
export type CustomClientOptions = { export type CustomClientOptions = {
ApiKey?: string; apiKey?: string;
customUserAgent?: string; customUserAgent?: string;
customCookie?: string; customCookie?: string;
onDownloadProgress?: (progressEvent: AxiosProgressEvent) => void; onDownloadProgress?: (progressEvent: AxiosProgressEvent) => void;
@ -39,7 +39,7 @@ export function optionsToConfig(
...def, ...def,
...client.customOptions, ...client.customOptions,
...extraOptions, ...extraOptions,
}; } as CustomClientOptions;
if (finalOptions?.onDownloadProgress) { if (finalOptions?.onDownloadProgress) {
config.onDownloadProgress = finalOptions?.onDownloadProgress; config.onDownloadProgress = finalOptions?.onDownloadProgress;
@ -49,32 +49,27 @@ export function optionsToConfig(
config.onUploadProgress = finalOptions?.onUploadProgress; config.onUploadProgress = finalOptions?.onUploadProgress;
} }
const headers = new AxiosHeaders(config.headers as AxiosHeaders)
if (finalOptions?.customCookie) { if (finalOptions?.customCookie) {
config.headers = { headers.set("Cookie", finalOptions.customCookie);
Cookie: finalOptions?.customCookie,
};
}
}
if (finalOptions?.customUserAgent) { if (finalOptions?.customUserAgent) {
config.headers = { headers.set("User-Agent", finalOptions.customUserAgent);
...config.headers,
"User-Agent": finalOptions?.customUserAgent,
};
} }
if (finalOptions?.ApiKey) { if (finalOptions?.apiKey) {
config.headers = { headers.set("Authorization", `Bearer ${finalOptions.apiKey}`);
...config.headers,
Authorization: `Bearer ${finalOptions?.ApiKey}`,
};
config.withCredentials = true; config.withCredentials = true;
config.params = { config.params = {
...config.params, ...config.params,
auth_token: finalOptions?.ApiKey, auth_token: finalOptions?.apiKey,
}; };
} }
config.headers = headers;
return config; return config;
} }