Skip to content

Commit

Permalink
- adds support for XXX error code mapping
Browse files Browse the repository at this point in the history
  • Loading branch information
baywet committed Feb 6, 2024
1 parent ca8449a commit b3ec54a
Show file tree
Hide file tree
Showing 2 changed files with 4 additions and 4 deletions.
1 change: 1 addition & 0 deletions packages/abstractions/src/requestAdapter.ts
Original file line number Diff line number Diff line change
Expand Up @@ -104,6 +104,7 @@ export interface RequestAdapter {
export interface ErrorMappings {
_4XX?: ParsableFactory<Parsable>;
_5XX?: ParsableFactory<Parsable>;
XXX?: ParsableFactory<Parsable>;
[key: number]: ParsableFactory<Parsable>;
}

Expand Down
7 changes: 3 additions & 4 deletions packages/http/fetch/src/fetchRequestAdapter.ts
Original file line number Diff line number Diff line change
Expand Up @@ -328,7 +328,8 @@ export class FetchRequestAdapter implements RequestAdapter {
response.headers.forEach((value, key) => {
responseHeaders[key] = value.split(",");
});
if (!errorMappings || (!errorMappings[statusCode] && !(statusCode >= 400 && statusCode < 500 && errorMappings._4XX) && !(statusCode >= 500 && statusCode < 600 && errorMappings._5XX))) {
const factory = errorMappings ? errorMappings[statusCode] ?? (statusCode >= 400 && statusCode < 500 ? errorMappings._4XX : undefined) ?? (statusCode >= 500 && statusCode < 600 ? errorMappings._5XX : undefined) ?? errorMappings.XXX : undefined;
if (!factory) {
spanForAttributes.setAttribute(FetchRequestAdapter.errorMappingFoundAttributeName, false);
const error = new DefaultApiError("the server returned an unexpected status code and no error class is registered for this code " + statusCode);
error.responseStatusCode = statusCode;
Expand All @@ -338,8 +339,6 @@ export class FetchRequestAdapter implements RequestAdapter {
}
spanForAttributes.setAttribute(FetchRequestAdapter.errorMappingFoundAttributeName, true);

const factory = errorMappings[statusCode] ?? (statusCode >= 400 && statusCode < 500 ? errorMappings._4XX : undefined) ?? (statusCode >= 500 && statusCode < 600 ? errorMappings._5XX : undefined);

const rootNode = await this.getRootParseNode(response);
let error = trace.getTracer(this.observabilityOptions.getTracerInstrumentationName()).startActiveSpan("getObjectValue", (deserializeSpan) => {
try {
Expand All @@ -351,7 +350,7 @@ export class FetchRequestAdapter implements RequestAdapter {
spanForAttributes.setAttribute(FetchRequestAdapter.errorBodyFoundAttributeName, !!error);

if (!error) error = new DefaultApiError("unexpected error type" + typeof error) as unknown as Parsable;
const errorObject = error as unknown as ApiError;
const errorObject = error as ApiError;
errorObject.responseStatusCode = statusCode;
errorObject.responseHeaders = responseHeaders;
spanForAttributes.recordException(errorObject);
Expand Down

0 comments on commit b3ec54a

Please sign in to comment.