Adjustment to the request debug view functionality
This commit is contained in:
@@ -3,29 +3,67 @@ function createFusionProducts({
|
||||
OPPTY_PRODUCTS_MAX_PAGES,
|
||||
OPPTY_PRODUCTS_PAGE_LIMIT,
|
||||
ORACLE_DOMAIN,
|
||||
createBackgroundDebugEntry,
|
||||
completeBackgroundDebugEntry,
|
||||
createDebugBody,
|
||||
headersToObject,
|
||||
environment
|
||||
}) {
|
||||
const { fetch } = environment;
|
||||
async function fetchAllOpptyProducts(optyNumber, accessToken) {
|
||||
async function fetchAllOpptyProducts(optyNumber, accessToken, onDebug = () => {}) {
|
||||
let offset = 0;
|
||||
let page = 0;
|
||||
const items = [];
|
||||
|
||||
while (page < OPPTY_PRODUCTS_MAX_PAGES) {
|
||||
const response = await fetch(createOpptyProductsUrl(optyNumber, offset), {
|
||||
const url = createOpptyProductsUrl(optyNumber, offset);
|
||||
const options = {
|
||||
method: "GET",
|
||||
credentials: "include",
|
||||
headers: {
|
||||
Accept: "application/json",
|
||||
Authorization: `Bearer ${accessToken}`
|
||||
}
|
||||
});
|
||||
|
||||
if (!response.ok) {
|
||||
throw new Error(`requestOpptyProducts failed with status ${response.status}.`);
|
||||
};
|
||||
const entry = createBackgroundDebugEntry("requestOpptyProducts", url, {
|
||||
...options, headers: { Accept: "application/json", Authorization: "(present)" }
|
||||
}, new Date());
|
||||
entry.metadata = { executionContext: "background", optyNumber, offset, page: page + 1 };
|
||||
const report = () => {
|
||||
// Diagnostics must not block requests or transmit the Bearer credential.
|
||||
try { onDebug({ ...entry, metadata: { ...entry.metadata } }); } catch (_) {}
|
||||
};
|
||||
let response;
|
||||
let responseBody = { value: "", truncated: false };
|
||||
let responseData;
|
||||
report();
|
||||
try {
|
||||
response = await fetch(url, options);
|
||||
entry.httpStatus = response.status;
|
||||
entry.statusText = response.statusText || "";
|
||||
entry.responseHeaders = headersToObject(response.headers);
|
||||
Object.keys(entry.responseHeaders).forEach(key => {
|
||||
if (/authorization|cookie|token/i.test(key)) entry.responseHeaders[key] = "(present)";
|
||||
});
|
||||
entry.metadata.phase = "reading-response";
|
||||
report();
|
||||
const text = await response.text();
|
||||
responseBody = createDebugBody(text);
|
||||
if (!response.ok) throw new Error(`requestOpptyProducts failed with status ${response.status}.`);
|
||||
responseData = JSON.parse(text);
|
||||
if (!responseData || typeof responseData !== "object") throw new Error("requestOpptyProducts returned an invalid response.");
|
||||
completeBackgroundDebugEntry(entry, response, responseBody, "");
|
||||
} catch (error) {
|
||||
completeBackgroundDebugEntry(entry, response, responseBody, error.message || "Unable to load products.");
|
||||
entry.status = "failed";
|
||||
throw error;
|
||||
} finally {
|
||||
Object.keys(entry.responseHeaders).forEach(key => {
|
||||
if (/authorization|cookie|token/i.test(key)) entry.responseHeaders[key] = "(present)";
|
||||
});
|
||||
entry.metadata.phase = "complete";
|
||||
report();
|
||||
}
|
||||
|
||||
const responseData = await response.json();
|
||||
const pageItems = Array.isArray(responseData.items) ? responseData.items : [];
|
||||
items.push(...pageItems);
|
||||
page += 1;
|
||||
|
||||
Reference in New Issue
Block a user