Skip to content
Permalink
Branch: master
Find file Copy path
Find file Copy path
Fetching contributors…
Cannot retrieve contributors at this time
60 lines (49 sloc) 1.51 KB
module JQuery
module FileUpload
module Rails
class Middleware
def initialize(app)
@app = app
end
def call(env)
dup._call(env)
end
def _call(env)
@status, @headers, @response = @app.call(env)
@request = Rack::Request.new(env)
if iframe_transport?
@headers['Content-Type'] = 'text/html'
[@status, @headers, self]
else
[@status, @headers, @response]
end
end
def each(&block)
block.call(html_document_left) if iframe_transport?
@response.each(&block)
block.call(html_document_right) if iframe_transport?
end
def iframe_transport?
@request.params['X-Requested-With'] == 'IFrame'
end
def html_document_left
"<!DOCTYPE html><html><body><textarea #{metadata}>"
end
def html_document_right
"</textarea></body></html>"
end
def metadata
meta = {}
meta['data-status'] = @response.status if @response.respond_to? :status
meta['data-statusText'] = @response.status_message if @response.respond_to? :status_message
meta['data-type'] = @headers['Content-Type'] if @headers.has_key?('Content-Type')
meta.map {|key,value| "#{key}='#{value}'" }.join(' ')
end
private
def method_missing(method, *args)
@response.send(method.intern, *args)
end
end
end
end
end
You can’t perform that action at this time.