mirror of
https://github.com/bitwarden/browser.git
synced 2024-11-25 12:15:18 +01:00
[PM-10259] improve forwarder rpc error handling (#10330)
* only accept `application/json` responses
This commit is contained in:
parent
18ef51449f
commit
cbac5fde11
@ -48,7 +48,7 @@ export class RestClient {
|
||||
const message = await this.tryGetErrorMessage(response);
|
||||
const key = message ? "forwaderInvalidTokenWithMessage" : "forwaderInvalidToken";
|
||||
return [key, message];
|
||||
} else if (response.status === 429 || response.status >= 500) {
|
||||
} else if (response.status >= 400) {
|
||||
const message = await this.tryGetErrorMessage(response);
|
||||
const key = message ? "forwarderError" : "forwarderUnknownError";
|
||||
return [key, message];
|
||||
@ -59,6 +59,7 @@ export class RestClient {
|
||||
const body = (await response.text()) ?? "";
|
||||
|
||||
// nullish continues processing; false returns undefined
|
||||
// FIXME: inspect content-type header to determine extraction process
|
||||
const error =
|
||||
this.tryFindErrorAsJson(body) ?? this.tryFindErrorAsText(body) ?? response.statusText;
|
||||
|
||||
|
@ -37,7 +37,7 @@ describe("CreateForwardingAddressRpc", () => {
|
||||
expect(result.cache).toEqual("no-store");
|
||||
expect(result.method).toEqual("POST");
|
||||
expect(result.headers.get("Content-Type")).toEqual("application/json");
|
||||
expect(result.headers.get("X-Requested-With")).toEqual("XMLHttpRequest");
|
||||
expect(result.headers.get("Accept")).toEqual("application/json");
|
||||
});
|
||||
|
||||
it("provides the request and context to the rpc definition functions", () => {
|
||||
|
@ -29,10 +29,8 @@ export class CreateForwardingAddressRpc<
|
||||
method: "POST",
|
||||
headers: new Headers({
|
||||
...token,
|
||||
// X-Requested-With header required by some endpoints for
|
||||
// detailed error descriptions (see #5565)
|
||||
"X-Requested-With": "XMLHttpRequest",
|
||||
"Content-Type": "application/json",
|
||||
Accept: "application/json",
|
||||
}),
|
||||
body,
|
||||
});
|
||||
|
@ -32,6 +32,7 @@ describe("GetAccountIdRpc", () => {
|
||||
expect(result.cache).toEqual("no-store");
|
||||
expect(result.method).toEqual("GET");
|
||||
expect(result.headers.get("Content-Type")).toEqual("application/json");
|
||||
expect(result.headers.get("Accept")).toEqual("application/json");
|
||||
});
|
||||
|
||||
it("provides the request and context to the rpc definition functions", () => {
|
||||
|
@ -33,6 +33,7 @@ export class GetAccountIdRpc<
|
||||
headers: new Headers({
|
||||
...token,
|
||||
"Content-Type": "application/json",
|
||||
Accept: "application/json",
|
||||
}),
|
||||
});
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user