---
server/libexec/lib/sinatra/abstract_format.rb | 23 +++++++++++++++++++++++
server/libexec/server.rb | 3 +++
2 files changed, 26 insertions(+), 0 deletions(-)
create mode 100644 server/libexec/lib/sinatra/abstract_format.rb
diff --git a/server/libexec/lib/sinatra/abstract_format.rb
b/server/libexec/lib/sinatra/abstract_format.rb
new file mode 100644
index 0000000..9dd58b0
--- /dev/null
+++ b/server/libexec/lib/sinatra/abstract_format.rb
@@ -0,0 +1,23 @@
+require 'pathname'
+
+module Rack
+ class AbstractFormat
+
+ def initialize(app, default = nil)
+ @app, @default = app, default
+ end
+
+ def call(env)
+ path = Pathname(env['PATH_INFO'])
+ return @app.call(env) unless ['.html',
'.xml'].include?(path.extname)
+ env['PATH_INFO'] = path.to_s.sub(/#{path.extname}$/,'')
+ env['HTTP_ACCEPT'] = concat(env['HTTP_ACCEPT'],
Rack::Mime.mime_type(path.extname, @default))
+ @app.call(env)
+ end
+
+ private
+ def concat(accept, type)
+ (accept ||
'').split(',').unshift(type).compact.join(',')
+ end
+ end
+end
diff --git a/server/libexec/server.rb b/server/libexec/server.rb
index 8185eff..a085f32 100644
--- a/server/libexec/server.rb
+++ b/server/libexec/server.rb
@@ -2,6 +2,7 @@ require 'rubygems'
require 'deltacloud'
require 'sinatra'
require 'sinatra/respond_to'
+require 'sinatra/abstract_format'
require 'erb'
require 'haml'
require 'open3'
@@ -24,6 +25,8 @@ module Sinatra
register Sinatra::RespondTo
end
+use Rack::AbstractFormat
+
# Common actions
#
--
1.6.6.2
Show replies by date