in app/controllers/ProxiesController.scala [83:114]
def proxyForId(fileId:String, proxyType:Option[String]) = IsAuthenticatedAsync { _=> _=>
proxyType match {
case None=>
scanamoAlpakka
.exec(table.query("fileId"===fileId))
.runWith(Sink.head)
.map(result=>{
val failures = result.collect({case Left(err)=>err})
if(failures.nonEmpty){
logger.error(s"Could not look up proxy for $fileId: $failures")
InternalServerError(GenericErrorResponse("error",failures.map(_.toString).mkString(", ")).asJson)
} else {
val output = result.collect({case Right(entry)=>entry})
Ok(ObjectListResponse("ok","proxy_location",output, output.length).asJson)
}
})
case Some(t)=>
scanamoAlpakka
.exec(table.get("fileId"===fileId and ("proxyType"===t.toUpperCase)))
.runWith(Sink.head)
.map({
case None=>
NotFound(GenericErrorResponse("not_found","No proxy was registered").asJson)
case Some(Left(err))=>
logger.error(s"Could not look up proxy for $fileId: ${err.toString}")
InternalServerError(GenericErrorResponse("db_error", err.toString).asJson)
case Some(Right(items))=>
Ok(responses.ObjectGetResponse("ok","proxy_location",items).asJson)
})
}
}