class Griddler::Ses::Middleware
Public Class Methods
new(app)
click to toggle source
# File lib/griddler/ses/middleware.rb, line 4 def initialize(app) @app = app end
Public Instance Methods
call(env)
click to toggle source
# File lib/griddler/ses/middleware.rb, line 8 def call(env) # a bug on the AWS side doesn't set the content type to application/json type properly, # so we have to intercept and do this in order for Griddler's controller to correctly # parse the parameters (see https://forums.aws.amazon.com/thread.jspa?messageID=418160) if is_griddler_request?(env) && is_aws_sns_request?(env) env['CONTENT_TYPE'] = 'application/json; charset=UTF-8' end @app.call(env) end
Private Instance Methods
griddler_path()
click to toggle source
# File lib/griddler/ses/middleware.rb, line 20 def griddler_path @griddler_path ||= Rails.application.routes.url_helpers.url_for(controller: 'griddler/emails', action: 'create', only_path: true) end
is_aws_sns_request?(request)
click to toggle source
# File lib/griddler/ses/middleware.rb, line 28 def is_aws_sns_request?(request) request['HTTP_X_AMZ_SNS_MESSAGE_TYPE'].present? end
is_griddler_request?(request)
click to toggle source
# File lib/griddler/ses/middleware.rb, line 24 def is_griddler_request?(request) request['REQUEST_PATH'] == griddler_path end