mirror of
https://github.com/bitwarden/browser.git
synced 2024-11-14 10:26:19 +01:00
[PM-13804] Add new Is-Prerelease header to requests (#11605)
* Added new Is-Beta header * Updated beta to prerelease
This commit is contained in:
parent
9d2c57d3d9
commit
eb95d437a8
@ -3,6 +3,7 @@
|
|||||||
export type SharedFlags = {
|
export type SharedFlags = {
|
||||||
showPasswordless?: boolean;
|
showPasswordless?: boolean;
|
||||||
sdk?: boolean;
|
sdk?: boolean;
|
||||||
|
prereleaseBuild?: boolean;
|
||||||
};
|
};
|
||||||
|
|
||||||
// required to avoid linting errors when there are no flags
|
// required to avoid linting errors when there are no flags
|
||||||
|
@ -126,6 +126,7 @@ import { AppIdService } from "../platform/abstractions/app-id.service";
|
|||||||
import { EnvironmentService } from "../platform/abstractions/environment.service";
|
import { EnvironmentService } from "../platform/abstractions/environment.service";
|
||||||
import { LogService } from "../platform/abstractions/log.service";
|
import { LogService } from "../platform/abstractions/log.service";
|
||||||
import { PlatformUtilsService } from "../platform/abstractions/platform-utils.service";
|
import { PlatformUtilsService } from "../platform/abstractions/platform-utils.service";
|
||||||
|
import { flagEnabled } from "../platform/misc/flags";
|
||||||
import { Utils } from "../platform/misc/utils";
|
import { Utils } from "../platform/misc/utils";
|
||||||
import { SyncResponse } from "../platform/sync";
|
import { SyncResponse } from "../platform/sync";
|
||||||
import { UserId } from "../types/guid";
|
import { UserId } from "../types/guid";
|
||||||
@ -1843,44 +1844,20 @@ export class ApiService implements ApiServiceAbstraction {
|
|||||||
const requestUrl =
|
const requestUrl =
|
||||||
apiUrl + Utils.normalizePath(pathParts[0]) + (pathParts.length > 1 ? `?${pathParts[1]}` : "");
|
apiUrl + Utils.normalizePath(pathParts[0]) + (pathParts.length > 1 ? `?${pathParts[1]}` : "");
|
||||||
|
|
||||||
const headers = new Headers({
|
const [requestHeaders, requestBody] = await this.buildHeadersAndBody(
|
||||||
"Device-Type": this.deviceType,
|
authed,
|
||||||
});
|
hasResponse,
|
||||||
if (this.customUserAgent != null) {
|
alterHeaders,
|
||||||
headers.set("User-Agent", this.customUserAgent);
|
body,
|
||||||
}
|
);
|
||||||
|
|
||||||
const requestInit: RequestInit = {
|
const requestInit: RequestInit = {
|
||||||
cache: "no-store",
|
cache: "no-store",
|
||||||
credentials: await this.getCredentials(),
|
credentials: await this.getCredentials(),
|
||||||
method: method,
|
method: method,
|
||||||
};
|
};
|
||||||
|
requestInit.headers = requestHeaders;
|
||||||
if (authed) {
|
requestInit.body = requestBody;
|
||||||
const authHeader = await this.getActiveBearerToken();
|
|
||||||
headers.set("Authorization", "Bearer " + authHeader);
|
|
||||||
}
|
|
||||||
if (body != null) {
|
|
||||||
if (typeof body === "string") {
|
|
||||||
requestInit.body = body;
|
|
||||||
headers.set("Content-Type", "application/x-www-form-urlencoded; charset=utf-8");
|
|
||||||
} else if (typeof body === "object") {
|
|
||||||
if (body instanceof FormData) {
|
|
||||||
requestInit.body = body;
|
|
||||||
} else {
|
|
||||||
headers.set("Content-Type", "application/json; charset=utf-8");
|
|
||||||
requestInit.body = JSON.stringify(body);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
if (hasResponse) {
|
|
||||||
headers.set("Accept", "application/json");
|
|
||||||
}
|
|
||||||
if (alterHeaders != null) {
|
|
||||||
alterHeaders(headers);
|
|
||||||
}
|
|
||||||
|
|
||||||
requestInit.headers = headers;
|
|
||||||
const response = await this.fetch(new Request(requestUrl, requestInit));
|
const response = await this.fetch(new Request(requestUrl, requestInit));
|
||||||
|
|
||||||
const responseType = response.headers.get("content-type");
|
const responseType = response.headers.get("content-type");
|
||||||
@ -1897,6 +1874,51 @@ export class ApiService implements ApiServiceAbstraction {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private async buildHeadersAndBody(
|
||||||
|
authed: boolean,
|
||||||
|
hasResponse: boolean,
|
||||||
|
body: any,
|
||||||
|
alterHeaders: (headers: Headers) => void,
|
||||||
|
): Promise<[Headers, any]> {
|
||||||
|
let requestBody: any = null;
|
||||||
|
const headers = new Headers({
|
||||||
|
"Device-Type": this.deviceType,
|
||||||
|
});
|
||||||
|
|
||||||
|
if (flagEnabled("prereleaseBuild")) {
|
||||||
|
headers.set("Is-Prerelease", "true");
|
||||||
|
}
|
||||||
|
if (this.customUserAgent != null) {
|
||||||
|
headers.set("User-Agent", this.customUserAgent);
|
||||||
|
}
|
||||||
|
if (hasResponse) {
|
||||||
|
headers.set("Accept", "application/json");
|
||||||
|
}
|
||||||
|
if (alterHeaders != null) {
|
||||||
|
alterHeaders(headers);
|
||||||
|
}
|
||||||
|
if (authed) {
|
||||||
|
const authHeader = await this.getActiveBearerToken();
|
||||||
|
headers.set("Authorization", "Bearer " + authHeader);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (body != null) {
|
||||||
|
if (typeof body === "string") {
|
||||||
|
requestBody = body;
|
||||||
|
headers.set("Content-Type", "application/x-www-form-urlencoded; charset=utf-8");
|
||||||
|
} else if (typeof body === "object") {
|
||||||
|
if (body instanceof FormData) {
|
||||||
|
requestBody = body;
|
||||||
|
} else {
|
||||||
|
headers.set("Content-Type", "application/json; charset=utf-8");
|
||||||
|
requestBody = JSON.stringify(body);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return [headers, requestBody];
|
||||||
|
}
|
||||||
|
|
||||||
private async handleError(
|
private async handleError(
|
||||||
response: Response,
|
response: Response,
|
||||||
tokenError: boolean,
|
tokenError: boolean,
|
||||||
|
Loading…
Reference in New Issue
Block a user