class Rack::MockJson::Middleware

Public Class Methods

new(app, config_file_path: nil) click to toggle source
# File lib/rack/mock_json/middleware.rb, line 4
def initialize(app, config_file_path: nil)
  @app = app
  @mock = Rack::MockJson::Mock.new(config_file_path)
end

Public Instance Methods

call(env) click to toggle source
# File lib/rack/mock_json/middleware.rb, line 9
def call(env)
  @request = Rack::Request.new(env)

  mock_element = @mock.mock_element(request_path)
  return @app.call(env) if mock_element.nil?

  content = mock_element.pick_content(mock_element_index)
  [
    mock_element.status,
    {
      "Content-Type"           => "application/json",
      "Content-Length"         =>  content.bytesize.to_s,
      "X-XSS-Protection"       => "1; mode=block",
      "X-Content-Type-Options" => "nosniff",
      "X-Frame-Options"        => "SAMEORIGIN"
    },
    [content]
  ]
end

Private Instance Methods

mock_element_index() click to toggle source
# File lib/rack/mock_json/middleware.rb, line 35
def mock_element_index
  @request.params["mock_element_index"] ? @request.params["mock_element_index"].to_i : nil
end
request_path() click to toggle source
# File lib/rack/mock_json/middleware.rb, line 31
def request_path
  "#{@request.request_method} #{@request.path_info}"
end