diff --git a/src/main/scala/net/kemitix/s3thorp/Main.scala b/src/main/scala/net/kemitix/s3thorp/Main.scala index 06b2e79..d7bf9a7 100644 --- a/src/main/scala/net/kemitix/s3thorp/Main.scala +++ b/src/main/scala/net/kemitix/s3thorp/Main.scala @@ -4,6 +4,7 @@ import java.nio.file.Paths import cats.effect.ExitCase.{Canceled, Completed, Error} import cats.effect.{ExitCode, IO, IOApp} +import net.kemitix.s3thorp.awssdk.S3Client object Main extends IOApp { @@ -12,7 +13,7 @@ object Main extends IOApp { val defaultConfig: Config = Config("(none)", "", Paths.get(".").toFile) - val sync = new Sync(new ReactiveS3Client()) + val sync = new Sync(S3Client.defaultClient) def program(args: List[String]): IO[ExitCode] = for { diff --git a/src/main/scala/net/kemitix/s3thorp/S3MetaDataEnricher.scala b/src/main/scala/net/kemitix/s3thorp/S3MetaDataEnricher.scala index 5871ce5..e8fb83e 100644 --- a/src/main/scala/net/kemitix/s3thorp/S3MetaDataEnricher.scala +++ b/src/main/scala/net/kemitix/s3thorp/S3MetaDataEnricher.scala @@ -4,6 +4,7 @@ import java.io.File import fs2.Stream import cats.effect.IO +import net.kemitix.s3thorp.awssdk.S3Client trait S3MetaDataEnricher extends S3Client { diff --git a/src/main/scala/net/kemitix/s3thorp/Sync.scala b/src/main/scala/net/kemitix/s3thorp/Sync.scala index fa5b0cb..a026422 100644 --- a/src/main/scala/net/kemitix/s3thorp/Sync.scala +++ b/src/main/scala/net/kemitix/s3thorp/Sync.scala @@ -6,6 +6,7 @@ import java.time.Instant import cats.effect._ import fs2.Stream import net.kemitix.s3thorp.Main.putStrLn +import net.kemitix.s3thorp.awssdk.S3Client import scala.concurrent.Promise diff --git a/src/main/scala/net/kemitix/s3thorp/ReactiveS3Client.scala b/src/main/scala/net/kemitix/s3thorp/awssdk/ReactiveS3Client.scala similarity index 89% rename from src/main/scala/net/kemitix/s3thorp/ReactiveS3Client.scala rename to src/main/scala/net/kemitix/s3thorp/awssdk/ReactiveS3Client.scala index 9ba95d3..a4876c8 100644 --- a/src/main/scala/net/kemitix/s3thorp/ReactiveS3Client.scala +++ b/src/main/scala/net/kemitix/s3thorp/awssdk/ReactiveS3Client.scala @@ -1,4 +1,4 @@ -package net.kemitix.s3thorp +package net.kemitix.s3thorp.awssdk import cats.effect.IO import com.github.j5ik2o.reactive.aws.s3.S3AsyncClient @@ -6,7 +6,7 @@ import com.github.j5ik2o.reactive.aws.s3.cats.S3CatsIOClient import software.amazon.awssdk.services.s3.model.{HeadObjectRequest, NoSuchKeyException} import software.amazon.awssdk.services.s3.{S3AsyncClient => JavaS3AsyncClient} -class ReactiveS3Client extends S3Client { +private class ReactiveS3Client extends S3Client { private val s3Client = S3CatsIOClient(S3AsyncClient(JavaS3AsyncClient.create)) diff --git a/src/main/scala/net/kemitix/s3thorp/S3Client.scala b/src/main/scala/net/kemitix/s3thorp/awssdk/S3Client.scala similarity index 61% rename from src/main/scala/net/kemitix/s3thorp/S3Client.scala rename to src/main/scala/net/kemitix/s3thorp/awssdk/S3Client.scala index 41e0220..e7dbec0 100644 --- a/src/main/scala/net/kemitix/s3thorp/S3Client.scala +++ b/src/main/scala/net/kemitix/s3thorp/awssdk/S3Client.scala @@ -1,4 +1,4 @@ -package net.kemitix.s3thorp +package net.kemitix.s3thorp.awssdk import cats.effect.IO import net.kemitix.s3thorp.Sync.{Hash, LastModified} @@ -8,3 +8,9 @@ trait S3Client { def objectHead(bucket: String, key: String): IO[Option[(Hash, LastModified)]] } + +object S3Client { + + val defaultClient: S3Client = new ReactiveS3Client + +} \ No newline at end of file diff --git a/src/test/scala/net/kemitix/s3thorp/SyncSuite.scala b/src/test/scala/net/kemitix/s3thorp/SyncSuite.scala index df71a3f..acacd36 100644 --- a/src/test/scala/net/kemitix/s3thorp/SyncSuite.scala +++ b/src/test/scala/net/kemitix/s3thorp/SyncSuite.scala @@ -3,6 +3,7 @@ package net.kemitix.s3thorp import java.time.Instant import cats.effect.IO +import net.kemitix.s3thorp.awssdk.S3Client import org.scalatest.FunSpec class SyncSuite extends FunSpec {