Sha256: b9cfec48359b24d39f1972583da5e23632ed458957e3622327ed930817e4e4bb

Contents?: true

Size: 1.58 KB

Versions: 2

Compression:

Stored size: 1.58 KB

Contents

require 'base64'

class S3UploadsController < ApplicationController

  # You might want to look at https and expiration_date below.
  #        Possibly these should also be configurable from S3Config...

  skip_before_filter :verify_authenticity_token
  include S3SwfUpload::Signature
  
  def index
    bucket          = S3SwfUpload::S3Config.bucket
    access_key_id   = S3SwfUpload::S3Config.access_key_id
    acl             = S3SwfUpload::S3Config.acl
    secret_key      = S3SwfUpload::S3Config.secret_access_key
    key             = params[:key]
    content_type    = params[:content_type]
    https           = 'false'
    error_message   = ''
    expiration_date = 1.hours.from_now.utc.strftime('%Y-%m-%dT%H:%M:%S.000Z')

    policy = Base64.encode64(
"{
    'expiration': '#{expiration_date}',
    'conditions': [
        {'bucket': '#{bucket}'},
        {'key': '#{key}'},
        {'acl': '#{acl}'},
        {'Content-Type': '#{content_type}'},
        {'Content-Disposition': 'attachment'},
        ['starts-with', '$Filename', ''],
        ['eq', '$success_action_status', '201']
    ]
}").gsub(/\n|\r/, '')

    signature = b64_hmac_sha1(secret_key, policy)

    respond_to do |format|
      format.xml {
        render :xml => {
          :policy          => policy,
          :signature       => signature,
          :bucket          => bucket,
          :accesskeyid     => access_key_id,
          :acl             => acl,
          :expirationdate  => expiration_date,
          :https           => https,
          :errorMessage    => error_message.to_s
        }.to_xml
      }
    end
  end
end

Version data entries

2 entries across 2 versions & 2 rubygems

Version Path
s3_swf_upload-0.3.2 lib/s3_swf_upload/railties/generators/uploader/templates/s3_uploads_controller.rb
larsklevan_s3_swf_upload-0.3.2 lib/s3_swf_upload/railties/generators/uploader/templates/s3_uploads_controller.rb