-
Notifications
You must be signed in to change notification settings - Fork 121
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Proposal: expose a public S3 module #446
Comments
Hey, I agree it is in a weird spot right now. I was thinking the other day about the opposite, though, moving AWS stuff completely out of Req to ReqS3. So the idea of having AWS signature in Req was, following That being said, yes, my goal with Req is supporting what most people tend to use most of the time and S3 fits that. I don't think requiring people to use a plugin adds a lot friction so I'm kind of OK with the status quo (messy internal boundaries not withstanding) but I'd be lying if I told you I haven't thought about bringing everything in into Req proper. I'll give it some more thought, thank you for bringing this up. If you need just signing, another option for you is https://hexdocs.pm/aws_signature/aws_signature.html (which Req optionally depended on until I re-implemented it (with many bugs)). I think this is a solid package, though if you end up using it consider proposing deprecating sign_v4/10 and friends in favor of |
I'm not opposed to moving everything into req_s3, in most ways I think that is better. I proposed this assuming you wanted to keep signing and
For sure, but I already use Req and it has almost everything I need (or at least, should with #445). At which point, I'd like to use an existing dep of mine :) Happy to help with this if you decide on next steps |
Thank you for your work on Req!. I wanted to suggest an area for improvement:
I want to use the S3-related logic in
Req.Utils
in my own application for presigning, but that module is not publicly documented which leads me to believe its use is discouraged. However, it is used externally by at least ReqS3. The bulk of S3 logic lives in theReq.Utils
module, with ReqS3 a relatively small wrapper around it. All this to say, the boundaries between the two packages are unclear and I'm not sure that a ReqS3 package is necessary if the most important part to encapsulate is provided by Req (i.e., signing utilities).My proposal is to create an officially supported public interface for S3-related functionality. The exact scope of that module is up for debate, but at a minimum it would need to provide a complete implementation of AWS Signature Version 4. Beyond that, we could consider bringing some of the ReqS3 utilities in, or possibly moving the put_aws_sigv4/1 to this module. Most important is the signing code, which is the foundation everything else needs.
The goals are:
Since S3 is ubiquitous in the Cloud, I think a high percentage of projects in the ecosystem would benefit from their HTTP client providing robust utilties for interacting with it.
If agreed this is a good direction, I can open a PR.
The text was updated successfully, but these errors were encountered: