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