* [sbt] define existing single module project as legacyRoot
* [sbt] add empty cli module depending on legacyRoot
* [cli] move Main to cli module
* [cli] move ParseArgs to cli module
* [sbt] limit scope of scopt dependency to cli module
* [cli] moved logging config to cli module
* [cli] rename module directory
* [aws-api] added empty module
* [sbt] aggregate builds from cli
* [aws-lib] add empty module
* [core] add empty module
* [sbt] add comment graphing module dependencies
* [sbt] adjust module dependencies to reflect plan
Include legacyRoot at the base until it can be redistributed
* [legacy] make some awssdk classes non-private
during this transition, these classes being private would cause problems
* [aws-lib] create S3ClientBuilder
This is copied from the legacy S3Client companion object
* [domain] add empty module
* [domain] move Bucket into module
* [legacy] RemoteKey no longer has dependency on Config
* [domain] move RemoteKey into module
* [domain] move MD5Hash into module
* [legacy] LocalFile no longer had dependency on MD5HashGenerator
* [domain] move LocalFile into module
* [domain] mode LastModified into module
* [domain] move RemoteMetaData into module
* [domain] move S3MetaData into module
* [domain] move Exclude into module
* [domain] move Filter into module
* [domain] move KeyModified into module
* [domain] move HashModified into module
* [domain] RemoteKey.resolve added
* [domain] add dependency on scalatest
* [domain] LocalFile.resolve added
* [legacy] Remove UnitTest
* [legacy] optimise imports
* [domain] move S3ObjectsData moved into module
* [legacy] wrapper for using GeneralProgressListener
* [domain] move Config into module
* [sbt] move aws-api below legacyRoot in dependencies
This will allow use to move S3Client into the aws-api module
* [legacy] rename S3Client companion as S3ClientBuilder
Preparation to move this into its own file.
* Inject Logger via CLI (#34)
* [S3Client] refactor defaultClient()
* [S3Client] transfermanager explicitly uses the same s3client
* [S3ClientPutObjectUploader] refactor putObjectRequest creation
* [cli] copy in Logging trait as Logger class
* [cli] Main uses Logger
* [cli] simplify Logger and pass to Sync.run
* [legacy] SyncLogging converted to companion
* [cli] Logger info can more easily use levels again
* [legacy] LocalFileStream uses injected info
* [legacy] S3MetaDataEnricher remove unused Logging
* [legacy] ActionGenerator remove unused Logging
* [legacy] convert ActionGenerator to an object
* [legacy] import log methods from SyncLogging
* [legacy] move getS3Status from S3Client to S3MetaDataEnricher
* [legact] convert ActionsSubmitter to an object
* [legacy] convert LocalFileStream to an object
* [legacy] move Action case classes inside companion
* [legacy] move UploadEvent case classes inside companion and rename
* [legacy] move S3Action case classes into companion
* [legacy] convert Sync to an object
* [cli] Logger takes verbosity level at construction
No longer needs to be passed the whole Config implicitly for each info
call.
* [legacy] stop passing implicit Config for logging purposes
Pass a more specific implicit info: Int => String => Unit instead
* [legacy] remove DummyS3Client
* [legacy] remove Logging
* [legacy] convert MD5HashGenerator to an object
* [aws-api] move S3Client into module
* [legacy] convert KeyGenerator to an object
* [legacy] don't use IO.unsafeRunSync directly
* [legacy] refactor/rewrite Sync.run
* [legacy] Rewrite sort using a for-comprehension
* [legacy] Sync inline sorting
* [legacy] SyncLogging rename method
* [legacy] repair tests
* [sbt] move core module to a dependency of legacyRoot
* [sbt] add test dependencies to core module
* [core] move classes into module
* [aws-lib] move classes into module
* [sbt] remove legacy root
* [ThorpS3Client] Extract QuoteStripper and S3ClientObjectLister
* [ThorpS3Client] Extract S3ClientUploader
* [ThorpS3Client] Extract S3ClientCopier
* [ThorpS3Client] Extract S3ClientDeleter
* [ThropS3Client] Can select upload strategy based on file size
Currently switches to an alternate that is a clone of the original
method.
* [MD5HashGenerator] Add md5FilePart
Reimplement md5File using md5FilePart
* [MyS3CatsIOClient] extracted
* [S3ClientMultiPartUploader] add tests for accept def
* [S3ClientMultiPartUploader] initiate multi-part upload
* [Md5HashGenerator] add tests reading part of a file = failing test
* [Md5HashGenerator] fix when reading part of a file
* [S3ClientMultiPartUploader] create UploadPartRequests
* [S3ClientMultiPartUploader] uploadPart delegates to an S3Client
* [S3ClientMultiPartUploader] uploadParts uploads each part
* [S3ClientMultiPartUploader] complete upload should completeUpload
* [S3ClientMultiPartUploader] upload file tests when all okay
* [S3ClientMultiPartUploader] Use Recording client in component tests
* [s3ClientMultiPartUploader] remove unused variable
* [S3ClientMultiPartUploader] failing test for init upload error
* [S3ClientMultiPartUploader] Handle errors during multi-part upload
* [S3ClientMultiPartUploader] Retry uploads
* [S3Action] ErroredS4Action now holds the error
* [S3ClientMultiPartUploader] Add logging
* [S3ClientMultiPartUploader] Display warning messages
* [S3ClientMultiPartUploader] test creation of CreateMulitpartUploadRequest
* [S3ClientMultiPartUploader] specify bucket in UploadPartRequest
* [S3ClientMultiPartUploader] verify complete request has upload id
* [S3ClientMultiPartUploader] verify abort request contains upload id
* [S3ClientMultiPartUploader] add logging around retry errors
* [S3ClientMultiPartUploader] verify upload part request had remote key
* [S3ClientMultipartuploaderLogging] refactoring/rewriting strings
* [S3ClientMultiPartUploader] add bucket to abort request
* [S3ClientMultiPartUploader] part numbers must start at 1
* [S3ClientMultiPartUploader] fix capitalisation in comment
* [Config] define maxRetries
* [S3ClientMultiPartUploader] abort request should have the remote key
* [S3ClientMultiPartUploader] display remote key properly
* [S3ClientMultiPartUploader] rename method for plural parts
* [S3ClientMultiPartUploader] log hash and part number
* [MD5HashGenerator] support creating hash from a byte array
* [sbt] add aws-java-sdk-s3 (v1) for multi-part uploads
The reactive-aws-s3-* library is based on the V2 of the Java library,
which doesn't support multi-part uploads.
* [S3ClientMultiPartUploader] use Amazon S3 Client (from v1 sdk)
* [S3ClientMultiPartUploader] include file and offset in upload part request
* {S3ClientMultiPartUploader] Add part etags to complete request
* [S3ClientMultiPartUploader] Use withers to create requests
* [S3ClientMultiPartUploader] don't bounce responses to tags when client accepts then as is
* [MD5HashGenerator] use MD5Hash
* [S3ClientMultiPartUploader] include hash in sending log message
* [S3ClientMultiPartUploader] tests throw correct exception
* [S3ClientMultiPartUploader] Include returned hash in error and log when send is finished
* [S3ClientUploader] Extract as trait, renaming implementations
* [S3Client] upload def now requires tryCount
* [S3ClientUploader] add accepts to trait
* [S3ClientMultiPartUploaderSuite] remove ambiguity over class import
* [S3ClientMultiPartTransferManager] implement and use