Better error handling if the site domain is not found or returned.
This commit is contained in:
@@ -16,7 +16,6 @@ export function add_url_params(
|
|||||||
}
|
}
|
||||||
) {
|
) {
|
||||||
if (log_lvl) {
|
if (log_lvl) {
|
||||||
// console.log(`*** add_url_params() ***`);
|
|
||||||
console.log(`*** add_url_params() *** base_url=${base_url} endpoint=${endpoint}`, params);
|
console.log(`*** add_url_params() *** base_url=${base_url} endpoint=${endpoint}`, params);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -45,7 +44,7 @@ export function clean_headers(
|
|||||||
}
|
}
|
||||||
) {
|
) {
|
||||||
if (log_lvl) {
|
if (log_lvl) {
|
||||||
console.log(`*** clean_headers() ***`);
|
console.log(`*** clean_headers() ***`, headers);
|
||||||
}
|
}
|
||||||
|
|
||||||
let headers_cleaned: key_val = {};
|
let headers_cleaned: key_val = {};
|
||||||
|
|||||||
@@ -57,7 +57,7 @@ let ae_loc_init: key_val = {
|
|||||||
// properties: params, route, url
|
// properties: params, route, url
|
||||||
// functions: fetch, setHeaders, parent, depends, untrack
|
// functions: fetch, setHeaders, parent, depends, untrack
|
||||||
export async function load({ fetch, params, parent, route, url }) { // params, route, url
|
export async function load({ fetch, params, parent, route, url }) { // params, route, url
|
||||||
let log_lvl: number = 2;
|
let log_lvl: number = 0;
|
||||||
// console.log(`Svelte root +layout.ts params:`, params);
|
// console.log(`Svelte root +layout.ts params:`, params);
|
||||||
// console.log(`Svelte root +layout.ts route:`, route);
|
// console.log(`Svelte root +layout.ts route:`, route);
|
||||||
// console.log(`Svelte root +layout.ts url:`, url);
|
// console.log(`Svelte root +layout.ts url:`, url);
|
||||||
@@ -141,10 +141,6 @@ export async function load({ fetch, params, parent, route, url }) { // params, r
|
|||||||
'use_alt_base': true,
|
'use_alt_base': true,
|
||||||
};
|
};
|
||||||
|
|
||||||
// const api_url = new URL(api_endpoint, ae_api_init['base_url']);
|
|
||||||
// Object.keys(api_params).forEach(key => api_url.searchParams.append(key, api_params[key]));
|
|
||||||
// let api_url_str = api_url.toString();
|
|
||||||
|
|
||||||
const api_url_str = core_func.add_url_params({
|
const api_url_str = core_func.add_url_params({
|
||||||
base_url: ae_api_init['base_url'],
|
base_url: ae_api_init['base_url'],
|
||||||
endpoint: api_endpoint,
|
endpoint: api_endpoint,
|
||||||
@@ -161,23 +157,6 @@ export async function load({ fetch, params, parent, route, url }) { // params, r
|
|||||||
log_lvl: log_lvl
|
log_lvl: log_lvl
|
||||||
});
|
});
|
||||||
|
|
||||||
// Clean the headers
|
|
||||||
// let headers_cleaned: key_val = {};
|
|
||||||
// for (const prop in headers) {
|
|
||||||
// let prop_cleaned = prop.replaceAll('_', '-');
|
|
||||||
// if (typeof headers[prop] != 'string') {
|
|
||||||
// headers[prop] = JSON.stringify(headers[prop]);
|
|
||||||
// }
|
|
||||||
// headers_cleaned[prop_cleaned] = headers[prop];
|
|
||||||
// if (log_lvl > 1) {
|
|
||||||
// console.log(`${prop_cleaned}: ${headers_cleaned[prop_cleaned]}`);
|
|
||||||
// }
|
|
||||||
// }
|
|
||||||
// headers = headers_cleaned;
|
|
||||||
// if (log_lvl > 1) {
|
|
||||||
// console.log('All headers cleaned:', headers);
|
|
||||||
// }
|
|
||||||
|
|
||||||
const fetchOptions: RequestInit = {
|
const fetchOptions: RequestInit = {
|
||||||
method: 'GET',
|
method: 'GET',
|
||||||
headers: {
|
headers: {
|
||||||
@@ -191,7 +170,7 @@ export async function load({ fetch, params, parent, route, url }) { // params, r
|
|||||||
.then(async function (response) {
|
.then(async function (response) {
|
||||||
if (response.ok) {
|
if (response.ok) {
|
||||||
let json_raw = await response.json();
|
let json_raw = await response.json();
|
||||||
console.log(`ALERT json_raw = `, json_raw);
|
// console.log(`ALERT json_raw = `, json_raw);
|
||||||
|
|
||||||
let json_data: any = null;
|
let json_data: any = null;
|
||||||
|
|
||||||
@@ -252,28 +231,38 @@ export async function load({ fetch, params, parent, route, url }) { // params, r
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
console.log('API GET Object *fetch* response was missing the JSON "data" part.');
|
console.log('API GET Object *fetch* response was missing the JSON "data" part. This should not happen.');
|
||||||
error(500, {
|
return false;
|
||||||
message: 'Site lookup failed!'
|
|
||||||
});
|
|
||||||
}
|
}
|
||||||
return json_data; // || json_raw;
|
return json_data; // || json_raw;
|
||||||
|
} else if (response.status === 404) {
|
||||||
|
console.log('API GET Object *fetch* response was a 404 not found.');
|
||||||
|
return null;
|
||||||
} else {
|
} else {
|
||||||
console.log('API GET Object *fetch* request was no ok.');
|
console.log('API GET Object *fetch* request was not ok for some other reason.');
|
||||||
error(500, {
|
return false;
|
||||||
message: 'Site lookup failed!'
|
|
||||||
});
|
|
||||||
}
|
}
|
||||||
|
|
||||||
})
|
})
|
||||||
.catch(function (error) {
|
.catch(function (error) {
|
||||||
console.log('API GET Object *fetch* request was aborted or failed in an unexpected way.', error);
|
console.log('API GET Object *fetch* request was aborted or failed in an unexpected way.', error);
|
||||||
error(500, {
|
error(500, {
|
||||||
message: 'Site lookup failed!'
|
message: 'Site lookup aborted or failed! Check the network connection, domain name, and API.'
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
console.log(`ALERT response = `, result);
|
console.log(`ALERT response = `, result);
|
||||||
|
|
||||||
|
if (result === null) {
|
||||||
|
error(403, {
|
||||||
|
message: 'The site lookup failed! Check that the domain name is configured and enabled.'
|
||||||
|
});
|
||||||
|
} else if (result === false) {
|
||||||
|
error(500, {
|
||||||
|
message: 'Site lookup failed or returned an unexpected response! Check the API.'
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
if (log_lvl > 1) {
|
if (log_lvl > 1) {
|
||||||
console.log(`root +layout.ts: Using account_id = `, account_id);
|
console.log(`root +layout.ts: Using account_id = `, account_id);
|
||||||
console.log(`root +layout.ts: ae_loc_init = `, ae_loc_init);
|
console.log(`root +layout.ts: ae_loc_init = `, ae_loc_init);
|
||||||
@@ -281,113 +270,12 @@ export async function load({ fetch, params, parent, route, url }) { // params, r
|
|||||||
|
|
||||||
log_lvl = 1;
|
log_lvl = 1;
|
||||||
|
|
||||||
// if (response.ok) {
|
if (!account_id) {
|
||||||
// let json_val = await response.json();
|
console.log(`root +layout.ts: The account_id was not found!!!`);
|
||||||
// console.log(`ALERT json_val = `, json_val);
|
|
||||||
// let json_data = json_val.data;
|
|
||||||
// }
|
|
||||||
|
|
||||||
// error(500, {
|
|
||||||
// message: 'Site lookup failed!'
|
|
||||||
// });
|
|
||||||
|
|
||||||
// account_id = await core_func.handle_load_ae_obj_id__site_domain({
|
|
||||||
// api_cfg: ae_api_init,
|
|
||||||
// // fqdn: 'idaa.localhost:5173', // url.host,
|
|
||||||
// fqdn: url.host,
|
|
||||||
// try_cache: false,
|
|
||||||
// log_lvl: log_lvl
|
|
||||||
// })
|
|
||||||
// .then(function (site_domain_results) {
|
|
||||||
// if (site_domain_results) {
|
|
||||||
// // console.log(`ae_ site_domain_results = `, site_domain_results);
|
|
||||||
|
|
||||||
// data_struct.account_id = site_domain_results.account_id_random;
|
|
||||||
|
|
||||||
// ae_acct.account_id = site_domain_results.account_id_random;
|
|
||||||
|
|
||||||
// ae_api_init['account_id'] = site_domain_results.account_id_random;
|
|
||||||
// ae_api_init['headers']['x-account-id'] = site_domain_results.account_id_random;
|
|
||||||
// ae_api_init['headers']['x-no-account-id'] = null;
|
|
||||||
|
|
||||||
// ae_loc_init['account_id'] = site_domain_results.account_id_random;
|
|
||||||
// ae_loc_init['account_code'] = site_domain_results.account_code; // Useful for export file naming
|
|
||||||
// ae_loc_init['account_name'] = site_domain_results.account_name; // Generally useful for display
|
|
||||||
|
|
||||||
// ae_loc_init['site_id'] = site_domain_results.site_id_random;
|
|
||||||
// ae_loc_init['site_domain_id'] = site_domain_results.site_domain_id_random;
|
|
||||||
// ae_loc_init['site_enable'] = site_domain_results.enable;
|
|
||||||
// ae_loc_init['site_header_image_path'] = site_domain_results.header_image_path;
|
|
||||||
// ae_loc_init['site_style_href'] = site_domain_results.style_href;
|
|
||||||
// ae_loc_init['site_google_tracking_id'] = site_domain_results.google_tracking_id;
|
|
||||||
// ae_loc_init['site_access_code_kv'] = site_domain_results.access_code_kv_json;
|
|
||||||
// ae_loc_init['site_cfg_json'] = site_domain_results.cfg_json;
|
|
||||||
// ae_loc_init['site_access_key'] = site_domain_results.access_key; // This is the general site access key
|
|
||||||
// ae_loc_init['site_domain_access_key'] = site_domain_results.site_domain_access_key; // This is specific to a (sub)domain.
|
|
||||||
|
|
||||||
// if (!ae_loc_init['site_access_key'] && !ae_loc_init['site_domain_access_key']) {
|
|
||||||
// ae_loc_init['key_checked'] = true; // Se to true to allow access without a key.
|
|
||||||
// ae_loc_init['allow_access'] = true; // No access key is required here.
|
|
||||||
// } else {
|
|
||||||
// let access_key = url.searchParams.get('key');
|
|
||||||
|
|
||||||
// if (access_key) {
|
|
||||||
// if (log_lvl) {
|
|
||||||
// console.log(`root +layout.ts: access_key = ${access_key}`);
|
|
||||||
// }
|
|
||||||
// if (access_key == ae_loc_init['site_access_key']) {
|
|
||||||
// ae_loc_init['key_checked'] = ae_loc_init['site_access_key'];
|
|
||||||
// ae_loc_init['allow_access'] = ae_loc_init['site_access_key'];
|
|
||||||
// } else if (access_key == ae_loc_init['site_domain_access_key']) {
|
|
||||||
// ae_loc_init['key_checked'] = ae_loc_init['site_domain_access_key'];
|
|
||||||
// ae_loc_init['allow_access'] = ae_loc_init['site_domain_access_key'];
|
|
||||||
// } else {
|
|
||||||
// // The key changed and no longer matches the site or domain key.
|
|
||||||
// ae_loc_init['key_checked'] = true;
|
|
||||||
// ae_loc_init['allow_access'] = false;
|
|
||||||
// }
|
|
||||||
// } else {
|
|
||||||
// if (log_lvl > 1) {
|
|
||||||
// console.log(`root +layout.ts: No access key found in URL.`);
|
|
||||||
// }
|
|
||||||
// ae_loc_init['key_checked'] = true;
|
|
||||||
// // Do nothing to change the allow_access here
|
|
||||||
// // ae_loc_init['allow_access'] = false; // An access key is required at this point.
|
|
||||||
// }
|
|
||||||
// }
|
|
||||||
|
|
||||||
// if (log_lvl > 1) {
|
|
||||||
// console.log(`root +layout.ts: Returning account_id = `, site_domain_results.account_id_random);
|
|
||||||
// console.log(`root +layout.ts: ae_loc_init = `, ae_loc_init);
|
|
||||||
// }
|
|
||||||
|
|
||||||
// return site_domain_results.account_id_random;
|
|
||||||
// }
|
|
||||||
// console.log(`root +layout.ts: Site domain results not found!!! URL = `, url);
|
|
||||||
// return null; // For no results
|
|
||||||
|
|
||||||
// })
|
|
||||||
// .catch(function (error) {
|
|
||||||
// console.log(`root +layout.ts: Site domain lookup error = `, error);
|
|
||||||
// // error(500, {
|
|
||||||
// // message: 'Site lookup failed!'
|
|
||||||
// // });
|
|
||||||
// return false; // For a likely API or DB connection error
|
|
||||||
// });
|
|
||||||
|
|
||||||
|
|
||||||
if (await account_id === null) {
|
|
||||||
console.log(`root +layout.ts: The account_id was not found in API response!!!`);
|
|
||||||
|
|
||||||
error(500, {
|
error(500, {
|
||||||
message: 'The account ID was not found!'
|
message: 'The account ID was not found!'
|
||||||
});
|
});
|
||||||
} else if (await account_id === false) {
|
|
||||||
console.log(`root +layout.ts: The API site lookup may have failed!!!`);
|
|
||||||
|
|
||||||
error(500, {
|
|
||||||
message: 'Site lookup failed! Check the API.'
|
|
||||||
});
|
|
||||||
}
|
}
|
||||||
|
|
||||||
ae_acct['api'] = ae_api_init;
|
ae_acct['api'] = ae_api_init;
|
||||||
|
|||||||
Reference in New Issue
Block a user