class Rack::JsonSchema::SchemaProvider

Constants

DEFAULT_PATH

Public Class Methods

new(app, path: nil, schema: nil) click to toggle source

Behaves as a rack-middleware @param app [Object] Rack application @param path [String, nil] URL path to return JSON Schema (default: /schema) @param schema [Hash] Schema object written in JSON schema format @raise [JsonSchema::SchemaError]

# File lib/rack/json_schema/schema_provider.rb, line 11
def initialize(app, path: nil, schema: nil)
  @app = app
  @path = path
  @schema = schema
end

Public Instance Methods

call(env) click to toggle source

Returns rendered document for document request @return [Array] Rack response @param env [Hash] Rack env

# File lib/rack/json_schema/schema_provider.rb, line 20
def call(env)
  if env["REQUEST_METHOD"] == "GET" && env["PATH_INFO"] == path
    [
      200,
      { "Content-Type" => "application/json" },
      [rendered_schema],
    ]
  else
    @app.call(env)
  end
end

Private Instance Methods

path() click to toggle source

@return [String] Path to return document

# File lib/rack/json_schema/schema_provider.rb, line 35
def path
  @path || DEFAULT_PATH
end
rendered_schema() click to toggle source

@return [String] Rendered JSON Schema in JSON format

# File lib/rack/json_schema/schema_provider.rb, line 40
def rendered_schema
  JSON.pretty_generate(@schema)
end