import {parse as languageParser} from "accept-language-parser";
import {IncomingMessage} from 'http';
import {locales} from 'app/common/Locales';

/**
 * Returns the locale from a request, falling back to `defaultLocale`
 * if unable to determine the locale.
 */
export function localeFromRequest(req: IncomingMessage, defaultLocale: string = 'en-US') {
  const language = languageParser(req.headers["accept-language"] as string)[0];
  if (!language) { return defaultLocale; }

  const locale = `${language.code}-${language.region}`;
  const supports = locales.some(l => l.code === locale);
  return supports ? locale : defaultLocale;
}