policia 0.0.1 → 0.0.2
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.rdoc +51 -0
- data/lib/policia.rb +2 -2
- data/lib/policia/version.rb +1 -1
- data/policia.gemspec +2 -2
- metadata +5 -4
data/README.rdoc
ADDED
@@ -0,0 +1,51 @@
|
|
1
|
+
= Policia
|
2
|
+
|
3
|
+
== Information
|
4
|
+
|
5
|
+
Policia is a simple generator of Amazon S3 policy document signatures for use in authenticating POST/REST/API uploads to you S3 buckets.
|
6
|
+
|
7
|
+
For more information on Amazon S3 Policy Documents {see the their documentation}[http://docs.amazonwebservices.com/AmazonS3/latest/dev/S3_Authentication.html].
|
8
|
+
|
9
|
+
== Installation
|
10
|
+
|
11
|
+
Install the latest stable release:
|
12
|
+
|
13
|
+
[sudo] gem install policia
|
14
|
+
|
15
|
+
Or if using bundler add the following to your Gemfile:
|
16
|
+
|
17
|
+
gem 'policia'
|
18
|
+
|
19
|
+
|
20
|
+
== Example use
|
21
|
+
|
22
|
+
An quick example, note to at least change YOUR-S3-BUCKET-NAME, YOUR-S3-ACCESS-KEY and YOUR-S3-SECRET-KEY
|
23
|
+
|
24
|
+
@document = { "expiration" => "2012-12-12T00:00:00Z",
|
25
|
+
"conditions" => [ {"bucket" => "YOUR-S3-BUCKET-NAME"},
|
26
|
+
["starts-with", "$key", ""],
|
27
|
+
{"acl" => "public-read"},
|
28
|
+
{"success_action_redirect" => "YOUR-CHOICE-OF-CALLBACK"},
|
29
|
+
["starts-with", "$Content-Type", "image"] ] }
|
30
|
+
|
31
|
+
@policy_document = Policia.new("YOUR-S3-SECRET-KEY", @document)
|
32
|
+
|
33
|
+
Then in your form (i.e. using ERB template)
|
34
|
+
|
35
|
+
<form action="http://YOUR-S3-BUCKET-NAME.s3.amazonaws.com/" method="post" enctype="multipart/form-data">
|
36
|
+
<input type="hidden" name="key" value="${filename}">
|
37
|
+
<input type="hidden" name="AWSAccessKeyId" value="YOUR-S3-ACCESS-KEY">
|
38
|
+
<input type="hidden" name="acl" value="public-read">
|
39
|
+
<input type="hidden" name="success_action_redirect" value="YOUR-CHOICE-OF-CALLBACK">
|
40
|
+
|
41
|
+
<input type="hidden" name="policy" value="<%= @policy_document.policy %>">
|
42
|
+
<input type="hidden" name="signature" value="<%= @policy_document.signature %>">
|
43
|
+
|
44
|
+
<input type="hidden" name="Content-Type" value="image/jpeg">
|
45
|
+
<!-- Include any additional input fields here -->
|
46
|
+
|
47
|
+
File to upload to S3: <input name="file" type="file"> <input type="submit">
|
48
|
+
</form>
|
49
|
+
|
50
|
+
|
51
|
+
The example above will post your file to your amazon s3 bucket root and then return to your given callback with parameters containing file info.
|
data/lib/policia.rb
CHANGED
@@ -10,10 +10,10 @@ class Policia
|
|
10
10
|
end
|
11
11
|
|
12
12
|
def policy
|
13
|
-
Base64.encode64(@document).gsub(/\n|\r/, '')
|
13
|
+
@policy ||= Base64.encode64(@document).gsub(/\n|\r/, '')
|
14
14
|
end
|
15
15
|
|
16
16
|
def signature
|
17
|
-
Base64.encode64(OpenSSL::HMAC.digest(OpenSSL::Digest::Digest.new('sha1'), @secret, policy)).gsub(/\n| |\r/, '')
|
17
|
+
@signature ||= Base64.encode64(OpenSSL::HMAC.digest(OpenSSL::Digest::Digest.new('sha1'), @secret, policy)).gsub(/\n| |\r/, '')
|
18
18
|
end
|
19
19
|
end
|
data/lib/policia/version.rb
CHANGED
data/policia.gemspec
CHANGED
@@ -8,9 +8,9 @@ Gem::Specification.new do |s|
|
|
8
8
|
s.platform = Gem::Platform::RUBY
|
9
9
|
s.authors = ["Antony Sastre"]
|
10
10
|
s.email = ["antony@adotapart.com"]
|
11
|
-
s.homepage = ""
|
11
|
+
s.homepage = "http://github.com/antonysastre/policia"
|
12
12
|
s.summary = %q{Policia is a simple Amazon S3 Policy Document Signature generator.}
|
13
|
-
s.description = %q{
|
13
|
+
s.description = %q{Amazon uses a policy document protocol to allow i.e. regular forms to upload files to your S3 buckets. The policy document can be a bit of a hassle to manage and encode into the nescessary signature - this gem aims to make it easier. Currently only supports ruby 1.9.}
|
14
14
|
|
15
15
|
s.files = `git ls-files`.split("\n")
|
16
16
|
s.test_files = `git ls-files -- {test,spec,features}/*`.split("\n")
|
metadata
CHANGED
@@ -2,7 +2,7 @@
|
|
2
2
|
name: policia
|
3
3
|
version: !ruby/object:Gem::Version
|
4
4
|
prerelease:
|
5
|
-
version: 0.0.
|
5
|
+
version: 0.0.2
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
8
8
|
- Antony Sastre
|
@@ -14,7 +14,7 @@ date: 2011-05-05 00:00:00 +02:00
|
|
14
14
|
default_executable:
|
15
15
|
dependencies: []
|
16
16
|
|
17
|
-
description:
|
17
|
+
description: Amazon uses a policy document protocol to allow i.e. regular forms to upload files to your S3 buckets. The policy document can be a bit of a hassle to manage and encode into the nescessary signature - this gem aims to make it easier. Currently only supports ruby 1.9.
|
18
18
|
email:
|
19
19
|
- antony@adotapart.com
|
20
20
|
executables: []
|
@@ -26,6 +26,7 @@ extra_rdoc_files: []
|
|
26
26
|
files:
|
27
27
|
- .gitignore
|
28
28
|
- Gemfile
|
29
|
+
- README.rdoc
|
29
30
|
- Rakefile
|
30
31
|
- example/policia_application.rb
|
31
32
|
- example/views/index.erb
|
@@ -35,7 +36,7 @@ files:
|
|
35
36
|
- policia.gemspec
|
36
37
|
- test/policia_test.rb
|
37
38
|
has_rdoc: true
|
38
|
-
homepage:
|
39
|
+
homepage: http://github.com/antonysastre/policia
|
39
40
|
licenses: []
|
40
41
|
|
41
42
|
post_install_message:
|
@@ -58,7 +59,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
58
59
|
requirements: []
|
59
60
|
|
60
61
|
rubyforge_project:
|
61
|
-
rubygems_version: 1.
|
62
|
+
rubygems_version: 1.5.2
|
62
63
|
signing_key:
|
63
64
|
specification_version: 3
|
64
65
|
summary: Policia is a simple Amazon S3 Policy Document Signature generator.
|