def capiSearch()

in app/controllers/StoryPackagesController.scala [66:92]


  def capiSearch(term: String) = APIAuthAction.async { request =>
    val hidden = isHidden(request)
    val encodedTerm = URLEncoder.encode(URLDecoder.decode(term, "utf-8"), "utf-8")
    FaciaToolMetrics.ProxyCount.increment()

    val contentApiHost = if (hidden)
      config.contentApi.packagesDraftHost
    else
      config.contentApi.packagesLiveHost

    val url = s"$contentApiHost/packages?order-by=relevance&q=$encodedTerm${config.contentApi.key.map(key => s"&api-key=$key").getOrElse("")}"

    Logger.info(s"Proxying search query to: $url")
    wsClient.url(url).get().flatMap { response =>
      val json: JsValue = Json.parse(response.body)
      val packageIds = (json \ "response" \ "results" \\ "packageId").map(_.as[String])
      for {
        packages <- Future.sequence(
          packageIds.map(id => database.getPackage(id).map(Some.apply).recover { case _ => None })
        )
      } yield {
        Cached(60) {
          Ok(Json.toJson(packages.flatten)).as("application/javascript")
        }
      }
    }
  }