Module: OpenapiFirst

Defined in:
lib/openapi_first.rb,
lib/openapi_first/config.rb,
lib/openapi_first/errors.rb,
lib/openapi_first/router.rb,
lib/openapi_first/plugins.rb,
lib/openapi_first/version.rb,
lib/openapi_first/operation.rb,
lib/openapi_first/definition.rb,
lib/openapi_first/use_router.rb,
lib/openapi_first/json_schema.rb,
lib/openapi_first/error_response.rb,
lib/openapi_first/string_keyed_hash.rb,
lib/openapi_first/json_schema/result.rb,
lib/openapi_first/request_validation.rb,
lib/openapi_first/response_validator.rb,
lib/openapi_first/response_validation.rb,
lib/openapi_first/body_parser_middleware.rb,
lib/openapi_first/request_body_validator.rb,
lib/openapi_first/error_responses/default.rb,
lib/openapi_first/error_responses/json_api.rb,
lib/openapi_first/request_validation_error.rb

Defined Under Namespace

Modules: ErrorResponses, Plugins, UseRouter Classes: BodyParserMiddleware, BodyParsingError, Config, Definition, Error, ErrorResponse, JsonSchema, NotFoundError, Operation, RequestBodyValidator, RequestInvalidError, RequestValidation, RequestValidationError, ResponseBodyInvalidError, ResponseCodeNotFoundError, ResponseContentTypeNotFoundError, ResponseHeaderInvalidError, ResponseInvalid, ResponseValidation, ResponseValidator, Router, StringKeyedHash

Constant Summary collapse

OPERATION =

The OpenAPI operation for the current request

'openapi.operation'
PARAMS =

Merged parsed path and query parameters

'openapi.params'
QUERY_PARAMS =

Parsed query parameters

'openapi.query'
PATH_PARAMS =

Parsed path parameters

'openapi.path_params'
HEADER_PARAMS =

Parsed header parameters, except for Content-Type, Accept and Authorization

'openapi.headers'
'openapi.cookies'
REQUEST_BODY =

The parsed request body

'openapi.parsed_request_body'
VERSION =
'1.0.0.beta5'

Class Method Summary collapse

Class Method Details

.load(spec_path, only: nil) ⇒ Object



39
40
41
42
43
44
45
46
# File 'lib/openapi_first.rb', line 39

def self.load(spec_path, only: nil)
  resolved = Dir.chdir(File.dirname(spec_path)) do
    content = YAML.load_file(File.basename(spec_path))
    JsonRefs.call(content, resolve_local_ref: true, resolve_file_ref: true)
  end
  resolved['paths'].filter!(&->(key, _) { only.call(key) }) if only
  Definition.new(resolved, spec_path)
end