You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@deltacloud.apache.org by ma...@redhat.com on 2012/03/14 12:15:44 UTC
[PATCH] CIMI - slight hack to content-negotiation when CIMI frontend is used
From: marios <ma...@redhat.com>
Prefer :xml/:json over :html if (:html AND [:xml OR :json]) are specified
Signed-off-by: marios <ma...@redhat.com>
---
server/lib/cimi/server.rb | 1 +
server/lib/sinatra/rack_accept.rb | 7 ++++---
2 files changed, 5 insertions(+), 3 deletions(-)
diff --git a/server/lib/cimi/server.rb b/server/lib/cimi/server.rb
index 6cd845e..653c8c8 100644
--- a/server/lib/cimi/server.rb
+++ b/server/lib/cimi/server.rb
@@ -35,6 +35,7 @@ use Rack::Date
use Rack::CIMI
configure do
+ set :cimi_preferred_formats, [:xml, :json]
set :root_url, "/cimi"
set :views, File::join($top_srcdir, 'views', 'cimi')
set :public_folder, File::join($top_srcdir, 'public')
diff --git a/server/lib/sinatra/rack_accept.rb b/server/lib/sinatra/rack_accept.rb
index 2ad52c7..7b2f200 100644
--- a/server/lib/sinatra/rack_accept.rb
+++ b/server/lib/sinatra/rack_accept.rb
@@ -77,10 +77,11 @@ module Rack
self[type] = handler
end
yield wants
- if ENV['API_FRONTEND'] == "cimi"
- @media_type = (accepting_formats.has_key?(:xml) ? [:xml, accepting_formats[:xml]] : nil)
+ if (ENV['API_FRONTEND'] == "cimi" && accepting_formats.has_key?(:html) &&
+ (accepting_formats.keys & settings.cimi_preferred_formats).length > 0 )
+ request.env['rack-accept.formats'].delete(:html)
end
- @media_type ||= accepting_formats.to_a.sort { |a,b| a[1]<=>b[1] }.reverse.select do |format, priority|
+ @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[0]
--
1.7.6.5