ratelimit methods not working as expected
barrettkingram opened this issue · comments
Issue Summary
Response#ratelimit
is not working as expected. It just returns nil
every time. I believe this is because of a header capitalization mismatch between what that method expects and what is actually returned.
Code Snippet
sendgrid_client = SendGrid::API.new(api_key: SENDGRID_API_KEY).client
data = {automatic_security: true, custom_spf: false, default: false, domain: "my-test-domain.com", subdomain: "abc"}.stringify_keys
response = sendgrid_client.whitelabel.domains.post(request_body: data)
# This returns nil
response.headers["X-RateLimit-Limit"]
# This returns ["1"]
response.headers["x-ratelimit-limit"]
# This returns nil
response.ratelimit
Technical details:
- ruby-http-client version: 3.5.1
- ruby version: 2.5
Looking at the docs for Net::HttpHeader, it states that the keys should be case-insensitive, but looking at this relevant StackOverflow post, reading the header hash (which is done to populate response headers under the hood) returns lower-cased keys. This appears to be causing issues as we construct the RateLimit object in ruby_http_client.rb. The fix here would be updating L72-74 to use the lower cased header key.
This issue has been added to our internal backlog to be prioritized. Pull requests and +1s on the issue summary will help it move up the backlog.