class ApiSketch::ExamplesServer

Public Class Methods

call(env) click to toggle source
# File lib/api_sketch/examples_server.rb, line 2
def self.call(env)
  new(env).response.finish
end
new(env) click to toggle source
# File lib/api_sketch/examples_server.rb, line 6
def initialize(env)
  @request = Rack::Request.new(env)
end

Public Instance Methods

response() click to toggle source
# File lib/api_sketch/examples_server.rb, line 10
def response
  if api_resource
    api_response = if api_response_context
      api_resource.responses.find { |rsp| rsp.name == api_response_context }
    else
      api_resource.responses.first
    end

    if api_response
      Rack::Response.new do |response|
        api_response.headers.each do |header|
          response[header.name] = header.value
        end

        response['Content-Type'] = 'application/json'

        response.status = Rack::Utils.status_code(api_response.http_status)

        params_array = (api_response.parameters.body_container_type.to_s == "array") ? [api_response.parameters.wrapped_body] : api_response.parameters.body

        response.write(ApiSketch::ResponseRenderer.new(params_array, api_response.parameters.body_container_type, get_elements_count).to_json)
      end
    else
      api_sketch_message("No any responses defined for this resource and context", 404)
    end
  else
    api_sketch_message("Resource is not Found", 404)
  end
end

Private Instance Methods

api_resource() click to toggle source
# File lib/api_sketch/examples_server.rb, line 41
def api_resource
  @api_resource = if @request.params["api_sketch_resource_id"]
    ApiSketch::Model::Resource.find(@request.params["api_sketch_resource_id"])
  else
    ApiSketch::Model::Resource.find_by_http_method_and_path(@request.request_method, @request.path)
  end
end
api_response_context() click to toggle source
# File lib/api_sketch/examples_server.rb, line 49
def api_response_context
  @request.params["api_sketch_response_context"]
end
api_sketch_message(message, status) click to toggle source
# File lib/api_sketch/examples_server.rb, line 53
def api_sketch_message(message, status)
  Rack::Response.new({"api_sketch" => message}.to_json, 404)
end
get_elements_count() click to toggle source
# File lib/api_sketch/examples_server.rb, line 57
def get_elements_count
  @request.params["api_sketch_response_array_elements_count"].to_i
end