sendgrid / ruby-http-client

SendGrid's Ruby HTTP Client for calling APIs
https://sendgrid.com
MIT License
23 stars 54 forks source link

ratelimit methods not working as expected #122

Open barrettkingram opened 3 years ago

barrettkingram commented 3 years ago

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:

eshanholtz commented 3 years ago

@barrettkingram

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.