class Rack::HostMeta

Rack middleware implementing the IETF draft: “Host Metadata for the Web” including support for Link-Pattern elements as described in the IETF draft: “Link-based Resource Descriptor Discovery.”

Usage:

use Rack::HostMeta do
  link :uri => '/robots.txt', :rel => 'robots'
  link :uri => '/w3c/p3p.xml', :rel => 'privacy', :type => 'application/p3p.xml'
  link :pattern => '{uri};json_schema', :rel => 'describedby', :type => 'application/x-schema+json'
end

See also:

http://tools.ietf.org/html/draft-nottingham-site-meta
http://tools.ietf.org/html/draft-hammer-discovery

TODO:

Accept POST operations allowing downstream services to register themselves

Public Class Methods

new(app, &block) click to toggle source
# File lib/rack/contrib/host_meta.rb, line 22
def initialize(app, &block)
  @app = app
  @lines = []
  instance_eval(&block)
  @response = @lines.join("\n")
end

Public Instance Methods

call(env) click to toggle source
# File lib/rack/contrib/host_meta.rb, line 29
def call(env)
  if env['PATH_INFO'] == '/host-meta'
    [200, {'Content-Type' => 'application/host-meta'}, [@response]]
  else
    @app.call(env)
  end
end

Protected Instance Methods