Skip to content
New issue

Have a question about this project? # for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “#”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? # 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?

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

No branches or pull requests

2 participants