class Rack::Json::Api::Version

Constants

VERSION

Public Class Methods

new(app, opts={}) click to toggle source
# File lib/rack/json/api/version.rb, line 9
def initialize(app, opts={})
  @app = app
  @vendor = opts[:vendor] || raise('Vendor name required')
end

Public Instance Methods

call(env) click to toggle source
# File lib/rack/json/api/version.rb, line 14
def call(env)
  update(env)
  @app.call env
end
extract_version(env) click to toggle source
# File lib/rack/json/api/version.rb, line 19
def extract_version(env)
  env['HTTP_ACCEPT'].to_s[/^application\/vnd\.#{@vendor}\.v(.+)\+json/, 1]
end
update(env) click to toggle source
# File lib/rack/json/api/version.rb, line 23
def update(env)
  version = extract_version(env)
  env['api.version'] = version
  unless version.nil?
    env['ORIGINAL_HTTP_ACCEPT'] = env['HTTP_ACCEPT']
    env['HTTP_ACCEPT'] = 'application/json'
  end
end