Module: Faraday::Openapi

Defined in:
lib/faraday/openapi.rb,
lib/faraday/openapi/errors.rb,
lib/faraday/openapi/request.rb,
lib/faraday/openapi/version.rb,
lib/faraday/openapi/response.rb,
lib/faraday/openapi/middleware.rb

Overview

This will be your middleware main module, though the actual middleware implementation will go into Faraday::Openapi::Middleware for the correct namespacing.

Defined Under Namespace

Modules: Base, RequestValidation, ResponseValidation Classes: AlreadyRegisteredError, Error, FileNotFoundError, Middleware, NotRegisteredError, RequestInvalidError, RequestMiddleware, ResponseInvalidError, ResponseMiddleware

Constant Summary collapse

VERSION =
'0.5.0'

Class Attribute Summary collapse

Class Method Summary collapse

Class Attribute Details

.enabledObject

Returns the value of attribute enabled.



27
28
29
# File 'lib/faraday/openapi.rb', line 27

def enabled
  @enabled
end

.registryObject (readonly)

Returns the value of attribute registry.



26
27
28
# File 'lib/faraday/openapi.rb', line 26

def registry
  @registry
end

Class Method Details

.[](key) ⇒ Object



39
40
41
42
43
44
45
46
47
48
49
50
# File 'lib/faraday/openapi.rb', line 39

def self.[](key)
  registry.fetch(key) do
    message = if registry.empty?
                'No API descriptions have been registered. Please register your API description via ' \
                  "Faraday::Openapi.register('myopenapi.yaml')"
              else
                "API description #{key.inspect} was not found. Please register your API description via " \
                  "Faraday::Openapi.register('myopenapi.yaml'#{key == :default ? '' : ", as: #{key.inspect}"})"
              end
    raise NotRegisteredError, message
  end
end

.register(filepath, as: :default) ⇒ Object



30
31
32
33
34
35
36
37
# File 'lib/faraday/openapi.rb', line 30

def self.register(filepath, as: :default)
  raise AlreadyRegisteredError, "API description #{as} is already registered" if registry.key?(as)

  oad = filepath.is_a?(Hash) ? OpenapiFirst.parse(filepath) : OpenapiFirst.load(filepath)
  registry[as] = oad
rescue OpenapiFirst::FileNotFoundError => e
  raise Faraday::Openapi::FileNotFoundError, e.message
end