Class: SockJS::Transports::HTMLFile
- Inherits:
-
ConsumingTransport
- Object
- Endpoint
- SessionEndpoint
- SockJS::Transport
- ConsumingTransport
- SockJS::Transports::HTMLFile
- Defined in:
- lib/sockjs/transports/htmlfile.rb
Constant Summary collapse
- HTML_PREFIX =
"<!doctype html>\n<html><head>\n <meta http-equiv=\"X-UA-Compatible\" content=\"IE=edge\" />\n <meta http-equiv=\"Content-Type\" content=\"text/html; charset=UTF-8\" />\n</head><body><h2>Don't panic!</h2>\n <script>\n document.domain = document.domain;\n var c = parent.\n".chomp.freeze
- HTML_POSTFIX =
(";\n c.start();\n function p(d) {c.message(d);};\n window.onload = function() {c.stop();};\n </script>\n" + (" " * (1024 - HTML_PREFIX.bytesize)) + "\r\n\r\n").freeze
Instance Attribute Summary
Attributes inherited from Endpoint
#connection, #http_origin, #options, #remote_addr
Attributes included from Endpoint::ClassMethods
Instance Method Summary collapse
- #format_frame(response, frame) ⇒ Object
- #get_session(response) ⇒ Object
- #handle_http_error(request, error) ⇒ Object
- #response_beginning(response) ⇒ Object
- #setup_response(request, response) ⇒ Object
Methods inherited from ConsumingTransport
#closing_frame, #finish_response, #heartbeat_frame, #messages_frame, #opening_frame, #process_session, #request_closed, #send_data
Methods inherited from SockJS::Transport
#exception_response, #handle_request, #handle_session_unavailable, #request_data, #server_key, #session_key
Methods inherited from SessionEndpoint
Methods inherited from Endpoint
#build_error_response, #build_response, #call, #empty_string, #error_content_type, #handle, #handle_request, #initialize, #inspect, #response_class
Methods included from Endpoint::ClassMethods
#add_route, #add_routes, #endpoints, #register, #route_conditions, #routing_prefix
Constructor Details
This class inherits a constructor from SockJS::Endpoint
Instance Method Details
#format_frame(response, frame) ⇒ Object
66 67 68 69 70 |
# File 'lib/sockjs/transports/htmlfile.rb', line 66 def format_frame(response, frame) raise TypeError.new("Payload must not be nil!") if frame.nil? "<script>\np(#{frame.to_s.to_json});\n</script>\r\n" end |
#get_session(response) ⇒ Object
39 40 41 42 43 44 45 46 47 48 49 |
# File 'lib/sockjs/transports/htmlfile.rb', line 39 def get_session(response) if response.request.callback.nil? or response.request.callback.empty? raise SockJS::HttpError.new(500, '"callback" parameter required') end if !!/[^a-zA-Z0-9\-_.]/.match(response.request.callback) raise SockJS::HttpError.new(500, 'invalid "callback" parameter') end super end |
#handle_http_error(request, error) ⇒ Object
55 56 57 58 59 60 61 62 63 64 |
# File 'lib/sockjs/transports/htmlfile.rb', line 55 def handle_http_error(request, error) response = build_response(request) response.status = error.status response.set_no_cache response.set_content_type(:html) SockJS::debug "Built error response: #{response.inspect}" response.write(error.) response end |
#response_beginning(response) ⇒ Object
51 52 53 |
# File 'lib/sockjs/transports/htmlfile.rb', line 51 def response_beginning(response) response.write(HTML_PREFIX + response.request.callback + HTML_POSTFIX) end |
#setup_response(request, response) ⇒ Object
30 31 32 33 34 35 36 37 |
# File 'lib/sockjs/transports/htmlfile.rb', line 30 def setup_response(request, response) response.status = 200 response.set_content_type(:html) response.set_no_cache response.set_session_id(request.session_id) response end |