s3_sign 0.1.0 → 0.2.0
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.
- checksums.yaml +4 -4
- data/README.md +4 -4
- data/lib/s3_sign.rb +12 -2
- data/lib/s3_sign/helper.rb +6 -5
- data/lib/s3_sign/version.rb +1 -1
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 96c16aa5ab1087cbc5bc750ddc183f1bda15ba37
|
4
|
+
data.tar.gz: 8fd8b1cf944bab603d44e598fabb6a6511561f90
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: a03766738b4e08e50fade4f2b77ae9d7591c259eb04bbcd8df35846dff2a8eb2159a1cd0c5b8e0cd132ac709a783fef30bad9f96e498ffc8b65c250668a95126
|
7
|
+
data.tar.gz: 4bebcb938b7640b0b348c7d22a89c8ed8605b5f25fa381420c6f9c2d9c761166351ba18d59de1ed136124eff769038da84c1519932e42f568adf0ee0baaf26f0
|
data/README.md
CHANGED
@@ -45,7 +45,7 @@ The `S3Sign` module itself provides `.url`:
|
|
45
45
|
|
46
46
|
```ruby
|
47
47
|
# Pass a full s3 url and 1 hour expiration
|
48
|
-
S3Sign.url "http://s3.amazonaws.com/bucket/foo.png", 3600
|
48
|
+
S3Sign.url "http://s3.amazonaws.com/bucket/foo.png", expires: 3600
|
49
49
|
# => "https://bucket.s3.amazonaws.com/foo.png?AWSAccessKeyId=access_key_id&Expires=1427243780&Signature=a3RzDgElxDpSZLgxurZLiw1a6Ny%3D"
|
50
50
|
|
51
51
|
# Pass a 'key' portion found under the bucket with default expiration
|
@@ -55,10 +55,10 @@ S3Sign.url "images/foo.png"
|
|
55
55
|
The gem also provides a `S3Sign::Helper` module, useful to mixin to rails
|
56
56
|
controllers. It will add two helper methods to your controllers and views.
|
57
57
|
|
58
|
-
`s3_signed_url_for_key` - Takes a key/url and
|
58
|
+
`s3_signed_url_for_key` - Takes a key/url and options
|
59
59
|
|
60
|
-
`stable_s3_signed_url` - Takes a url and
|
61
|
-
|
60
|
+
`stable_s3_signed_url` - Takes a url and options. Used for
|
61
|
+
generating signatures that expire in the far future year 2036.
|
62
62
|
|
63
63
|
## Contributing
|
64
64
|
|
data/lib/s3_sign.rb
CHANGED
@@ -12,17 +12,27 @@ module S3Sign
|
|
12
12
|
end
|
13
13
|
end
|
14
14
|
|
15
|
-
def self.url(s3_url,
|
15
|
+
def self.url(s3_url, options = {})
|
16
16
|
s3 = AWS::S3.new
|
17
17
|
bucket = s3.buckets[bucket_name]
|
18
18
|
|
19
19
|
path = path_from_s3_url(s3_url)
|
20
20
|
|
21
|
-
AWS::S3::S3Object.new(bucket, path).url_for(:read,
|
21
|
+
AWS::S3::S3Object.new(bucket, path).url_for(:read, build_options(options)).to_s
|
22
22
|
end
|
23
23
|
|
24
24
|
protected
|
25
25
|
|
26
|
+
def self.build_options(options)
|
27
|
+
{ expires: options.fetch(:expires, SEVEN_DAYS) }.tap do |o|
|
28
|
+
attachment_filename = options[:attachment_filename]
|
29
|
+
|
30
|
+
if attachment_filename
|
31
|
+
o[:response_content_disposition] = "attachment; filename=#{attachment_filename}"
|
32
|
+
end
|
33
|
+
end
|
34
|
+
end
|
35
|
+
|
26
36
|
def self.path_from_s3_url(s3_url)
|
27
37
|
s3_url.sub(%r{^.+?/#{bucket_name}/}, '')
|
28
38
|
end
|
data/lib/s3_sign/helper.rb
CHANGED
@@ -14,8 +14,9 @@ module S3Sign
|
|
14
14
|
|
15
15
|
# A pure "time from now" signed s3 asset url. Good for non-visual elements
|
16
16
|
# like attachments, and not thumbnails, that don't have the same caching concerns
|
17
|
-
def s3_signed_url_for_key(key,
|
18
|
-
|
17
|
+
def s3_signed_url_for_key(key, options = {})
|
18
|
+
options[:expires] ||= 86_400
|
19
|
+
S3Sign.url key, options
|
19
20
|
end
|
20
21
|
|
21
22
|
# Uses a far-future date so that the expires and signature on
|
@@ -33,10 +34,10 @@ module S3Sign
|
|
33
34
|
# far future stable year. This is useful to cache-bust the url from
|
34
35
|
# an updated_at timestamp where some browsers/proxies may try to use
|
35
36
|
# the cached asset even though it was updated.
|
36
|
-
def stable_s3_signed_url(url,
|
37
|
+
def stable_s3_signed_url(url, options = {})
|
37
38
|
@stable_s3_expire_at ||= Time.parse("2036-1-1 00:00:00 UTC")
|
38
39
|
|
39
|
-
if reference_time
|
40
|
+
if reference_time = options.delete(:expires)
|
40
41
|
# The time given but in the year 2036
|
41
42
|
year = @stable_s3_expire_at.year
|
42
43
|
expires_at = Time.parse(reference_time.utc.strftime("#{year}-%m-%d %T UTC"))
|
@@ -44,7 +45,7 @@ module S3Sign
|
|
44
45
|
expires_at = @stable_s3_expire_at
|
45
46
|
end
|
46
47
|
|
47
|
-
s3_signed_url_for_key(url, expires_at)
|
48
|
+
s3_signed_url_for_key(url, expires: expires_at)
|
48
49
|
end
|
49
50
|
end
|
50
51
|
end
|
data/lib/s3_sign/version.rb
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: s3_sign
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.2.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Brendon Murphy
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date: 2015-
|
11
|
+
date: 2015-05-12 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: aws-sdk
|