Module: Liminal::Openapi

Defined in:
lib/liminal/openapi.rb,
lib/liminal/openapi/error.rb,
lib/liminal/openapi/version.rb,
lib/liminal/openapi/verification.rb,
lib/liminal/openapi/schema_resolver.rb,
lib/liminal/openapi/contract_resolver.rb,
lib/liminal/openapi/example_overrides.rb,
lib/liminal/openapi/components_builder.rb,
lib/liminal/openapi/document_validator.rb,
lib/liminal/openapi/verification/error.rb,
lib/liminal/openapi/component_reference.rb,
lib/liminal/openapi/verification/runner.rb,
lib/liminal/openapi/verification/document.rb,
lib/liminal/openapi/verification/normalizer.rb,
lib/liminal/openapi/verification/structural_difference.rb,
lib/liminal/openapi/verification/normalizer/operation_example_stripper.rb

Defined Under Namespace

Modules: ComponentReference, ContractResolver, DocumentValidator, ExampleOverrides, SchemaResolver, Verification Classes: CompileOptionsForPrecompiledSchema, ComponentsBuilder, Error, InvalidComponentName, InvalidContractSource, InvalidDocument, InvalidOverrideFragment, InvalidPrecompiledSchema, InvalidSchemaOptions, InvalidSchemaSource, UnsupportedOpenapiVersion

Constant Summary collapse

VERSION =
"0.1.0"

Class Method Summary collapse

Class Method Details

.contract(contract, **compile_options) ⇒ Object



28
29
30
# File 'lib/liminal/openapi.rb', line 28

def contract(contract, **compile_options)
  ContractResolver.call(contract, **compile_options)
end

.enrich(document) {|ComponentsBuilder.new(document)| ... } ⇒ Object

Yields:



50
51
52
53
# File 'lib/liminal/openapi.rb', line 50

def enrich(document)
  yield ComponentsBuilder.new(document)
  document
end

.ref(name) ⇒ Object



32
33
34
# File 'lib/liminal/openapi.rb', line 32

def ref(name)
  ComponentReference.call(name)
end

.register(document:, name:, schema:, **compile_options) ⇒ Object



36
37
38
39
40
41
# File 'lib/liminal/openapi.rb', line 36

def register(document:, name:, schema:, **compile_options)
  component_name = ComponentReference.display_name(name)
  DocumentValidator.call(document, component_name: component_name)
  resolved_schema = self.schema(schema, **compile_options)
  register_resolved(document, component_name, resolved_schema)
end

.register_contract(document:, name:, contract:, **compile_options) ⇒ Object



43
44
45
46
47
48
# File 'lib/liminal/openapi.rb', line 43

def register_contract(document:, name:, contract:, **compile_options)
  component_name = ComponentReference.display_name(name)
  DocumentValidator.call(document, component_name: component_name)
  resolved_schema = self.contract(contract, **compile_options)
  register_resolved(document, component_name, resolved_schema)
end

.schema(source, examples: nil, **compile_options) ⇒ Object



17
18
19
20
21
22
23
24
25
26
# File 'lib/liminal/openapi.rb', line 17

def schema(source, examples: nil, **compile_options)
  if !examples.nil? || compile_options.key?(:overrides)
    overrides = compile_options.key?(:overrides) ? compile_options.delete(:overrides) : {}
    compile_options[:overrides] = ExampleOverrides.call(
      examples: examples.nil? ? {} : examples,
      overrides: overrides
    )
  end
  SchemaResolver.call(source, **compile_options)
end