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")
}
}
}
}