module Roda::RodaPlugins::DefaultHeaders

def self.configure(app, headers={})

Merge the given headers into the existing default headers, if any.
def self.configure(app, headers={})
  headers = app.opts[:default_headers] = (app.default_headers || app::RodaResponse::DEFAULT_HEADERS).merge(headers).freeze
  if headers.all?{|k, v| k.is_a?(String) && v.is_a?(String)}
    response_class = app::RodaResponse
    owner = response_class.instance_method(:set_default_headers).owner
    if owner == Base::ResponseMethods || (owner == response_class && app.opts[:set_default_headers_overridder] == response_class)
      app.opts[:set_default_headers_overridder] = response_class
      response_class.class_eval(<<-END, __FILE__, __LINE__+1)
        private
        alias set_default_headers set_default_headers
        def set_default_headers
          h = @headers
          #{headers.map{|k,v| "h[#{k.inspect}] ||= #{v.inspect}"}.join('; ')}
        end
      END
    end
  end
end