in common/src/main/scala/com/theguardian/multimedia/archivehunter/common/ProxyTranscodeFramework/ProxyGenerators.scala [78:111]
def getUriToProxy(entry: ArchiveEntry) = entry.storageClass match {
case StorageClass.GLACIER=>
val url = s"s3://${URLEncoder.encode(entry.bucket,"UTF-8")}/${URLEncoder.encode(entry.path,"UTF-8")}"
val haveRestore = haveGlacierRestore(entry) match {
case Success(result)=>result
case Failure(err)=>
logger.error(err)
false
}
if(haveRestore){
logger.info(s"$url is in Glacier but has been restored. Trying to proxy directly.")
Future(Some(url))
} else {
logger.info(s"$url is in Glacier, can't proxy directly. Looking up any existing video proxy")
proxyLocationDAO.getProxy(entry.id, ProxyType.VIDEO).flatMap({
case None =>
proxyLocationDAO.getProxy(entry.id, ProxyType.AUDIO).map({
case None => None
case Some(proxyLocation) =>
val proxUrl = s"s3://${URLEncoder.encode(proxyLocation.bucketName,"UTF-8")}/${URLEncoder.encode(proxyLocation.bucketPath,"UTF-8")}"
logger.info(s"Found audio proxy at $proxUrl")
Some(proxUrl)
})
case Some(proxyLocation) =>
val proxUrl = s"s3://${URLEncoder.encode(proxyLocation.bucketName,"UTF-8")}/${URLEncoder.encode(proxyLocation.bucketPath,"UTF-8")}"
logger.info(s"Found video proxy at $proxUrl")
Future(Some(proxUrl))
})
}
case _=>
val url = s"s3://${URLEncoder.encode(entry.bucket,"UTF-8")}/${URLEncoder.encode(entry.path,"UTF-8")}"
logger.info(s"$url is in ${entry.storageClass}, will try to proxy directly")
Future(Some(url))
}