def getParameter()

in common/app/implicits/Requests.scala [46:115]


    def getParameter(name: String): Option[String] = r.queryString.get(name).flatMap(_.headOption)

    def getParameters(name: String): Seq[String] = r.queryString.getOrElse(name, Nil)

    def getIntParameter(name: String): Option[Int] = getParameter(name).map(_.toInt)

    def getBooleanParameter(name: String): Option[Boolean] = getParameter(name).map(_.toBoolean)

    def getRequestFormat: RequestFormat =
      if (isJson) JsonFormat
      else if (isEmail) EmailFormat
      else if (isAmp) AmpFormat
      else if (isApps) AppsFormat
      else HtmlFormat

    lazy val isJson: Boolean = r.getQueryString("callback").isDefined || r.path.endsWith(".json")

    lazy val isEmailJson: Boolean = r.path.endsWith(EMAIL_JSON_SUFFIX)

    lazy val isEmailTxt: Boolean = r.path.endsWith(EMAIL_TXT_SUFFIX)

    lazy val isLazyLoad: Boolean =
      r.getQueryString("lazy-load").isDefined && !r.getQueryString("lazy-load").contains("false")

    lazy val isRss: Boolean = r.path.endsWith("/rss")

    lazy val isAmp: Boolean = r
      .getQueryString("amp")
      .isDefined || (!r.host.isEmpty && r.host == Configuration.amp.host) || r.getQueryString("dcr").contains("amp")

    lazy val isApps: Boolean = r.getQueryString("dcr").contains("apps")

    lazy val isEmail: Boolean = r.getQueryString("format").exists(_.contains("email")) || r.path.endsWith(
      EMAIL_SUFFIX,
    ) || isEmailJson || isEmailTxt

    lazy val isHeadlineText: Boolean =
      r.getQueryString("format").contains("email-headline") || r.path.endsWith(HEADLINE_SUFFIX)

    lazy val isModified = isJson || isRss || isEmail || isHeadlineText

    lazy val pathWithoutModifiers: String =
      if (isEmail) r.path.stripSuffix(EMAIL_SUFFIX)
      else r.path.stripSuffix("/all")

    lazy val hasParameters: Boolean = r.queryString.nonEmpty

    lazy val isHealthcheck: Boolean =
      r.headers.keys.exists(_ equalsIgnoreCase "X-Gu-Management-Healthcheck") || r.path == "/_healthcheck"

    lazy val rawQueryStringOption: Option[String] = if (r.rawQueryString.nonEmpty) Some(r.rawQueryString) else None

    // This is a header reliably set by jQuery for AJAX requests used in facia-tool
    lazy val isXmlHttpRequest: Boolean = r.headers.get("X-Requested-With").contains("XMLHttpRequest")

    lazy val isCrosswordFront: Boolean = r.path.endsWith("/crosswords")

    lazy val campaignCode: Option[String] = r.getQueryString("CMP")

    lazy val isAdFree: Boolean = r.headers.keys.exists(_ equalsIgnoreCase "X-Gu-Commercial-Ad-Free")

    lazy val referrer: Option[String] = r.headers.get("referer")

    // the X-GU-Territory header is used by the facia app to determine whether or not to render containers
    // targeted only at a specific region e.g. a new zealand-only container
    lazy val territories: List[TargetedTerritory] = r.headers
      .get(GUHeaders.TERRITORY_HEADER)
      .map { r =>
        territoryHeaders.filter(th => r.contains(th.headerString)).map(_.territory)
      }