Skip to content
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

Config headers to not be capitalized #143

Open
AllanSiqueira opened this issue Jul 7, 2023 · 3 comments
Open

Config headers to not be capitalized #143

AllanSiqueira opened this issue Jul 7, 2023 · 3 comments

Comments

@AllanSiqueira
Copy link

Context

I am consuming a API that have case sensitive header keys.
It is not common to see an case-sensitive header and also is off the specification. But sometimes it is off our control.

What I have in mind is some config to making possible to prevent the capitalize behavior and pass the header without changing it. Something like this:

http = Net::HTTP.new(endpoint.host, endpoint.port)
http.preserve_headers = true

The default behavior will remain the same, the idea is only change the behavior if this config are true.

Some workaround I can do is making a monkeypath to prevent the capitalization, but I thing it make sense to have this configuration.

I can try to implement it, but I want to know if make sense for Net::HTTP.

@technicalpickles
Copy link
Contributor

I have been looking at how headers are capitalized for other reasons, and there is, fortunately, only one place where it is defined in Net::HTTPHeader#capitalize, and that module is included in Net::HTTPResponse and Net::HTTPGenericRequest.

I could imagine implementing this behavior by having some attribute in those classes which controls if capitalize is a no-op, and http.preserve_headers == true would handle setting that attribute.

@AllanSiqueira
Copy link
Author

Great, I will work on it!

@AllanSiqueira
Copy link
Author

@yuki24 Sorry to tag you, do you think this change make sense? Can I do something to clarify or make it better?

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Development

No branches or pull requests

2 participants