This change adds support for requesting temporary object storage
credentials using the STS API. Some breaking changes are introduced to
enable this support:
- `Credentials` type has been removed. Use the `CredentialValue` type
instead. Corresponding to this the type signature for `setCreds` has
changed, though the functionality is the same.
- The type alias `Provider` has been renamed to `CredentialLoader` to
avoid naming confusion.
It appeared that some s3 servers (Yandex storage in particular)
honour `Accept-Encoding: gzip` request headeer. In such a case
servers can't send `Content-Length` header as transfer size differ
from the body size.
The simplest solution for this problem is to force http-client
to send `Accept-Encoding: identity` header in the HeadObject
request.
Co-authored-by: Aditya Manthramurthy <donatello@users.noreply.github.com>
Use streaming signature to avoid reading the body twice in PutObject
requests, where the body can be upto 5GIB.
Note that the body is signed only used when the connection is not
using TLS.
Current functionality only supported stream based
uploads using multipart, this meant that even for
small file sizes we were performing multipart operations
which is slower and unnecessary.
This PR fixes this behavior.
- Also add .stylish-haskell.yaml
- Re-implements `limitedMapConcurrently` using STM
- Dependencies clean up in cabal file
- Fix shadow warnings and other build warnings
* Make CopyPartSource constructor private
... and make individual record accessors exported. This change allows
adding of additional record members to CopyPartSource without breaking
applications.
* Move high-level copyObject functions to CopyObject module
* Make copyObject use SourceInfo, DestinationInfo
... to allow supporting features like client-side and server-side
encryption subsequently.
- fix warnings in tests/LiveServer.hs
This change adds 3 functions to main API: presignedGetObjectURL,
presignedPutObjectURL and presignedHeadObjectURL.
A fourth more generic API is added to `Network.Minio.S3API` -
makePresignedURL.
Additionally, refactors signing code for readability and the ability
to reuse for pre-signing.
* Performs server side copy of an object by creating a new object that
is a copy of an existing object or part of an existing object.
* The user may specify an object on server of any size, and optionally
specify a byte range to only copy a part of the object.
* Copy conditions are also supported.