cloudseed 0.1.1 → 0.1.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.
Files changed (3) hide show
  1. data/Rakefile +1 -0
  2. data/lib/cloudseed.rb +22 -2
  3. metadata +29 -50
data/Rakefile CHANGED
@@ -3,5 +3,6 @@ require "rake/testtask"
3
3
  task :default => :test
4
4
 
5
5
  Rake::TestTask.new do |t|
6
+ t.libs << 'test'
6
7
  t.warning = true
7
8
  end
data/lib/cloudseed.rb CHANGED
@@ -1,5 +1,6 @@
1
1
  module CloudSeed
2
2
  class Middleware
3
+ CDN_ASSETS = ['text/css', 'application/javascript', 'text/javascript', 'image/', 'application/pdf', 'audio/', 'video/']
3
4
  COMPRESSABLE = ["javascript", "json", "atom+xml", "xml", "pdf"].map do |f|
4
5
  "application/#{f}"
5
6
  end
@@ -13,12 +14,31 @@ module CloudSeed
13
14
  munge_version(env)
14
15
 
15
16
  status, headers, body = app.call(env)
17
+
18
+ mime = headers['Content-Type']
16
19
 
17
- if is_compressable?(headers['Content-Type'])
20
+ if status == 200 && is_compressable?(mime)
18
21
  headers['Vary'] = 'Accept-Encoding'
19
22
  end
20
23
 
21
- [status, headers, body]
24
+ if is_cloudfront_request?(env) && !headers.has_key?('Expires')
25
+ headers['Expires'] = (Time.now + (365 * 24 * 60 * 60)).utc.rfc2822
26
+ end
27
+
28
+ if !is_cloudfront_request?(env) || status == 404 || is_cdn_asset?(mime)
29
+ [status, headers, body]
30
+ else
31
+ [404, {}, ['Not found']]
32
+ end
33
+ end
34
+
35
+ def is_cloudfront_request?(env)
36
+ env['HTTP_USER_AGENT'] == 'Amazon CloudFront'
37
+ end
38
+
39
+ def is_cdn_asset?(mime)
40
+ return true unless mime
41
+ CDN_ASSETS.any?{|c| mime.start_with?(c) }
22
42
  end
23
43
 
24
44
  def is_compressable?(mime)
metadata CHANGED
@@ -1,79 +1,58 @@
1
- --- !ruby/object:Gem::Specification
1
+ --- !ruby/object:Gem::Specification
2
2
  name: cloudseed
3
- version: !ruby/object:Gem::Version
4
- prerelease: false
5
- segments:
6
- - 0
7
- - 1
8
- - 1
9
- version: 0.1.1
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.1.2
5
+ prerelease:
10
6
  platform: ruby
11
- authors:
7
+ authors:
12
8
  - Kurt Mackey
13
9
  autorequire:
14
10
  bindir: bin
15
11
  cert_chain: []
16
-
17
- date: 2011-02-13 00:00:00 -06:00
18
- default_executable:
19
- dependencies:
20
- - !ruby/object:Gem::Dependency
12
+ date: 2011-11-15 00:00:00.000000000Z
13
+ dependencies:
14
+ - !ruby/object:Gem::Dependency
21
15
  name: rack
22
- prerelease: false
23
- requirement: &id001 !ruby/object:Gem::Requirement
16
+ requirement: &70316899590680 !ruby/object:Gem::Requirement
24
17
  none: false
25
- requirements:
26
- - - ">="
27
- - !ruby/object:Gem::Version
28
- segments:
29
- - 1
30
- - 0
31
- - 0
18
+ requirements:
19
+ - - ! '>='
20
+ - !ruby/object:Gem::Version
32
21
  version: 1.0.0
33
22
  type: :runtime
34
- version_requirements: *id001
35
- description: CloudSeed is a Rack-based utility to manage backend delivery of CloudFront custom origins.
23
+ prerelease: false
24
+ version_requirements: *70316899590680
25
+ description: CloudSeed is a Rack-based utility to manage backend delivery of CloudFront
26
+ custom origins.
36
27
  email: mrkurt@gmail.com
37
28
  executables: []
38
-
39
29
  extensions: []
40
-
41
30
  extra_rdoc_files: []
42
-
43
- files:
31
+ files:
44
32
  - Rakefile
45
33
  - lib/cloudseed.rb
46
- has_rdoc: true
47
34
  homepage: http://github.com/mrkurt/cloudseed/
48
35
  licenses: []
49
-
50
36
  post_install_message:
51
37
  rdoc_options: []
52
-
53
- require_paths:
38
+ require_paths:
54
39
  - lib
55
- required_ruby_version: !ruby/object:Gem::Requirement
40
+ required_ruby_version: !ruby/object:Gem::Requirement
56
41
  none: false
57
- requirements:
58
- - - ">="
59
- - !ruby/object:Gem::Version
60
- segments:
61
- - 0
62
- version: "0"
63
- required_rubygems_version: !ruby/object:Gem::Requirement
42
+ requirements:
43
+ - - ! '>='
44
+ - !ruby/object:Gem::Version
45
+ version: '0'
46
+ required_rubygems_version: !ruby/object:Gem::Requirement
64
47
  none: false
65
- requirements:
66
- - - ">="
67
- - !ruby/object:Gem::Version
68
- segments:
69
- - 0
70
- version: "0"
48
+ requirements:
49
+ - - ! '>='
50
+ - !ruby/object:Gem::Version
51
+ version: '0'
71
52
  requirements: []
72
-
73
53
  rubyforge_project:
74
- rubygems_version: 1.3.7
54
+ rubygems_version: 1.8.10
75
55
  signing_key:
76
56
  specification_version: 3
77
57
  summary: Rack-based helper for CloudFront custom origins
78
58
  test_files: []
79
-