mirror of
https://github.com/LemmyNet/lemmy-js-client.git
synced 2024-11-01 01:59:55 +00:00
Merge pull request #134 from ExperiBass/custom-fetchinator
add support for a custom fetch function (closing #132)
This commit is contained in:
commit
15b89ba0dd
1 changed files with 16 additions and 6 deletions
22
src/http.ts
22
src/http.ts
|
@ -148,18 +148,28 @@ export class LemmyHttp {
|
|||
#apiUrl: string;
|
||||
#headers: { [key: string]: string } = {};
|
||||
#pictrsUrl: string;
|
||||
#fetchFunction = fetch;
|
||||
|
||||
/**
|
||||
* Generates a new instance of LemmyHttp.
|
||||
* @param baseUrl the base url, without the vX version: https://lemmy.ml -> goes to https://lemmy.ml/api/vX
|
||||
* @param headers optional headers. Should contain `x-real-ip` and `x-forwarded-for` .
|
||||
*/
|
||||
constructor(baseUrl: string, headers?: { [key: string]: string }) {
|
||||
constructor(
|
||||
baseUrl: string,
|
||||
options?: {
|
||||
fetchFunction: typeof fetch;
|
||||
headers?: { [key: string]: string };
|
||||
}
|
||||
) {
|
||||
this.#apiUrl = `${baseUrl.replace(/\/+$/, "")}/api/${VERSION}`;
|
||||
this.#pictrsUrl = `${baseUrl}/pictrs/image`;
|
||||
|
||||
if (headers) {
|
||||
this.#headers = headers;
|
||||
if (options?.headers) {
|
||||
this.#headers = options.headers;
|
||||
}
|
||||
if (options?.fetchFunction) {
|
||||
this.#fetchFunction = options.fetchFunction;
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -1265,7 +1275,7 @@ export class LemmyHttp {
|
|||
let url: string | undefined = undefined;
|
||||
let delete_url: string | undefined = undefined;
|
||||
|
||||
const response = await fetch(this.#pictrsUrl, {
|
||||
const response = await this.#fetchFunction(this.#pictrsUrl, {
|
||||
method: HttpType.Post,
|
||||
body: formData as unknown as BodyInit,
|
||||
headers: {
|
||||
|
@ -1301,12 +1311,12 @@ export class LemmyHttp {
|
|||
let response: Response;
|
||||
if (type_ === HttpType.Get) {
|
||||
const getUrl = `${this.#buildFullUrl(endpoint)}?${encodeGetParams(form)}`;
|
||||
response = await fetch(getUrl, {
|
||||
response = await this.#fetchFunction(getUrl, {
|
||||
method: HttpType.Get,
|
||||
headers: this.#headers,
|
||||
});
|
||||
} else {
|
||||
response = await fetch(this.#buildFullUrl(endpoint), {
|
||||
response = await this.#fetchFunction(this.#buildFullUrl(endpoint), {
|
||||
method: type_,
|
||||
headers: {
|
||||
"Content-Type": "application/json",
|
||||
|
|
Loading…
Reference in a new issue