Sha256: 424ec254ab0b509493f08f325aad47dc1adfdc2b443861d141b383c3e5d74d80

Contents?: true

Size: 1010 Bytes

Versions: 7

Compression:

Stored size: 1010 Bytes

Contents

module Remotipart

  # A middleware to look for our form parameters and 
  # encourage Rails to respond with the requested format
  class Middleware
    def initialize app
      @app = app
    end

    def call env
      # For some reason, in Rails 3.0, `env['rack.request.form_hash']`
      # isn't populated unless we manually initialize a new Rack::Request
      # and call the `POST` method on it
      if ::Rails.version < "3.1"
        Rack::Request.new(env).POST
      end
      params = env['rack.request.form_hash']

      # This was using an iframe transport, and is therefore an XHR
      # This is required if we're going to override the http_accept
      if params and params['X-Requested-With'] == 'IFrame'
        env['HTTP_X_REQUESTED_WITH'] = 'xmlhttprequest'
      end

      # Override the accepted format, because it isn't what we really want
      if params and params['X-Http-Accept']
        env['HTTP_ACCEPT'] = params['X-Http-Accept']
      end

      @app.call(env)
    end
  end
end

Version data entries

7 entries across 7 versions & 1 rubygems

Version Path
remotipart-1.1.0 lib/remotipart/middleware.rb
remotipart-1.0.5 lib/remotipart/middleware.rb
remotipart-1.0.4 lib/remotipart/middleware.rb
remotipart-1.0.3 lib/remotipart/middleware.rb
remotipart-1.0.2 lib/remotipart/middleware.rb
remotipart-1.0.1 lib/remotipart/middleware.rb
remotipart-1.0 lib/remotipart/middleware.rb