class VersionCake::VersionContextService

Public Class Methods

new(config) click to toggle source
# File lib/versioncake/version_context_service.rb, line 4
def initialize(config)
  @versioned_resources = config.versioned_resources
  @default_version = config.default_version
  @strategies = config.extraction_strategies
end

Public Instance Methods

create_context(uri, version) click to toggle source
# File lib/versioncake/version_context_service.rb, line 29
def create_context(uri, version)
  return unless resource = find_resource(uri)

  result = check_version(resource, version)

  VersionCake::VersionContext.new(version, resource, result)
end
create_context_from_context(context, version) click to toggle source
# File lib/versioncake/version_context_service.rb, line 37
def create_context_from_context(context, version)
  result = check_version(context.resource, version)

  VersionCake::VersionContext.new(version, context.resource, result)
end
create_context_from_request(raw_request) click to toggle source
# File lib/versioncake/version_context_service.rb, line 10
def create_context_from_request(raw_request)
  return unless resource = find_resource(raw_request.path)

  request = VersionCake::VersionedRequest.new(
                raw_request,
                @strategies,
                @default_version
            )
  request.execute

  result = if request.failed
    :version_invalid
  else
    check_version(resource, request.version)
  end

  VersionCake::VersionContext.new(request.version, resource, result)
end

Private Instance Methods

check_version(resource, version) click to toggle source
# File lib/versioncake/version_context_service.rb, line 45
def check_version(resource, version)
  VersionCake::VersionChecker.new(resource, version).execute
end
find_resource(uri) click to toggle source
# File lib/versioncake/version_context_service.rb, line 49
def find_resource(uri)
  @versioned_resources.find { |resource| resource.uri.match uri }
end