Class: Async::WebSocket::Request

Inherits:
Object
  • Object
show all
Includes:
Protocol::WebSocket::Headers
Defined in:
lib/async/websocket/request.rb

Instance Attribute Summary collapse

Class Method Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(scheme = nil, authority = nil, path = nil, headers = nil, **options, &block) ⇒ Request

Returns a new instance of Request.



19
20
21
22
23
24
25
26
27
28
# File 'lib/async/websocket/request.rb', line 19

def initialize(scheme = nil, authority = nil, path = nil, headers = nil, **options, &block)
	@scheme = scheme
	@authority = authority
	@path = path
	@headers = headers
	
	@options = options
	
	@body = nil
end

Instance Attribute Details

#authorityObject

Returns the value of attribute authority.



35
36
37
# File 'lib/async/websocket/request.rb', line 35

def authority
  @authority
end

#bodyObject

Returns the value of attribute body.



39
40
41
# File 'lib/async/websocket/request.rb', line 39

def body
  @body
end

#headersObject

Returns the value of attribute headers.



37
38
39
# File 'lib/async/websocket/request.rb', line 37

def headers
  @headers
end

#pathObject

Returns the value of attribute path.



36
37
38
# File 'lib/async/websocket/request.rb', line 36

def path
  @path
end

#schemeObject

Returns the value of attribute scheme.



34
35
36
# File 'lib/async/websocket/request.rb', line 34

def scheme
  @scheme
end

Class Method Details

.websocket?(request) ⇒ Boolean

Returns:

  • (Boolean)


15
16
17
# File 'lib/async/websocket/request.rb', line 15

def self.websocket?(request)
	Array(request.protocol).include?(PROTOCOL)
end

Instance Method Details

#call(connection) ⇒ Object

Send the request to the given connection.



42
43
44
45
46
47
48
49
50
# File 'lib/async/websocket/request.rb', line 42

def call(connection)
	if connection.http1?
		return UpgradeRequest.new(self, **@options).call(connection)
	elsif connection.http2?
		return ConnectRequest.new(self, **@options).call(connection)
	end
	
	raise UnsupportedVersionError, "Unsupported HTTP version: #{connection.version}!"
end

#idempotent?Boolean

Returns:

  • (Boolean)


52
53
54
# File 'lib/async/websocket/request.rb', line 52

def idempotent?
	true
end

#protocolObject



30
31
32
# File 'lib/async/websocket/request.rb', line 30

def protocol
	PROTOCOL
end

#to_sObject



56
57
58
59
# File 'lib/async/websocket/request.rb', line 56

def to_s
	uri = "#{@scheme}://#{@authority}#{@path}"
	"\#<#{self.class} uri=#{uri.inspect}>"
end