module OpenapiRspec::SchemaLoader

Public Class Methods

call(path, app: OpenapiRspec.config.app) click to toggle source
# File lib/openapi_rspec/schema_loader.rb, line 5
def self.call(path, app: OpenapiRspec.config.app)
  response = request(path, app)
  parse(response)
end
parse(schema) click to toggle source
# File lib/openapi_rspec/schema_loader.rb, line 10
def self.parse(schema)
  begin
    JSON.parse(schema)
  rescue JSON::ParserError
    YAML.safe_load(schema)
  end
rescue => e
  raise "Unable to parse OpenAPI schema. #{e}"
end
request(path, app) click to toggle source
# File lib/openapi_rspec/schema_loader.rb, line 20
def self.request(path, app)
  session = Rack::Test::Session.new(app)
  response = session.get(path)

  raise "Response code: #{response.status}" unless response.successful?
  raise "Empty body" if response.body.empty?

  response.body
rescue => e
  raise "Unable to perform GET request for the OpenAPI schema '#{path}'. #{e}"
end