module Roda::RodaPlugins::HeaderMatchers

  1. lib/roda/plugins/header_matchers.rb

The header_matchers plugin adds hash matchers for matching on less-common HTTP headers.

plugin :header_matchers

It adds a :header matcher for matching on arbitrary headers, which matches if the header is present, and yields the header value:

r.on header: 'HTTP-X-App-Token' do |header_value|
  # Looks for env['HTTP_X_APP_TOKEN'] and yields it
end

It adds a :host matcher for matching by the host of the request:

r.on host: 'foo.example.com' do
end

For regexp values of the :host matcher, any captures are yielded to the block:

r.on host: /\A(\w+).example.com\z/ do |subdomain|
end

It adds a :user_agent matcher for matching on a user agent patterns, which yields the regexp captures to the block:

r.on user_agent: /Chrome\/([.\d]+)/ do |chrome_version|
end

It adds an :accept matcher for matching based on the Accept header:

r.on accept: 'text/csv' do
end

Note that the :accept matcher is very simple and cannot handle wildcards, priorities, or anything but a simple comma separated list of mime types.