Class: InlineUploader::EndPoint

Inherits:
Object
  • Object
show all
Defined in:
lib/inline_uploader.rb

Defined Under Namespace

Classes: BadRequestError

Constant Summary collapse

HEADERS =
{'Content-Type' => 'text/plain'}
SUCCESS =
[200, HEADERS, ['success']]
BAD_REQUEST =
[400, HEADERS, ['bad request']]
ERROR =
[500, HEADERS, ['error']]

Instance Method Summary collapse

Constructor Details

#initialize(delegate) ⇒ EndPoint

Returns a new instance of EndPoint.



127
128
129
# File 'lib/inline_uploader.rb', line 127

def initialize(delegate)
  @delegate = delegate
end

Instance Method Details

#call(env) ⇒ Object



131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
# File 'lib/inline_uploader.rb', line 131

def call(env)
  request = Rack::Request.new(env)
  raise BadRequestError unless valid_request? request

  tag = request.params.keys.detect {|k| valid_tag? k }
  raise BadRequestError unless tag

  file = request.params[tag]
  raise BadRequestError unless file.member?(:tempfile)

  logger.info "Upload file: #{file.inspect}"

  upload = File.join(@delegate.upload_dir, tag)

  FileUtils.mkdir_p @delegate.upload_dir
  FileUtils.move file[:tempfile].path, upload

  File.open("#{upload}_meta", 'w') do |f|
    file.delete(:tempfile)
    f.puts file.to_yaml
  end

  SUCCESS
rescue BadRequestError
  BAD_REQUEST
rescue Exception => e
  logger.error e.inspect
  logger.error e.backtrace.join("\n")
  ERROR
end