diff --git a/src/main/scala/net/kemitix/s3thorp/Sync.scala b/src/main/scala/net/kemitix/s3thorp/Sync.scala index a026422..4e22b4d 100644 --- a/src/main/scala/net/kemitix/s3thorp/Sync.scala +++ b/src/main/scala/net/kemitix/s3thorp/Sync.scala @@ -10,7 +10,10 @@ import net.kemitix.s3thorp.awssdk.S3Client import scala.concurrent.Promise -class Sync(s3Client: S3Client) extends LocalFileStream with S3MetaDataEnricher { +class Sync(s3Client: S3Client) + extends LocalFileStream + with S3MetaDataEnricher + with UploadSelectionFilter { override def objectHead(bucket: String, key: String)= s3Client.objectHead(bucket, key) @@ -25,15 +28,6 @@ class Sync(s3Client: S3Client) extends LocalFileStream with S3MetaDataEnricher { } } yield () - private def uploadRequiredFilter: Either[File, S3MetaData] => Stream[IO, File] = { - case Left(file) => Stream(file) - case Right(s3Metadata) => - Stream.eval(for { - _ <- putStrLn(s"upload required: ${s3Metadata.localFile}") - //md5File(localFile) - //filter(localHash => options.force || localHash != metadataHash) - } yield s3Metadata.localFile) - } private def performUpload: File => Stream[IO, Promise[Unit]] = file => Stream.eval(for { _ <- putStrLn(s"upload: $file") diff --git a/src/main/scala/net/kemitix/s3thorp/UploadSelectionFilter.scala b/src/main/scala/net/kemitix/s3thorp/UploadSelectionFilter.scala new file mode 100644 index 0000000..b22dc46 --- /dev/null +++ b/src/main/scala/net/kemitix/s3thorp/UploadSelectionFilter.scala @@ -0,0 +1,21 @@ +package net.kemitix.s3thorp + +import java.io.File + +import fs2.Stream +import cats.effect.IO +import net.kemitix.s3thorp.Main.putStrLn + +trait UploadSelectionFilter { + + def uploadRequiredFilter: Either[File, S3MetaData] => Stream[IO, File] = { + case Left(file) => Stream(file) + case Right(s3Metadata) => + Stream.eval(for { + _ <- putStrLn(s"upload required: ${s3Metadata.localFile}") + //md5File(localFile) + //filter(localHash => options.force || localHash != metadataHash) + } yield s3Metadata.localFile) + } + +}