Class: Rack::LargeUploads

Inherits:
Object
  • Object
show all
Defined in:
lib/rack/large-uploads.rb,
lib/rack/large-uploads/version.rb,
lib/rack/large-uploads/uploaded_file.rb,
lib/rack/large-uploads/uploaded_chunk.rb

Defined Under Namespace

Classes: UploadedChunk, UploadedFile

Constant Summary collapse

VERSION =
"0.0.2"

Instance Method Summary collapse

Constructor Details

#initialize(app, options = {}, &block) ⇒ LargeUploads

Returns a new instance of LargeUploads.



13
14
15
16
17
18
19
20
21
22
23
24
# File 'lib/rack/large-uploads.rb', line 13

def initialize(app, options = {}, &block)
  @app     = app
  @filters = {}

  if block
    if block.arity == 1
      block.call(self)
    else
      instance_eval(&block)
    end
  end
end

Instance Method Details

#after(&block) ⇒ Object



54
55
56
# File 'lib/rack/large-uploads.rb', line 54

def after(&block)
  @filters[:after] = block
end

#before(&block) ⇒ Object



50
51
52
# File 'lib/rack/large-uploads.rb', line 50

def before(&block)
  @filters[:before] = block
end

#call(env) ⇒ Object



26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
# File 'lib/rack/large-uploads.rb', line 26

def call(env)
  request = Rack::Request.new(env)
  params  = request.params

  if request.post? && request.form_data?
    files = extract_files(request, params)
  end

  if files.present?
    if files.all? { |f| f.is_a?(Rack::LargeUploads::UploadedFile) }
      filter(:before, env, files)
      response = @app.call(env)
      filter(:after, env, files)

      return response
    else
      return [202, {}, []]
    end
  else
    @app.call(env)
  end
end