qoobaa-s3_upload_form 0.2.0 → 0.2.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
data/README.markdown CHANGED
@@ -1,19 +1,19 @@
1
- # *s3_upload_form*
1
+ # s3_upload_form
2
2
 
3
3
  ### Usage
4
4
  <%= s3_upload_form_tag :key => 'uploads',
5
5
  :redirect => image_processing_url,
6
6
  :acl => 'public-read',
7
- :max_filesize => 5.megabytes,
8
- :submit_button => submit_tag("Upload!") %>
7
+ :max_filesize => 0..5.megabytes,
8
+ :submit => submit_tag("Upload!") %>
9
9
 
10
10
  ### Configuration
11
11
 
12
12
  To configure s3_upload_form use s3_upload_form generator...
13
- ./script/generate s3_upload_form
13
+ ./script/generate s3_upload_form
14
14
 
15
15
  ... and edit the generated initializer file s3_upload_form.rb.
16
16
 
17
- *Jakub Kuźma, 2009*
17
+ ### Jakub Kuźma, 2009
18
18
 
19
19
  The gem is based on D2S3 plugin by Matthew Williams.
data/VERSION CHANGED
@@ -1 +1 @@
1
- 0.2.0
1
+ 0.2.1
@@ -0,0 +1,17 @@
1
+ require 'rbconfig'
2
+
3
+ class S3UploadFormGenerator < Rails::Generator::Base
4
+ def manifest
5
+ record do |m|
6
+ m.directory "config"
7
+ m.directory "config/initializers"
8
+ m.file "initializers/s3_upload_form.rb", "config/initializers/s3_upload_form.rb"
9
+ end
10
+ end
11
+
12
+ protected
13
+
14
+ def banner
15
+ "Usage: #{$0} s3_upload_form"
16
+ end
17
+ end
@@ -0,0 +1,5 @@
1
+ S3UploadForm.configuration do |config|
2
+ config.access_key_id = "" # your access key id
3
+ config.secret_access_key = "" # your secret access key
4
+ config.bucket = "" # your bucket name
5
+ end
@@ -0,0 +1,18 @@
1
+ require "singleton"
2
+
3
+ module S3UploadForm
4
+ class Configuration
5
+ include Singleton
6
+
7
+ ATTRIBUTES = [:access_key_id, :secret_access_key, :bucket]
8
+
9
+ attr_accessor *ATTRIBUTES
10
+ end
11
+
12
+ def self.configuration
13
+ if block_given?
14
+ yield Configuration.instance
15
+ end
16
+ Configuration.instance
17
+ end
18
+ end
@@ -0,0 +1,53 @@
1
+ module S3UploadForm
2
+ module Helpers
3
+ def s3_upload_form_tag(options = {})
4
+ bucket = S3UploadForm.configuration.bucket
5
+ access_key_id = S3UploadForm.configuration.access_key_id
6
+ secret_access_key = S3UploadForm.configuration.secret_access_key
7
+
8
+ raise "Please configure S3UploadForm before use" if bucket.blank? or access_key_id.blank? or secret_access_key.blank?
9
+
10
+ protocol = options.delete(:protocol) || "http"
11
+ key = options.delete(:key) || ""
12
+ redirect = options.delete(:redirect) || "/"
13
+ acl = options.delete(:acl) || "public-read"
14
+ expiration_date = (options.delete(:expiration_date) || 10.hours).from_now.strftime("%Y-%m-%dT%H:%M:%S.000Z")
15
+ filesize = options.delete(:filesize) || 0..1.megabyte
16
+ filesize = 0..filesize if filesize.kind_of?(Fixnum)
17
+ submit = options.delete(:submit_button) || submit_tag(I18n.t("button.upload", :default => "Upload"))
18
+
19
+ policy_document = <<-eos
20
+ {
21
+ "expiration": "#{expiration_date}",
22
+ "conditions":
23
+ [
24
+ {"bucket": "#{bucket}"},
25
+ ["starts-with", "$key", "#{key}"],
26
+ {"acl": "#{acl}"},
27
+ {"success_action_redirect": "#{redirect}"},
28
+ ["content-length-range", #{filesize.first}, #{filesize.last}]
29
+ ]
30
+ }
31
+ eos
32
+
33
+ policy = Base64.encode64(policy_document).gsub("\n","")
34
+ signature = Base64.encode64(OpenSSL::HMAC.digest(OpenSSL::Digest::Digest.new("sha1"), secret_access_key, policy)).gsub("\n","")
35
+
36
+ options[:action] ||= "#{protocol}://#{bucket}.s3.amazonaws.com/"
37
+ options[:method] ||= "post"
38
+ options[:enctype] ||= "multipart/form-data"
39
+
40
+ content_tag :form, options do
41
+ content = ""
42
+ content << hidden_field_tag("key", "#{key}/${filename}")
43
+ content << hidden_field_tag("AWSAccessKeyId", access_key_id)
44
+ content << hidden_field_tag("acl", acl)
45
+ content << hidden_field_tag("success_action_redirect", redirect)
46
+ content << hidden_field_tag("policy", policy)
47
+ content << hidden_field_tag("signature", signature)
48
+ content << file_field_tag("file")
49
+ content << submit
50
+ end
51
+ end
52
+ end
53
+ end
@@ -0,0 +1,8 @@
1
+ require 'base64'
2
+ require 'openssl'
3
+ require 'digest/sha1'
4
+
5
+ require 's3_upload_form/configuration'
6
+ require 's3_upload_form/helpers'
7
+
8
+ ActionView::Base.send(:include, S3UploadForm::Helpers) if defined?(ActionView::Base)
@@ -0,0 +1,48 @@
1
+ # -*- encoding: utf-8 -*-
2
+
3
+ Gem::Specification.new do |s|
4
+ s.name = %q{s3_upload_form}
5
+ s.version = "0.2.1"
6
+
7
+ s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
8
+ s.authors = ["Jakub Kuźma"]
9
+ s.date = %q{2009-06-16}
10
+ s.email = %q{qoobaa@gmail.com}
11
+ s.extra_rdoc_files = [
12
+ "LICENSE",
13
+ "README.markdown"
14
+ ]
15
+ s.files = [
16
+ ".document",
17
+ ".gitignore",
18
+ "LICENSE",
19
+ "README.markdown",
20
+ "Rakefile",
21
+ "VERSION",
22
+ "generators/s3_upload_form/s3_upload_form_generator.rb",
23
+ "generators/s3_upload_form/templates/initializers/s3_upload_form.rb",
24
+ "lib/s3_upload_form.rb",
25
+ "lib/s3_upload_form/configuration.rb",
26
+ "lib/s3_upload_form/helpers.rb",
27
+ "s3_upload_form.gemspec",
28
+ "test/test_helper.rb"
29
+ ]
30
+ s.homepage = %q{http://github.com/qoobaa/s3_upload_form}
31
+ s.rdoc_options = ["--charset=UTF-8"]
32
+ s.require_paths = ["lib"]
33
+ s.rubygems_version = %q{1.3.4}
34
+ s.summary = %q{S3 file upload form}
35
+ s.test_files = [
36
+ "test/test_helper.rb"
37
+ ]
38
+
39
+ if s.respond_to? :specification_version then
40
+ current_version = Gem::Specification::CURRENT_SPECIFICATION_VERSION
41
+ s.specification_version = 3
42
+
43
+ if Gem::Version.new(Gem::RubyGemsVersion) >= Gem::Version.new('1.2.0') then
44
+ else
45
+ end
46
+ else
47
+ end
48
+ end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: qoobaa-s3_upload_form
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.2.0
4
+ version: 0.2.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - "Jakub Ku\xC5\xBAma"
@@ -29,6 +29,12 @@ files:
29
29
  - README.markdown
30
30
  - Rakefile
31
31
  - VERSION
32
+ - generators/s3_upload_form/s3_upload_form_generator.rb
33
+ - generators/s3_upload_form/templates/initializers/s3_upload_form.rb
34
+ - lib/s3_upload_form.rb
35
+ - lib/s3_upload_form/configuration.rb
36
+ - lib/s3_upload_form/helpers.rb
37
+ - s3_upload_form.gemspec
32
38
  - test/test_helper.rb
33
39
  has_rdoc: false
34
40
  homepage: http://github.com/qoobaa/s3_upload_form