Sha256: ca37e87785fdf110c4b8637c23a849fe2cf6ab159fe8506e1f682f90628cb78f

Contents?: true

Size: 870 Bytes

Versions: 8

Compression:

Stored size: 870 Bytes

Contents

module Tessa
  class RackUploadProxy

    def call(env)
      params = env['rack.request.form_hash']
      upload = Tessa::Upload.create({
        name: params["name"],
        size: params["size"],
        date: params["date"],
        mime_type: params["mime_type"],
      }.reject { |k, v| v.nil? })

      env['rack.session'][:tessa_upload_asset_ids] ||= []
      env['rack.session'][:tessa_upload_asset_ids] << upload.asset_id

      response = {
        asset_id: upload.asset_id,
        upload_url: upload.upload_url,
        upload_method: upload.upload_method,
      }

      [200, {"Content-Type" => "application/json"}, [response.to_json]]
    rescue Tessa::RequestFailed
      [500, {"Content-Type" => "application/json"}, [{ "error" => "Failed to retreive upload URL" }.to_json]]
    end

    def self.call(*args)
      new.call(*args)
    end

  end
end

Version data entries

8 entries across 8 versions & 1 rubygems

Version Path
tessa-0.9.2 lib/tessa/rack_upload_proxy.rb
tessa-0.9.1 lib/tessa/rack_upload_proxy.rb
tessa-0.9.0 lib/tessa/rack_upload_proxy.rb
tessa-0.8.0 lib/tessa/rack_upload_proxy.rb
tessa-0.7.0 lib/tessa/rack_upload_proxy.rb
tessa-0.6.3 lib/tessa/rack_upload_proxy.rb
tessa-0.6.2 lib/tessa/rack_upload_proxy.rb
tessa-0.6.1 lib/tessa/rack_upload_proxy.rb