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