Class: SockJS::Transports::JSONPSend

Inherits:
DeliveryTransport show all
Defined in:
lib/sockjs/transports/jsonp.rb

Instance Attribute Summary

Attributes inherited from Endpoint

#connection, #http_origin, #options, #remote_addr

Attributes included from Endpoint::ClassMethods

#method, #prefix

Instance Method Summary collapse

Methods inherited from DeliveryTransport

#get_session, #process_session

Methods inherited from SockJS::Transport

#exception_response, #handle_request, #handle_session_unavailable, #request_data, #response_beginning, #server_key, #session_key

Methods inherited from SessionEndpoint

routing_prefix

Methods inherited from Endpoint

#build_error_response, #build_response, #call, #empty_string, #format_frame, #handle, #handle_http_error, #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

#empty_payloadObject

Raises:



79
80
81
# File 'lib/sockjs/transports/jsonp.rb', line 79

def empty_payload
  raise SockJS::HttpError.new(500, "Payload expected.")
end

#error_content_typeObject



75
76
77
# File 'lib/sockjs/transports/jsonp.rb', line 75

def error_content_type
  :html
end

#extract_message(request) ⇒ Object

Handler.



44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
# File 'lib/sockjs/transports/jsonp.rb', line 44

def extract_message(request)
  if request.content_type == "application/x-www-form-urlencoded"
    raw_data = request.data.read || empty_payload
    begin
      data = Hash[URI.decode_www_form(raw_data)]

      data = data.fetch("d")
    rescue KeyError
      empty_payload
    end
  else
    data = request.data.read
  end

  if data.nil? or data.empty?
    empty_payload
  end
  data
end

#setup_response(request, response) ⇒ Object



64
65
66
67
68
# File 'lib/sockjs/transports/jsonp.rb', line 64

def setup_response(request, response)
  response.status = 200
  response.set_content_type(:plain)
  response.set_session_id(request.session_id)
end

#successful_response(response) ⇒ Object



70
71
72
73
# File 'lib/sockjs/transports/jsonp.rb', line 70

def successful_response(response)
  response.write("ok")
  response.finish
end