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.8.2'

Class Attribute Summary collapse

Class Method Summary collapse

Class Attribute Details

.enabledObject

Returns the value of attribute enabled.



35
36
37
# File 'lib/faraday/openapi.rb', line 35

def enabled
  @enabled
end

.loggerObject

Returns the value of attribute logger.



35
36
37
# File 'lib/faraday/openapi.rb', line 35

def logger
  @logger
end

.registryObject (readonly)

Returns the value of attribute registry.



34
35
36
# File 'lib/faraday/openapi.rb', line 34

def registry
  @registry
end

Class Method Details

.[](key) ⇒ Object



85
86
87
88
89
90
91
92
93
94
95
96
# File 'lib/faraday/openapi.rb', line 85

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') before using the middleware"
              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, allow_partial_responses: false, source: nil) ⇒ Object



65
66
67
68
69
70
71
72
73
74
75
# File 'lib/faraday/openapi.rb', line 65

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

  download(as, from: source, to: filepath) if source && !File.exist?(filepath)

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

.update_registeredObject



77
78
79
80
81
82
83
# File 'lib/faraday/openapi.rb', line 77

def self.update_registered
  registry.each do |name, config|
    next unless config.source

    download(name, from: config.source, to: config.filepath)
  end
end