sendgrid-ruby icon indicating copy to clipboard operation
sendgrid-ruby copied to clipboard

[BUG] Filter all messages does not work as described in documentation

Open shelmire opened this issue 4 years ago • 5 comments

Issue Summary

Getting messages via the described steps in the documentation does not work. Note that below I demonstrate that the example code fails.

Steps to Reproduce

  1. Create a script with the following code (code copied exactly from the initialize step and this section), per https://github.com/sendgrid/sendgrid-ruby/blob/main/USAGE.md#email-activity .

  2. Execute the script.

  3. Observe error.

  4. Note that what I really want to do is get any email status updates within the past hour or so (5 mins in example) with something like this, which should probably work according to https://sendgrid.com/docs/for-developers/sending-email/getting-started-email-activity-api/#creating-compound-queries:

filter_key = 'last_event_time'
filter_operator = ERB::Util.url_encode('>')
filter_value = (Time.now - 300).utc.strftime('%Y-%m-%dT%H:%M:%S.%L%z') # check the last 5 minutes
filter_value = ERB::Util.url_encode(format('"%s"', filter_value))
query_params = {}
query_params['query'] = format("%s%s%s", filter_key, filter_operator, filter_value)
query_params['limit'] = '10000'

Code Snippet

require 'sendgrid-ruby'

sg = SendGrid::API.new(api_key: ENV['SENDGRID_API_KEY'])

require 'erb'

filter_key = 'to_email'
filter_operator = ERB::Util.url_encode('=')
filter_value = '[email protected]'
filter_value = ERB::Util.url_encode(format('"%s"', filter_value))
query_params = {}
query_params['query'] = format("%s%s%s", filter_key, filter_operator, filter_value)
query_params['limit'] = '1'

params = query_params
response = sg.client.messages.get(query_params: params)
puts response.status_code
puts response.body
puts response.headers

Exception/Log

400
{"errors":[{"message":"error parsing input at line 1, position 11: syntax error: unexpected IDENTIFIER","field":"query"}]}
{"server"=>["nginx"], "date"=>["Fri, 08 Jan 2021 14:43:14 GMT"], "content-type"=>["application/json"], "content-length"=>["123"], "connection"=>["close"], "x-request-id"=>["b753cf16-8c0b-43c4-9301-275a2d002678"], "access-control-allow-methods"=>["HEAD, GET, PUT, POST, DELETE, OPTIONS, PATCH"], "access-control-max-age"=>["21600"], "access-control-expose-headers"=>["Link, Location"], "access-control-allow-origin"=>["*"], "access-control-allow-headers"=>["AUTHORIZATION, Content-Type, On-behalf-of, x-sg-elas-acl, X-Recaptcha, X-Request-Source, Browser-Fingerprint"], "content-security-policy"=>["default-src https://api.sendgrid.com; frame-src 'none'; object-src 'none'"], "x-content-type-options"=>["nosniff"], "strict-transport-security"=>["max-age=31536000"], "x-client-ff"=>["1000"], "x-ratelimit-remaining"=>["7"], "x-ratelimit-limit"=>["10"], "x-ratelimit-reset"=>["1610117100"]}

Technical details:

  • sendgrid-ruby version: tried with 6.3.8 and 6.3.3
  • ruby version: ruby 2.6.6p146

shelmire avatar Jan 08 '21 14:01 shelmire