imageproxy 0.1.3 → 0.1.4

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/VERSION CHANGED
@@ -1 +1 @@
1
- 0.1.3
1
+ 0.1.4
data/imageproxy.gemspec CHANGED
@@ -5,11 +5,11 @@
5
5
 
6
6
  Gem::Specification.new do |s|
7
7
  s.name = %q{imageproxy}
8
- s.version = "0.1.3"
8
+ s.version = "0.1.4"
9
9
 
10
10
  s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
11
- s.authors = ["Erik Hanson"]
12
- s.date = %q{2011-06-09}
11
+ s.authors = [%q{Erik Hanson}]
12
+ s.date = %q{2011-08-24}
13
13
  s.description = %q{A image processing proxy server, written in Ruby as a Rack application. Requires ImageMagick.}
14
14
  s.email = %q{erik@eahanson.com}
15
15
  s.extra_rdoc_files = [
@@ -48,9 +48,9 @@ Gem::Specification.new do |s|
48
48
  "spec/spec_helper.rb"
49
49
  ]
50
50
  s.homepage = %q{http://github.com/eahanson/imageproxy}
51
- s.licenses = ["MIT"]
52
- s.require_paths = ["lib"]
53
- s.rubygems_version = %q{1.6.2}
51
+ s.licenses = [%q{MIT}]
52
+ s.require_paths = [%q{lib}]
53
+ s.rubygems_version = %q{1.8.6}
54
54
  s.summary = %q{A image processing proxy server, written in Ruby as a Rack application.}
55
55
 
56
56
  if s.respond_to? :specification_version then
@@ -3,13 +3,15 @@ module Imageproxy
3
3
  protected
4
4
 
5
5
  def execute_command(command_line)
6
- stdin, stdout, stderr = Open3.popen3(command_line)
6
+ stdin, stdout, stderr, wait_thr = Open3.popen3(command_line)
7
+ raise "Child process exited with non-zero exit code" unless wait_thr.value.success?
7
8
  [output_to_string(stdout), output_to_string(stderr)].join("")
8
9
  end
9
10
 
10
11
  def curl(url, options={})
11
12
  user_agent = options[:user_agent] || "imageproxy"
12
- %|curl -L -s -A "#{user_agent}" "#{url}"|
13
+ timeout = options[:timeout] ? "-m #{options[:timeout]} " : ""
14
+ %|curl #{timeout}-L -s -A "#{user_agent}" "#{url}"|
13
15
  end
14
16
 
15
17
  def to_path(obj)
@@ -11,8 +11,8 @@ module Imageproxy
11
11
  end
12
12
  end
13
13
 
14
- def execute(user_agent=nil)
15
- execute_command %'#{curl options.source, :user_agent => user_agent} | convert - #{convert_options} #{new_format}#{file.path}'
14
+ def execute(user_agent=nil, timeout=nil)
15
+ execute_command %'#{curl options.source, :user_agent => user_agent, :timeout => timeout} | convert - #{convert_options} #{new_format}#{file.path}'
16
16
  file
17
17
  end
18
18
 
@@ -24,7 +24,7 @@ module Imageproxy
24
24
  check_domain options
25
25
  check_size options
26
26
 
27
- file = Convert.new(options).execute(user_agent)
27
+ file = convert_file(options, user_agent)
28
28
  class << file
29
29
  alias to_path path
30
30
  end
@@ -48,6 +48,10 @@ module Imageproxy
48
48
 
49
49
  private
50
50
 
51
+ def convert_file(options, user_agent)
52
+ Convert.new(options).execute(user_agent, config(:timeout))
53
+ end
54
+
51
55
  def config(symbol)
52
56
  ENV["IMAGEPROXY_#{symbol.to_s.upcase}"]
53
57
  end
@@ -107,9 +111,13 @@ module Imageproxy
107
111
 
108
112
  def content_type(file, options)
109
113
  format = options.format
110
- format = Imageproxy::IdentifyFormat.new(file).execute unless format
114
+ format = identify_format(file) unless format
111
115
  format = options.source unless format
112
116
  format ? { "Content-Type" => MIME::Types.of(format).first.content_type } : {}
113
117
  end
118
+
119
+ def identify_format(file)
120
+ Imageproxy::IdentifyFormat.new(file).execute
121
+ end
114
122
  end
115
123
  end
data/spec/command_spec.rb CHANGED
@@ -15,5 +15,20 @@ describe Imageproxy::Command do
15
15
  %|curl -L -s -A "imageproxy" "http://example.com/dog.jpg"|
16
16
  end
17
17
  end
18
+
19
+ context "when a timeout is supplied" do
20
+ it "should set the timeout" do
21
+ Imageproxy::Command.new.send(:curl, "http://example.com/dog.jpg", :timeout => "2").should ==
22
+ %|curl -m 2 -L -s -A "imageproxy" "http://example.com/dog.jpg"|
23
+ end
24
+ end
25
+
26
+ context "when the command exits with a non-zero status" do
27
+ it "should raise an exception" do
28
+ lambda {
29
+ Imageproxy::Command.new.send(:execute_command, "ls /asdkljasldkjaskl")
30
+ }.should raise_exception
31
+ end
32
+ end
18
33
  end
19
34
  end
data/spec/server_spec.rb CHANGED
@@ -67,6 +67,8 @@ describe "Server" do
67
67
  context "when limiting to certain domains" do
68
68
  before do
69
69
  app.stub!(:config) { |sym| {:allowed_domains => " example.com ,example.org"}[sym] }
70
+ app.stub!(:convert_file).and_return(Tempfile.new("fooo"))
71
+ app.stub!(:content_type).and_return({ "Content-Type" => "image/jpeg"})
70
72
  end
71
73
 
72
74
  it "should parse the allowed domains" do
metadata CHANGED
@@ -1,127 +1,124 @@
1
- --- !ruby/object:Gem::Specification
1
+ --- !ruby/object:Gem::Specification
2
2
  name: imageproxy
3
- version: !ruby/object:Gem::Version
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.1.4
4
5
  prerelease:
5
- version: 0.1.3
6
6
  platform: ruby
7
- authors:
7
+ authors:
8
8
  - Erik Hanson
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
-
13
- date: 2011-06-09 00:00:00 -07:00
14
- default_executable:
15
- dependencies:
16
- - !ruby/object:Gem::Dependency
12
+ date: 2011-08-24 00:00:00.000000000Z
13
+ dependencies:
14
+ - !ruby/object:Gem::Dependency
17
15
  name: rack
18
- requirement: &id001 !ruby/object:Gem::Requirement
16
+ requirement: &28077600 !ruby/object:Gem::Requirement
19
17
  none: false
20
- requirements:
21
- - - ">="
22
- - !ruby/object:Gem::Version
23
- version: "0"
18
+ requirements:
19
+ - - ! '>='
20
+ - !ruby/object:Gem::Version
21
+ version: '0'
24
22
  type: :runtime
25
23
  prerelease: false
26
- version_requirements: *id001
27
- - !ruby/object:Gem::Dependency
24
+ version_requirements: *28077600
25
+ - !ruby/object:Gem::Dependency
28
26
  name: rake
29
- requirement: &id002 !ruby/object:Gem::Requirement
27
+ requirement: &28077100 !ruby/object:Gem::Requirement
30
28
  none: false
31
- requirements:
32
- - - ">="
33
- - !ruby/object:Gem::Version
34
- version: "0"
29
+ requirements:
30
+ - - ! '>='
31
+ - !ruby/object:Gem::Version
32
+ version: '0'
35
33
  type: :runtime
36
34
  prerelease: false
37
- version_requirements: *id002
38
- - !ruby/object:Gem::Dependency
35
+ version_requirements: *28077100
36
+ - !ruby/object:Gem::Dependency
39
37
  name: mime-types
40
- requirement: &id003 !ruby/object:Gem::Requirement
38
+ requirement: &28076620 !ruby/object:Gem::Requirement
41
39
  none: false
42
- requirements:
43
- - - ">="
44
- - !ruby/object:Gem::Version
45
- version: "0"
40
+ requirements:
41
+ - - ! '>='
42
+ - !ruby/object:Gem::Version
43
+ version: '0'
46
44
  type: :runtime
47
45
  prerelease: false
48
- version_requirements: *id003
49
- - !ruby/object:Gem::Dependency
46
+ version_requirements: *28076620
47
+ - !ruby/object:Gem::Dependency
50
48
  name: heroku
51
- requirement: &id004 !ruby/object:Gem::Requirement
49
+ requirement: &28076140 !ruby/object:Gem::Requirement
52
50
  none: false
53
- requirements:
54
- - - ">="
55
- - !ruby/object:Gem::Version
56
- version: "0"
51
+ requirements:
52
+ - - ! '>='
53
+ - !ruby/object:Gem::Version
54
+ version: '0'
57
55
  type: :development
58
56
  prerelease: false
59
- version_requirements: *id004
60
- - !ruby/object:Gem::Dependency
57
+ version_requirements: *28076140
58
+ - !ruby/object:Gem::Dependency
61
59
  name: shotgun
62
- requirement: &id005 !ruby/object:Gem::Requirement
60
+ requirement: &28075660 !ruby/object:Gem::Requirement
63
61
  none: false
64
- requirements:
65
- - - ">="
66
- - !ruby/object:Gem::Version
67
- version: "0"
62
+ requirements:
63
+ - - ! '>='
64
+ - !ruby/object:Gem::Version
65
+ version: '0'
68
66
  type: :development
69
67
  prerelease: false
70
- version_requirements: *id005
71
- - !ruby/object:Gem::Dependency
68
+ version_requirements: *28075660
69
+ - !ruby/object:Gem::Dependency
72
70
  name: rspec
73
- requirement: &id006 !ruby/object:Gem::Requirement
71
+ requirement: &28075180 !ruby/object:Gem::Requirement
74
72
  none: false
75
- requirements:
76
- - - ">="
77
- - !ruby/object:Gem::Version
78
- version: "0"
73
+ requirements:
74
+ - - ! '>='
75
+ - !ruby/object:Gem::Version
76
+ version: '0'
79
77
  type: :development
80
78
  prerelease: false
81
- version_requirements: *id006
82
- - !ruby/object:Gem::Dependency
79
+ version_requirements: *28075180
80
+ - !ruby/object:Gem::Dependency
83
81
  name: rack-test
84
- requirement: &id007 !ruby/object:Gem::Requirement
82
+ requirement: &28074680 !ruby/object:Gem::Requirement
85
83
  none: false
86
- requirements:
87
- - - ">="
88
- - !ruby/object:Gem::Version
89
- version: "0"
84
+ requirements:
85
+ - - ! '>='
86
+ - !ruby/object:Gem::Version
87
+ version: '0'
90
88
  type: :development
91
89
  prerelease: false
92
- version_requirements: *id007
93
- - !ruby/object:Gem::Dependency
90
+ version_requirements: *28074680
91
+ - !ruby/object:Gem::Dependency
94
92
  name: awesome_print
95
- requirement: &id008 !ruby/object:Gem::Requirement
93
+ requirement: &28074160 !ruby/object:Gem::Requirement
96
94
  none: false
97
- requirements:
98
- - - ">="
99
- - !ruby/object:Gem::Version
100
- version: "0"
95
+ requirements:
96
+ - - ! '>='
97
+ - !ruby/object:Gem::Version
98
+ version: '0'
101
99
  type: :development
102
100
  prerelease: false
103
- version_requirements: *id008
104
- - !ruby/object:Gem::Dependency
101
+ version_requirements: *28074160
102
+ - !ruby/object:Gem::Dependency
105
103
  name: jeweler
106
- requirement: &id009 !ruby/object:Gem::Requirement
104
+ requirement: &28073640 !ruby/object:Gem::Requirement
107
105
  none: false
108
- requirements:
109
- - - ">="
110
- - !ruby/object:Gem::Version
111
- version: "0"
106
+ requirements:
107
+ - - ! '>='
108
+ - !ruby/object:Gem::Version
109
+ version: '0'
112
110
  type: :development
113
111
  prerelease: false
114
- version_requirements: *id009
115
- description: A image processing proxy server, written in Ruby as a Rack application. Requires ImageMagick.
112
+ version_requirements: *28073640
113
+ description: A image processing proxy server, written in Ruby as a Rack application.
114
+ Requires ImageMagick.
116
115
  email: erik@eahanson.com
117
116
  executables: []
118
-
119
117
  extensions: []
120
-
121
- extra_rdoc_files:
118
+ extra_rdoc_files:
122
119
  - LICENSE.txt
123
120
  - README.mdown
124
- files:
121
+ files:
125
122
  - .document
126
123
  - Gemfile
127
124
  - Gemfile.lock
@@ -151,36 +148,32 @@ files:
151
148
  - spec/server_spec.rb
152
149
  - spec/signature_spec.rb
153
150
  - spec/spec_helper.rb
154
- has_rdoc: true
155
151
  homepage: http://github.com/eahanson/imageproxy
156
- licenses:
152
+ licenses:
157
153
  - MIT
158
154
  post_install_message:
159
155
  rdoc_options: []
160
-
161
- require_paths:
156
+ require_paths:
162
157
  - lib
163
- required_ruby_version: !ruby/object:Gem::Requirement
158
+ required_ruby_version: !ruby/object:Gem::Requirement
164
159
  none: false
165
- requirements:
166
- - - ">="
167
- - !ruby/object:Gem::Version
168
- hash: 4082526096266678674
169
- segments:
160
+ requirements:
161
+ - - ! '>='
162
+ - !ruby/object:Gem::Version
163
+ version: '0'
164
+ segments:
170
165
  - 0
171
- version: "0"
172
- required_rubygems_version: !ruby/object:Gem::Requirement
166
+ hash: 589623391014226257
167
+ required_rubygems_version: !ruby/object:Gem::Requirement
173
168
  none: false
174
- requirements:
175
- - - ">="
176
- - !ruby/object:Gem::Version
177
- version: "0"
169
+ requirements:
170
+ - - ! '>='
171
+ - !ruby/object:Gem::Version
172
+ version: '0'
178
173
  requirements: []
179
-
180
174
  rubyforge_project:
181
- rubygems_version: 1.6.2
175
+ rubygems_version: 1.8.6
182
176
  signing_key:
183
177
  specification_version: 3
184
178
  summary: A image processing proxy server, written in Ruby as a Rack application.
185
179
  test_files: []
186
-