You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@deltacloud.apache.org by mf...@redhat.com on 2012/08/29 13:24:02 UTC

[PATCH core 2/3] Core: Fixed formatting and params handling in Rack::Accept

From: Michal Fojtik <mf...@redhat.com>

* Fixed wrong indentation of module
* Fixed case when this module is used outside Deltacloud
* Fixed case when there are no params in Rack env

Signed-off-by: Michal fojtik <mf...@redhat.com>
---
 server/lib/sinatra/rack_accept.rb |  106 ++++++++++++++++++-------------------
 1 file changed, 53 insertions(+), 53 deletions(-)

diff --git a/server/lib/sinatra/rack_accept.rb b/server/lib/sinatra/rack_accept.rb
index bcfb4d0..6b77fa8 100644
--- a/server/lib/sinatra/rack_accept.rb
+++ b/server/lib/sinatra/rack_accept.rb
@@ -29,7 +29,7 @@ module Rack
           begin
             assumed_layout = args[1] == :layout
             args[1] = "#{args[1]}.#{@media_type}".to_sym if args[1].is_a?(::Symbol)
-            render_without_format *args, &block
+            render_without_format(*args, &block)
           rescue Errno::ENOENT => e
             raise "ERROR: Missing template: #{args[1]}.#{args[0]}" unless assumed_layout
             raise e
@@ -39,65 +39,65 @@ module Rack
       end
     end
 
-      module Helpers
-
-        # This code was inherited from respond_to plugin
-        # http://github.com/cehoffman/sinatra-respond_to
-        #
-        # This method is used to overide the default content_type returned from
-        # rack-accept middleware.
-        def self.included(klass)
-          klass.class_eval do
-            alias :content_type_without_save :content_type
-            def content_type(*args)
-              content_type_without_save *args
-              request.env['rack-accept.formats'] = { args.first.to_sym => 1 }
-              response['Content-Type']
-            end
+    module Helpers
+
+      # This code was inherited from respond_to plugin
+      # http://github.com/cehoffman/sinatra-respond_to
+      #
+      # This method is used to overide the default content_type returned from
+      # rack-accept middleware.
+      def self.included(klass)
+        klass.class_eval do
+          alias :content_type_without_save :content_type
+          def content_type(*args)
+            content_type_without_save(*args)
+            request.env['rack-accept.formats'] = { args.first.to_sym => 1 }
+            response['Content-Type']
           end
         end
+      end
 
-        def accepting_formats
-          request.env['rack-accept.formats']
-        end
+      def accepting_formats
+        request.env['rack-accept.formats']
+      end
 
-        def static_file?(path)
-          public_dir = File.expand_path(settings.public)
-          path = File.expand_path(File.join(public_dir, unescape(path)))
-          path[0, public_dir.length] == public_dir && File.file?(path)
+      def static_file?(path)
+        public_dir = File.expand_path(settings.public)
+        path = File.expand_path(File.join(public_dir, unescape(path)))
+        path[0, public_dir.length] == public_dir && File.file?(path)
+      end
+
+      def respond_to(&block)
+        wants = {}
+        def wants.method_missing(type, *args, &handler)
+          self[type] = handler
         end
+        yield wants
 
-        def respond_to(&block)
-          wants = {}
-          def wants.method_missing(type, *args, &handler)
-            self[type] = handler
-          end
-          yield wants
-          if Deltacloud.default_frontend.name == :cimi
-            @media_type = (accepting_formats.has_key?(:xml) ? [:xml, accepting_formats[:xml]] : nil)
-          end
-          @media_type ||= accepting_formats.to_a.sort { |a,b| a[1]<=>b[1] }.reverse.select do |format, priority|
-            wants.keys.include?(format) == true
-          end.first
-          if @media_type and @media_type.kind_of? Symbol
-            @media_type = [ @media_type ]
-          end
-          if @media_type and @media_type[0]
-            @media_type = @media_type[0]
-            if  Rack::MediaType::ACCEPTED_MEDIA_TYPES[@media_type]
-              headers 'Content-Type' => Rack::MediaType::ACCEPTED_MEDIA_TYPES[@media_type][:return]
-            else
-              headers 'Content-Type' => 'application/xml'
-            end
-            wants[@media_type.to_sym].call if wants[@media_type.to_sym]
+        if Deltacloud.default_frontend.name == :cimi
+          @media_type = (accepting_formats.has_key?(:xml) ? [:xml, accepting_formats[:xml]] : nil)
+        end if Deltacloud.respond_to? :default_frontend
+
+        @media_type ||= accepting_formats.to_a.sort { |a,b| a[1]<=>b[1] }.reverse.select do |format, priority|
+          wants.keys.include?(format) == true
+        end.first
+        if @media_type and @media_type.kind_of? Symbol
+          @media_type = [ @media_type ]
+        end
+        if @media_type and @media_type[0]
+          @media_type = @media_type[0]
+          if  Rack::MediaType::ACCEPTED_MEDIA_TYPES[@media_type]
+            headers 'Content-Type' => Rack::MediaType::ACCEPTED_MEDIA_TYPES[@media_type][:return]
           else
-            headers 'Content-Type' => nil
-            status 406
+            headers 'Content-Type' => 'application/xml'
           end
+          wants[@media_type.to_sym].call if wants[@media_type.to_sym]
+        else
+          headers 'Content-Type' => nil
+          status 406
         end
-
+      end
     end
-
   end
 
   class MediaType < Sinatra::Base
@@ -119,7 +119,7 @@ module Rack
       accept, index = env['rack-accept.request'], {}
 
       # Skip everything when 'format' parameter is set in URL
-      if env['rack.request.query_hash']["format"]
+      if env['rack.request.query_hash'] and env['rack.request.query_hash']["format"]
          media_type = case env['rack.request.query_hash']["format"]
             when 'html' then :html
             when 'xml' then :xml
@@ -135,8 +135,8 @@ module Rack
         sorted_media_types << 'application/xml' if sorted_media_types.empty?
         # Choose the right format with the media type according to the priority
         ACCEPTED_MEDIA_TYPES.each do |format, definition|
-          definition[:match].each do |media_type|
-            break if index[format] = sorted_media_types.index(media_type)
+          definition[:match].each do |mt|
+            break if index[format] = sorted_media_types.index(mt)
           end
         end
         # Reject formats with no/nil priority
-- 
1.7.10.2


Re: [PATCH core 2/3] Core: Fixed formatting and params handling in Rack::Accept

Posted by David Lutterkort <lu...@redhat.com>.
On Wed, 2012-08-29 at 13:24 +0200, mfojtik@redhat.com wrote:
> From: Michal Fojtik <mf...@redhat.com>
> 
> * Fixed wrong indentation of module
> * Fixed case when this module is used outside Deltacloud
> * Fixed case when there are no params in Rack env

Asa small comment: it's really bad to combine whitespace changes and any
other changes in a patch. Still ACK.

David