class Rack::ServiceApiVersioning::ApiVersionRedirector

Returns an HTTP 302 response with cleaned-up environment and `Location` header.

Constants

DEFAULT_STATUS

Attributes

app[R]
env[R]

Public Class Methods

new(app) click to toggle source
# File lib/rack/service_api_versioning/api_version_redirector.rb, line 15
def initialize(app)
  @app = app
  @env = nil
  self
end

Public Instance Methods

call(env) click to toggle source
# File lib/rack/service_api_versioning/api_version_redirector.rb, line 21
def call(env)
  @env = env
  response
end

Private Instance Methods

api_version() click to toggle source
# File lib/rack/service_api_versioning/api_version_redirector.rb, line 33
def api_version
  api_version_data[:api_version]
end
api_version_data() click to toggle source
# File lib/rack/service_api_versioning/api_version_redirector.rb, line 37
def api_version_data
  JSON.parse(env['COMPONENT_API_VERSION_DATA'], symbolize_names: true)
end
body() click to toggle source
# File lib/rack/service_api_versioning/api_version_redirector.rb, line 41
def body
  'Please resend the request to ' \
    "<a href=\"#{location}\">#{location}</a>" \
    ' without caching it.'
end
headers() click to toggle source
# File lib/rack/service_api_versioning/api_version_redirector.rb, line 47
def headers
  { 'API-Version' => api_version, 'Location' => location }
end
location() click to toggle source
# File lib/rack/service_api_versioning/api_version_redirector.rb, line 51
def location
  BuildRedirectUriFromEnv.call(env)
end
response() click to toggle source
# File lib/rack/service_api_versioning/api_version_redirector.rb, line 55
def response
  Rack::Response.new(body, DEFAULT_STATUS, headers).finish
end