class Digup::Responder

Attributes

headers[RW]
request[RW]
response[RW]
response_body[RW]
status[RW]

Public Class Methods

new(original_response) click to toggle source
# File lib/digup/responder.rb, line 7
def initialize(original_response)
  @original_response = original_response
  @status, @headers, @response = original_response
end

Public Instance Methods

append_javascript_to_evaluate_json() click to toggle source

Appends javascript to every page when response_type Setting includes :json Appends javascript to display json response appendes to original response

# File lib/digup/responder.rb, line 24
def append_javascript_to_evaluate_json
  if response_body.include?('</body>')
    position = response_body.rindex('</body>')
    response_body.insert(position, Template.javascript_template_to_evaluate_json)
  else
    response_body << Template.javascript_template_to_evaluate_json
  end
end
append_template_to_response(template) click to toggle source

Appends template to reponse depending on the settings

# File lib/digup/responder.rb, line 13
def append_template_to_response(template)
  position = if response_body.include?('</body>')
    response_body.rindex('</body>')
  else
    json_response? ? response_body.length - 1 : response_body.length
  end
  response_body.insert(position, (json_response? ? '' : "\n") + template )
end
build_response() click to toggle source

build a response to be sent to client

# File lib/digup/responder.rb, line 51
def build_response
  valid? ? [status, headers, [response_body]] : @original_response
end
can_handle_response?() click to toggle source
# File lib/digup/responder.rb, line 67
def can_handle_response?
  Setting.content_type_to_handle.include?(content_type)
end
clear_parameters() click to toggle source

clears log message and reponse_type unless its not a redirection If its redirection log needs to be displayed on redirected page. So its not cleared

# File lib/digup/responder.rb, line 57
def clear_parameters
  unless [301, 302].include?(status)
    Digup.clear_all
  end
end
content_type() click to toggle source
# File lib/digup/responder.rb, line 95
def content_type
  headers['Content-Type'].split(';').first
end
empty_response?() click to toggle source
# File lib/digup/responder.rb, line 37
def empty_response?
  (@response.is_a?(Array) && @response.size <= 1) ||
  !@response.respond_to?(:body) ||
  !response_body.respond_to?(:empty?) ||
  response_body.empty?
end
html_response?() click to toggle source
# File lib/digup/responder.rb, line 71
def html_response?
  if Digup.response_type.present?
    Digup.response_type == :html
  else
    content_type == 'text/html'
  end
end
javascript_response?() click to toggle source
# File lib/digup/responder.rb, line 79
def javascript_response?
  if Digup.response_type.present?
    Digup.response_type == :js
  else
    content_type == 'text/javascript'
  end
end
json_response?() click to toggle source
# File lib/digup/responder.rb, line 87
def json_response?
  if Digup.response_type.present?
    Digup.response_type == :json
  else
    content_type == 'application/json'
  end
end
response_not_a_file?() click to toggle source
# File lib/digup/responder.rb, line 33
def response_not_a_file?
  headers["Content-Transfer-Encoding"] != "binary"
end
valid?() click to toggle source

If responsder is valid, then only response is modified

# File lib/digup/responder.rb, line 45
def valid?
  !empty_response? && !response_body.frozen? && response_not_a_file? &&
  status == 200  && can_handle_response?
end