in src/msha/middlewares/response.middleware.ts [16:83]
export function getResponse(
req: http.IncomingMessage,
res: http.ServerResponse,
matchedRoute: SWAConfigFileRoute | undefined,
userConfig: SWAConfigFile | undefined,
isFunctionRequest: boolean,
isDataApiRequest: boolean
): boolean {
const statusCodeToServe = parseInt(`${matchedRoute?.statusCode}`, 10);
const redirect = matchedRoute?.redirect;
const rewrite = matchedRoute?.rewrite;
logger.silly(`using userConfig`);
logger.silly({ userConfig });
if (redirect) {
logger.silly(` - redirect rule detected. Exit`);
applyRedirectResponse(req, res, matchedRoute);
return false;
}
// We should always set the x-ms-original-url to be the full request URL.
req.headers["x-ms-original-url"] = new URL(req.url!, `http://${req.headers.host}`).href;
if (rewrite) {
req.url = rewrite;
}
if ([403, 401].includes(statusCodeToServe)) {
logger.silly(` - ${statusCodeToServe} code detected. Exit`);
handleErrorPage(req, res, statusCodeToServe, userConfig?.responseOverrides);
return false;
}
if (isFunctionRequest) {
handleFunctionRequest(req, res);
return true;
}
if (isDataApiRequest) {
if (req.url?.startsWith("/data-api/")) {
req.url = req.url?.replace("/data-api", "");
}
handleDataApiRequest(req, res);
return true;
}
const storageResult = getStorageContent(
req,
res,
rewrite,
matchedRoute,
userConfig?.responseOverrides,
userConfig?.navigationFallback,
userConfig?.mimeTypes,
matchedRoute?.headers,
userConfig?.globalHeaders
);
if (storageResult.isFunctionFallbackRequest) {
req.url = userConfig?.navigationFallback.rewrite!;
handleFunctionRequest(req, res);
return true;
}
if (statusCodeToServe) {
res.statusCode = statusCodeToServe;
}
return false;
}