mirror of
https://github.com/bitwarden/browser
synced 2026-02-08 12:40:26 +00:00
* Make ApiService more testable * Add ApiService tests * Switch to only reading text/plain content
55 lines
2.0 KiB
TypeScript
55 lines
2.0 KiB
TypeScript
// FIXME: Update this file to be type safe and remove this and next line
|
|
// @ts-strict-ignore
|
|
import * as FormData from "form-data";
|
|
import { HttpsProxyAgent } from "https-proxy-agent";
|
|
import * as fe from "node-fetch";
|
|
|
|
import { TokenService } from "@bitwarden/common/auth/abstractions/token.service";
|
|
import { VaultTimeoutSettingsService } from "@bitwarden/common/key-management/vault-timeout";
|
|
import { AppIdService } from "@bitwarden/common/platform/abstractions/app-id.service";
|
|
import { EnvironmentService } from "@bitwarden/common/platform/abstractions/environment.service";
|
|
import { LogService } from "@bitwarden/common/platform/abstractions/log.service";
|
|
import { PlatformUtilsService } from "@bitwarden/common/platform/abstractions/platform-utils.service";
|
|
import { ApiService } from "@bitwarden/common/services/api.service";
|
|
|
|
(global as any).fetch = fe.default;
|
|
(global as any).Request = fe.Request;
|
|
(global as any).Response = fe.Response;
|
|
(global as any).Headers = fe.Headers;
|
|
(global as any).FormData = FormData;
|
|
|
|
export class NodeApiService extends ApiService {
|
|
constructor(
|
|
tokenService: TokenService,
|
|
platformUtilsService: PlatformUtilsService,
|
|
environmentService: EnvironmentService,
|
|
appIdService: AppIdService,
|
|
refreshAccessTokenErrorCallback: () => Promise<void>,
|
|
logService: LogService,
|
|
logoutCallback: () => Promise<void>,
|
|
vaultTimeoutSettingsService: VaultTimeoutSettingsService,
|
|
customUserAgent: string = null,
|
|
) {
|
|
super(
|
|
tokenService,
|
|
platformUtilsService,
|
|
environmentService,
|
|
appIdService,
|
|
refreshAccessTokenErrorCallback,
|
|
logService,
|
|
logoutCallback,
|
|
vaultTimeoutSettingsService,
|
|
{ createRequest: (url, request) => new Request(url, request) },
|
|
customUserAgent,
|
|
);
|
|
}
|
|
|
|
nativeFetch(request: Request): Promise<Response> {
|
|
const proxy = process.env.http_proxy || process.env.https_proxy;
|
|
if (proxy) {
|
|
(request as any).agent = new HttpsProxyAgent(proxy);
|
|
}
|
|
return fetch(request);
|
|
}
|
|
}
|