private def retrieveAndStore()

in src/main/scala/ophan/geoip/db/refresher/Lambda.scala [22:43]


  private def retrieveAndStore(maxmindDatabaseEdition: MaxmindDatabaseEdition) = {
    (for {
      downloadedArchiveFile <- MaxmindArchiveDownloader.download(maxmindDatabaseEdition)
      _ <- maxmindDatabaseEdition.usingDatabaseStreamFrom(downloadedArchiveFile) { streamOfKnownSize =>
        val s3Key = s"geoip/${maxmindDatabaseEdition.databaseFileName}"
        val objectRequest = PutObjectRequest.builder.bucket("ophan-dist").key(s3Key)
          .grantRead(s"id=$DeployToolsAWSAccountCanonicalUserId") // so TeamCity can read file for CI tests
          .build

        logger.info(Map(
          "databaseFile.size" -> streamOfKnownSize.size,
          "databaseFile.s3.destination" -> s3Key
        ), s"Starting upload of ${streamOfKnownSize.size} bytes to S3 ($objectRequest)")
        val putObjectResponse = AWS.S3.putObject(objectRequest, streamOfKnownSize.asAwsSdkRequestBody())
        logger.info(Map(
          "databaseFile.s3.versionId" -> putObjectResponse.versionId
        ), s"Upload complete!")
      }
    } yield ()) match {
      case Failure(err) => logger.error(s"Failure to retrieve url", err)
      case _:Success[_] =>
    }