app/services/CapiService.scala (14 lines of code) (raw):

package services import play.api.libs.ws.WSClient import scala.concurrent.{ExecutionContext, Future} class CapiService(apiKey: String, wsClient: WSClient)(implicit val ec: ExecutionContext) { private val url = "https://content.guardianapis.com" private def request(path: String, querystring: Option[String]): Future[String] = wsClient .url(s"$url/$path?api-key=$apiKey${querystring.map(qs => s"&$qs").getOrElse("")}") .get() .map(response => response.body) def getTags(querystring: String): Future[String] = request("tags", Some(querystring)) def getSections(querystring: String): Future[String] = request("sections", Some(querystring)) def getContent(path: String): Future[String] = request(path, None) }