in fapi-client/src/main/scala/com/gu/facia/api/contentapi/ContentApi.scala [42:72]
def itemsFromSearchResponses(searchResponses: Seq[SearchResponse]): Set[Content] =
searchResponses.flatMap(_.results).toSet
def buildBackfillQuery(apiQuery: String): Either[ItemQuery, SearchQuery] = {
val uri = new URI(apiQuery.replace("|", "%7C").replace(" ", "%20"))
val path = uri.getPath.stripPrefix("/")
val rawParams = Option(uri.getQuery).map(parseQueryString).getOrElse(Nil).map {
// wrap backfill tags in parentheses in case the editors wrote a raw OR query
// makes it possible to safely append additional tags
case (k, v) if k == "tag" => (k, s"($v)")
case (k, v) if k == "show-fields" => (k, s"$v,internalPageCode")
case param => param
}
val paramsWithFields =
if (rawParams.exists {
case ("show-fields", _) => true
case _ => false
}) rawParams else rawParams :+ ("show-fields" -> "internalPageCode")
val paramsWithEditorsPicks = paramsWithFields :+ ("show-editors-picks" -> "false")
if (path == "search") {
val searchQuery = SearchQuery()
val queryWithParams = searchQuery.withParameters(paramsWithEditorsPicks.map { case (k, v) => k -> searchQuery.StringParameter(k, Some(v)) }.toMap)
Right(queryWithParams)
} else {
val itemQuery = ItemQuery(path)
val queryWithParams = itemQuery.withParameters(paramsWithEditorsPicks.map { case (k, v) => k -> itemQuery.StringParameter(k, Some(v)) }.toMap)
Left(queryWithParams)
}
}