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