Sha256: 378de696efb7dff746125d8a4c9ae7ccddfbd75c320b8a257d9ffd5ff0f7ef00
Contents?: true
Size: 1.22 KB
Versions: 1
Compression:
Stored size: 1.22 KB
Contents
# frozen_string_literal: true module Grape module Middleware module Versioner # This middleware sets various version related rack environment variables # based on the HTTP Accept-Version header # # Example: For request header # Accept-Version: v1 # # The following rack env variables are set: # # env['api.version'] => 'v1' # # If version does not match this route, then a 406 is raised with # X-Cascade header to alert Grape::Router to attempt the next matched # route. class AcceptVersionHeader < Base include VersionerHelpers def before potential_version = env[Grape::Http::Headers::HTTP_ACCEPT_VERSION]&.strip not_acceptable!('Accept-Version header must be set.') if strict? && potential_version.blank? return if potential_version.blank? not_acceptable!('The requested version is not supported.') unless potential_version_match?(potential_version) env[Grape::Env::API_VERSION] = potential_version end private def not_acceptable!(message) throw :error, status: 406, headers: error_headers, message: message end end end end end
Version data entries
1 entries across 1 versions & 1 rubygems
Version | Path |
---|---|
grape-2.2.0 | lib/grape/middleware/versioner/accept_version_header.rb |