imageproxy 0.1.3 → 0.1.4

Sign up to get free protection for your applications and to get access to all the features.
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
-