Skip to content

Commit

Permalink
[PM-10259] improve forwarder rpc error handling (#10330)
Browse files Browse the repository at this point in the history
* only accept `application/json` responses
  • Loading branch information
audreyality authored Jul 30, 2024
1 parent 18ef514 commit cbac5fd
Show file tree
Hide file tree
Showing 5 changed files with 6 additions and 5 deletions.
3 changes: 2 additions & 1 deletion libs/common/src/tools/integration/rpc/rest-client.ts
Original file line number Diff line number Diff line change
Expand Up @@ -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];
Expand All @@ -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;

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -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", () => {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -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,
});
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -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", () => {
Expand Down
1 change: 1 addition & 0 deletions libs/tools/generator/core/src/engine/rpc/get-account-id.ts
Original file line number Diff line number Diff line change
Expand Up @@ -33,6 +33,7 @@ export class GetAccountIdRpc<
headers: new Headers({
...token,
"Content-Type": "application/json",
Accept: "application/json",
}),
});

Expand Down

0 comments on commit cbac5fd

Please sign in to comment.