Class: JQuery::FileUpload::Rails::Middleware

Inherits:
Object
  • Object
show all
Defined in:
lib/jquery/fileupload/rails/middleware.rb

Instance Method Summary collapse

Constructor Details

#initialize(app) ⇒ Middleware

Returns a new instance of Middleware.



5
6
7
# File 'lib/jquery/fileupload/rails/middleware.rb', line 5

def initialize(app)
  @app = app
end

Dynamic Method Handling

This class handles dynamic methods through the method_missing method

#method_missing(method, *args) ⇒ Object (private)



53
54
55
# File 'lib/jquery/fileupload/rails/middleware.rb', line 53

def method_missing(method, *args)
  @response.send(method.intern, *args)
end

Instance Method Details

#_call(env) ⇒ Object



13
14
15
16
17
18
19
20
21
22
23
# File 'lib/jquery/fileupload/rails/middleware.rb', line 13

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

#call(env) ⇒ Object



9
10
11
# File 'lib/jquery/fileupload/rails/middleware.rb', line 9

def call(env)
  dup._call(env)
end

#each(&block) ⇒ Object



25
26
27
28
29
# File 'lib/jquery/fileupload/rails/middleware.rb', line 25

def each(&block)
  block.call(html_document_left) if iframe_transport?
  @response.each(&block)
  block.call(html_document_right) if iframe_transport?
end

#html_document_leftObject



35
36
37
# File 'lib/jquery/fileupload/rails/middleware.rb', line 35

def html_document_left
  "<!DOCTYPE html><html><body><textarea #{}>"
end

#html_document_rightObject



39
40
41
# File 'lib/jquery/fileupload/rails/middleware.rb', line 39

def html_document_right
  "</textarea></body></html>"
end

#iframe_transport?Boolean

Returns:

  • (Boolean)


31
32
33
# File 'lib/jquery/fileupload/rails/middleware.rb', line 31

def iframe_transport?
  @request.params['X-Requested-With'] == 'IFrame'
end

#metadataObject



43
44
45
46
47
48
49
# File 'lib/jquery/fileupload/rails/middleware.rb', line 43

def 
  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