class FoxycartHelpers::Middleware

Public Class Methods

new(app=nil) click to toggle source
# File lib/foxycart_helpers/middleware.rb, line 8
def initialize(app=nil)
  @app = app
end

Public Instance Methods

call(env) click to toggle source
# File lib/foxycart_helpers/middleware.rb, line 16
def call(env)
  req = Rack::Request.new(env)
  return @app.call(env) unless req.path_info == config.mount_point
  return response 405 unless req.post?

  parse_and_respond req.POST['FoxyData']
end
config() click to toggle source
# File lib/foxycart_helpers/middleware.rb, line 12
def config
  FoxycartHelpers.configuration
end

Private Instance Methods

parse_and_respond(params) click to toggle source
# File lib/foxycart_helpers/middleware.rb, line 26
def parse_and_respond(params)
  datafeed = Datafeed.from_params params
  FoxycartHelpers.propagate datafeed
  response 200, 'foxy'
rescue => e
  raise e if config.raise_exceptions?
  response 500
end
response(status, body='', headers={}) click to toggle source
# File lib/foxycart_helpers/middleware.rb, line 35
def response(status, body='', headers={})
  [
    status,
    {'Content-Type' => 'text/plain'}.merge(headers),
    [body],
  ]
end