Rework presign function to allow signature of clients with dedicated endpoint
Hi,
It is not possible to use the presign function with custom endpoint (non-AWS), especially with endpoint that includes bucket name in path instead of virtual host: the hostname is systematically tweaked to add the unwanted bucket name. See https://github.com/knadh/listmonk/issues/1782
Here is a patch to allow this library to presign URL for Minio and other non-AWS S3 providers. Perhaps it lacks a force_path_style attribute something to mock the aws library behavior in this case.
As the Endpoint (in fact hostname) is redundant in presign request, I remove it in favor of the endpoint given in the s3 client.
Tested with Minio and Oracle Cloud Infrastructure, should be tested with AWS S3 (I don't have an account).