image_fu 0.1.0.beta1 → 0.1.0.beta2

Sign up to get free protection for your applications and to get access to all the features.
data/image_fu.gemspec CHANGED
@@ -21,4 +21,5 @@ Gem::Specification.new do |s|
21
21
 
22
22
  s.add_runtime_dependency "uuidtools"
23
23
  s.add_runtime_dependency "httparty", "~> 0.8.1"
24
+ s.add_runtime_dependency "aws-sdk"
24
25
  end
@@ -1,3 +1,3 @@
1
1
  module ImageFu
2
- VERSION = "0.1.0.beta1"
2
+ VERSION = "0.1.0.beta2"
3
3
  end
data/lib/image_fu.rb CHANGED
@@ -4,6 +4,7 @@ require 'base64'
4
4
  require 'openssl'
5
5
  require 'uuidtools'
6
6
  require 'rack/utils'
7
+ require 'aws-sdk'
7
8
 
8
9
  module ImageFu
9
10
  CONFIG = {
@@ -17,6 +18,10 @@ module ImageFu
17
18
  CONFIG.merge!(options)
18
19
  end
19
20
 
21
+ def self.s3
22
+ AWS::S3.new(:access_key_id => CONFIG[:access_key_id], :secret_access_key => CONFIG[:secret_access_key])
23
+ end
24
+
20
25
  def self.signed_upload_params(options = {})
21
26
  options.reverse_merge!(
22
27
  :acl => 'private',
@@ -27,35 +32,21 @@ module ImageFu
27
32
 
28
33
  key = UUIDTools::UUID.random_create.to_s
29
34
 
30
- policy = {
31
- 'expiration' => Time.now.in(options[:expiry]).utc,
32
- 'conditions' => [
33
- {'bucket' => options[:bucket]},
34
- {'acl' => options[:acl]},
35
- {'success_action_status' => '201'},
36
- # {'key' => key},
37
- ['content-length-range', 0, options[:max_size] || DEFAULT_PARAMS[:max_size]],
38
- ['starts-with', '$key', ''],
39
- ['starts-with', '$Filename', '']
40
- ]
41
- }
35
+ bucket = s3.buckets[options[:bucket]]
42
36
 
43
- policy = Base64.encode64(policy.to_json).gsub("\n","")
44
- policy_hash = OpenSSL::HMAC.digest( OpenSSL::Digest::Digest.new('sha1'), CONFIG[:secret_access_key], policy)
45
-
46
- signature = Base64.encode64(policy_hash).gsub("\n","")
37
+ form = bucket.presigned_post(
38
+ :key => key,
39
+ :expires => options[:expiry].to_i,
40
+ :acl => options[:acl],
41
+ :success_action_status => 201,
42
+ :content_length => 0..(options[:max_size]),
43
+ :ignore => ['Filename']
44
+ )
47
45
 
48
46
  {
49
47
  :server => CONFIG[:server],
50
48
  :bucket => options[:bucket],
51
- :parameters => {
52
- :key => key,
53
- :AWSAccessKeyId => CONFIG[:access_key_id],
54
- :acl => options[:acl],
55
- :success_action_status => "201",
56
- :policy => policy,
57
- :signature => Rack::Utils.escape_path(signature)
58
- }
49
+ :parameters => form.fields
59
50
  }
60
51
  end
61
52
 
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: image_fu
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.0.beta1
4
+ version: 0.1.0.beta2
5
5
  prerelease: 6
6
6
  platform: ruby
7
7
  authors:
@@ -9,11 +9,11 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2012-03-16 00:00:00.000000000 Z
12
+ date: 2012-04-06 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: uuidtools
16
- requirement: &70249931547220 !ruby/object:Gem::Requirement
16
+ requirement: &70324335341240 !ruby/object:Gem::Requirement
17
17
  none: false
18
18
  requirements:
19
19
  - - ! '>='
@@ -21,10 +21,10 @@ dependencies:
21
21
  version: '0'
22
22
  type: :runtime
23
23
  prerelease: false
24
- version_requirements: *70249931547220
24
+ version_requirements: *70324335341240
25
25
  - !ruby/object:Gem::Dependency
26
26
  name: httparty
27
- requirement: &70249931546620 !ruby/object:Gem::Requirement
27
+ requirement: &70324335340740 !ruby/object:Gem::Requirement
28
28
  none: false
29
29
  requirements:
30
30
  - - ~>
@@ -32,7 +32,18 @@ dependencies:
32
32
  version: 0.8.1
33
33
  type: :runtime
34
34
  prerelease: false
35
- version_requirements: *70249931546620
35
+ version_requirements: *70324335340740
36
+ - !ruby/object:Gem::Dependency
37
+ name: aws-sdk
38
+ requirement: &70324335340140 !ruby/object:Gem::Requirement
39
+ none: false
40
+ requirements:
41
+ - - ! '>='
42
+ - !ruby/object:Gem::Version
43
+ version: '0'
44
+ type: :runtime
45
+ prerelease: false
46
+ version_requirements: *70324335340140
36
47
  description:
37
48
  email:
38
49
  - mick@staugaard.com