1
0
postdoc/lib/sendgrid_client.rb

47 lines
1.1 KiB
Ruby
Raw Normal View History

2020-12-06 20:49:03 +01:00
class SendgridClient
class TemplateValidationResult < Struct.new(:valid, :original_response); end
def initialize(api_token)
@faraday_client = setup_faraday_client!(api_token)
end
def get_template(template_id)
response = faraday_client.get("templates/#{template_id}")
return nil if response.status != 200
JSON.parse(response.body)
end
def validate_request(request_payload)
sandboxed_request_payload = request_payload.merge(sandbox_parameters)
response = faraday_client.post('mail/send', sandboxed_request_payload.to_json)
TemplateValidationResult.new(response.status == 200, response)
end
private
attr_reader :faraday_client
def setup_faraday_client!(api_token)
Faraday.new('https://api.sendgrid.com/v3/', request: { timeout: 5 }) do |connection|
connection.headers = {
accept: 'application/json',
'Content-Type': 'application/json'
}
connection.authorization(:Bearer, api_token)
end
end
def sandbox_parameters
{
'mail_settings' => {
'sandbox_mode' => {
'enable' => true
}
}
}
end
end