Module: OpenapiFirst

Defined in:
lib/openapi_first.rb,
lib/openapi_first/app.rb,
lib/openapi_first/inbox.rb,
lib/openapi_first/utils.rb,
lib/openapi_first/router.rb,
lib/openapi_first/version.rb,
lib/openapi_first/coverage.rb,
lib/openapi_first/operation.rb,
lib/openapi_first/responder.rb,
lib/openapi_first/definition.rb,
lib/openapi_first/validation.rb,
lib/openapi_first/response_object.rb,
lib/openapi_first/router_required.rb,
lib/openapi_first/schema_validation.rb,
lib/openapi_first/validation_format.rb,
lib/openapi_first/request_validation.rb,
lib/openapi_first/response_validator.rb,
lib/openapi_first/response_validation.rb,
lib/openapi_first/default_operation_resolver.rb

Defined Under Namespace

Modules: RouterRequired, Utils, ValidationFormat Classes: App, AppWithOptions, Coverage, DefaultOperationResolver, Definition, Error, Inbox, NotFoundError, NotImplementedError, Operation, OperationResolver, RequestInvalidError, RequestValidation, Responder, ResponseBodyInvalidError, ResponseCodeNotFoundError, ResponseContentTypeNotFoundError, ResponseInvalid, ResponseObject, ResponseValidation, ResponseValidator, Router, SchemaValidation, Validation

Constant Summary collapse

OPERATION =
'openapi_first.operation'
PARAMETERS =
'openapi_first.parameters'
REQUEST_BODY =
'openapi_first.parsed_request_body'
INBOX =
'openapi_first.inbox'
HANDLER =
'openapi_first.handler'
VERSION =
'0.17.0'

Class Method Summary collapse

Class Method Details

.app(spec, namespace:, router_raise_error: false, request_validation_raise_error: false, response_validation: false) ⇒ Object



35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
# File 'lib/openapi_first.rb', line 35

def self.app(
  spec,
  namespace:,
  router_raise_error: false,
  request_validation_raise_error: false,
  response_validation: false
)
  spec = OpenapiFirst.load(spec) if spec.is_a?(String)
  App.new(
    nil,
    spec,
    namespace: namespace,
    router_raise_error: router_raise_error,
    request_validation_raise_error: request_validation_raise_error,
    response_validation: response_validation
  )
end

.envObject



22
23
24
# File 'lib/openapi_first.rb', line 22

def self.env
  ENV['RACK_ENV'] || ENV['HANAMI_ENV'] || ENV['RAILS_ENV']
end

.load(spec_path, only: nil) ⇒ Object



26
27
28
29
30
31
32
33
# File 'lib/openapi_first.rb', line 26

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

.middleware(spec, namespace:, router_raise_error: false, request_validation_raise_error: false, response_validation: false) ⇒ Object



53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
# File 'lib/openapi_first.rb', line 53

def self.middleware(
  spec,
  namespace:,
  router_raise_error: false,
  request_validation_raise_error: false,
  response_validation: false
)
  spec = OpenapiFirst.load(spec) if spec.is_a?(String)
  AppWithOptions.new(
    spec,
    namespace: namespace,
    router_raise_error: router_raise_error,
    request_validation_raise_error: request_validation_raise_error,
    response_validation: response_validation
  )
end