From 0eca3466c60be2d79106e0324fd75e0f3513d9dd Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?C=C3=A9sar=20Izurieta?= Date: Thu, 7 May 2015 17:58:18 -0300 Subject: [PATCH 1/3] Enable pdf middleware with query parameters --- lib/shrimp/middleware.rb | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/lib/shrimp/middleware.rb b/lib/shrimp/middleware.rb index 96e8050..75362fc 100644 --- a/lib/shrimp/middleware.rb +++ b/lib/shrimp/middleware.rb @@ -54,11 +54,12 @@ def call(env) # Private: start phantom rendering in a separate process def fire_phantom - Process::detach fork { Phantom.new(@request.url.sub(%r{\.pdf$}, ''), @options, @request.cookies).to_pdf(render_to) } + url = @request.url.sub(%r{\.pdf(\?|$)}, '\1').sub('utf8=%E2%9C%93&', '') + Process::detach fork { Phantom.new(url, @options, @request.cookies).to_pdf(render_to) } end def render_to - file_name = Digest::MD5.hexdigest(@request.path) + ".pdf" + file_name = Digest::MD5.hexdigest(@request.fullpath) + ".pdf" file_path = @options[:out_path] "#{file_path}/#{file_name}" end @@ -92,7 +93,7 @@ def rendering_in_progress? end def render_as_pdf? - request_path_is_pdf = !!@request.path.match(%r{\.pdf$}) + request_path_is_pdf = !!@request.path.match(%r{\.pdf(\?|$)}) if request_path_is_pdf && @conditions[:only] rules = [@conditions[:only]].flatten From 47b54307d9cc18ea5f19a0aa09ac60acd4bf8c7d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?C=C3=A9sar=20Izurieta?= Date: Thu, 7 May 2015 17:58:55 -0300 Subject: [PATCH 2/3] Change the error message to ask user to retry --- lib/shrimp/middleware.rb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/shrimp/middleware.rb b/lib/shrimp/middleware.rb index 75362fc..ef7166d 100644 --- a/lib/shrimp/middleware.rb +++ b/lib/shrimp/middleware.rb @@ -163,7 +163,7 @@ def error_response -

Sorry request timed out...

+

Sorry request timed out... Please try again in a few moments

HTML From e64211b37111297d0095b537914be35cf15ee4a5 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?C=C3=A9sar=20Izurieta?= Date: Thu, 7 May 2015 17:58:38 -0300 Subject: [PATCH 3/3] Add default out_path --- lib/shrimp/middleware.rb | 1 + 1 file changed, 1 insertion(+) diff --git a/lib/shrimp/middleware.rb b/lib/shrimp/middleware.rb index ef7166d..3209775 100644 --- a/lib/shrimp/middleware.rb +++ b/lib/shrimp/middleware.rb @@ -7,6 +7,7 @@ def initialize(app, options = { }, conditions = { }) @options[:polling_interval] ||= 1 @options[:polling_offset] ||= 1 @options[:cache_ttl] ||= 1 + @options[:out_path] ||= Dir.tmpDir @options[:request_timeout] ||= @options[:polling_interval] * 10 end