export function getResponse()

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;
}