def getUriToProxy()

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