Add more debug messages to SaleorCloudAPL (#175)
* Add more debug messages to SaleorCloudAPL * Refactor error message extraction
This commit is contained in:
parent
24778df592
commit
a15d72602f
1 changed files with 35 additions and 9 deletions
|
@ -1,3 +1,4 @@
|
||||||
|
import { hasProp } from "../has-prop";
|
||||||
import { APL, AplConfiguredResult, AplReadyResult, AuthData } from "./apl";
|
import { APL, AplConfiguredResult, AplReadyResult, AuthData } from "./apl";
|
||||||
import { createAPLDebug } from "./apl-debug";
|
import { createAPLDebug } from "./apl-debug";
|
||||||
import { authDataFromObject } from "./auth-data-from-object";
|
import { authDataFromObject } from "./auth-data-from-object";
|
||||||
|
@ -12,11 +13,13 @@ export type SaleorCloudAPLConfig = {
|
||||||
const validateResponseStatus = (response: Response) => {
|
const validateResponseStatus = (response: Response) => {
|
||||||
if (response.status === 404) {
|
if (response.status === 404) {
|
||||||
debug("Auth data not found");
|
debug("Auth data not found");
|
||||||
|
debug("%O", response);
|
||||||
|
|
||||||
throw new Error("Auth data not found");
|
throw new Error("Auth data not found");
|
||||||
}
|
}
|
||||||
if (!response.ok) {
|
if (!response.ok) {
|
||||||
debug("Response failed with status %s", response.status);
|
debug("Response failed with status %s", response.status);
|
||||||
|
debug("%O", response);
|
||||||
|
|
||||||
throw new Error(`Fetch returned with non 200 status code ${response.status}`);
|
throw new Error(`Fetch returned with non 200 status code ${response.status}`);
|
||||||
}
|
}
|
||||||
|
@ -39,6 +42,18 @@ const mapAPIResponseToAuthData = (response: any): AuthData => ({
|
||||||
token: response.token,
|
token: response.token,
|
||||||
});
|
});
|
||||||
|
|
||||||
|
const extractErrorMessage = (error: unknown) => {
|
||||||
|
if (typeof error === "string") {
|
||||||
|
return error;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (hasProp(error, "message")) {
|
||||||
|
return error.message;
|
||||||
|
}
|
||||||
|
|
||||||
|
return "Unknown error";
|
||||||
|
};
|
||||||
|
|
||||||
/**
|
/**
|
||||||
*
|
*
|
||||||
* Saleor Cloud APL - handle auth data management via REST API.
|
* Saleor Cloud APL - handle auth data management via REST API.
|
||||||
|
@ -72,7 +87,9 @@ export class SaleorCloudAPL implements APL {
|
||||||
method: "GET",
|
method: "GET",
|
||||||
headers: { "Content-Type": "application/json", ...this.headers },
|
headers: { "Content-Type": "application/json", ...this.headers },
|
||||||
}).catch((error) => {
|
}).catch((error) => {
|
||||||
debug("Failed to reach API call: %s", error?.message ?? "Unknown error");
|
debug("Failed to reach API call: %s", extractErrorMessage(error));
|
||||||
|
debug("%O", error);
|
||||||
|
|
||||||
return undefined;
|
return undefined;
|
||||||
});
|
});
|
||||||
|
|
||||||
|
@ -83,13 +100,15 @@ export class SaleorCloudAPL implements APL {
|
||||||
|
|
||||||
try {
|
try {
|
||||||
validateResponseStatus(response);
|
validateResponseStatus(response);
|
||||||
|
debug("Response status valid");
|
||||||
} catch {
|
} catch {
|
||||||
debug("Response status not valid");
|
debug("Response status not valid");
|
||||||
return undefined;
|
return undefined;
|
||||||
}
|
}
|
||||||
|
|
||||||
const parsedResponse = (await response.json().catch((e) => {
|
const parsedResponse = (await response.json().catch((e) => {
|
||||||
debug("Failed to parse response: %s", e?.message ?? "Unknown error");
|
debug("Failed to parse response: %s", extractErrorMessage(e));
|
||||||
|
debug("%O", e);
|
||||||
})) as unknown;
|
})) as unknown;
|
||||||
|
|
||||||
const authData = authDataFromObject(mapAPIResponseToAuthData(parsedResponse));
|
const authData = authDataFromObject(mapAPIResponseToAuthData(parsedResponse));
|
||||||
|
@ -103,21 +122,22 @@ export class SaleorCloudAPL implements APL {
|
||||||
}
|
}
|
||||||
|
|
||||||
async set(authData: AuthData) {
|
async set(authData: AuthData) {
|
||||||
debug("Saving data to SaleorCloudAPL for domain: %s", authData.domain);
|
debug("Saving data to SaleorCloudAPL for saleorApiUrl: %s", authData.saleorApiUrl);
|
||||||
|
|
||||||
const response = await fetch(this.resourceUrl, {
|
const response = await fetch(this.resourceUrl, {
|
||||||
method: "POST",
|
method: "POST",
|
||||||
headers: { "Content-Type": "application/json", ...this.headers },
|
headers: { "Content-Type": "application/json", ...this.headers },
|
||||||
body: JSON.stringify(mapAuthDataToAPIBody(authData)),
|
body: JSON.stringify(mapAuthDataToAPIBody(authData)),
|
||||||
}).catch((e) => {
|
}).catch((e) => {
|
||||||
debug("Failed to reach API call: %s", e?.message ?? "Unknown error");
|
debug("Failed to reach API call: %s", extractErrorMessage(e));
|
||||||
|
debug("%O", e);
|
||||||
|
|
||||||
throw new Error(`Error during saving the data: ${e}`);
|
throw new Error(`Error during saving the data: ${extractErrorMessage(e)}`);
|
||||||
});
|
});
|
||||||
|
|
||||||
validateResponseStatus(response);
|
validateResponseStatus(response);
|
||||||
|
|
||||||
debug("Set command finished successfully for domain: %", authData.domain);
|
debug("Set command finished successfully for saleorApiUrl: %", authData.saleorApiUrl);
|
||||||
|
|
||||||
return undefined;
|
return undefined;
|
||||||
}
|
}
|
||||||
|
@ -133,9 +153,12 @@ export class SaleorCloudAPL implements APL {
|
||||||
|
|
||||||
debug(`Delete responded with ${response.status} code`);
|
debug(`Delete responded with ${response.status} code`);
|
||||||
} catch (error) {
|
} catch (error) {
|
||||||
debug("Error during deleting the data: %s", error);
|
const errorMessage = extractErrorMessage(error);
|
||||||
|
|
||||||
throw new Error(`Error during deleting the data: ${error}`);
|
debug("Error during deleting the data: %s", errorMessage);
|
||||||
|
debug("%O", error);
|
||||||
|
|
||||||
|
throw new Error(`Error during deleting the data: ${errorMessage}`);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -152,7 +175,10 @@ export class SaleorCloudAPL implements APL {
|
||||||
|
|
||||||
return ((await response.json()) as AuthData[]) || [];
|
return ((await response.json()) as AuthData[]) || [];
|
||||||
} catch (error) {
|
} catch (error) {
|
||||||
debug("Error during getting all the data:", error);
|
const errorMessage = extractErrorMessage(error);
|
||||||
|
|
||||||
|
debug("Error during getting all the data:", errorMessage);
|
||||||
|
debug("%O", error);
|
||||||
}
|
}
|
||||||
|
|
||||||
return [];
|
return [];
|
||||||
|
|
Loading…
Reference in a new issue