def delete()

in api/src/main/scala/com/gu/adapters/store/Store.scala [222:244]


  def delete(bucket: String, keys: String*): Either[Error, Unit] = {
    if (keys.nonEmpty) {
      val request = new DeleteObjectsRequest(bucket).withKeys(keys: _*)
      val resp = Try(client.deleteObjects(request))

      // We need to unpack MultiObjectDeleteExceptions to ensure errors
      // returned/logged are useful
      val withErrors = resp match {
        case Success(_) => Right(())
        case Failure(ex: MultiObjectDeleteException) =>
          val errors = ex.getErrors.asScala.toList
            .map(ex => s"Unable to delete object '${ex.getKey}' from bucket '$bucket', reason: ${ex.getMessage}")
            .mkString(", ")
          Left(Errors.ioFailed(List(errors)))
        case Failure(err) => Left(ioError(err))
      }

      withErrors.left.map(e => logError("Multi-delete failed", e))
      withErrors
    } else {
      Right(())
    }
  }