Class: LibWebSocket::Message

Inherits:
Object
  • Object
show all
Includes:
Stateful
Defined in:
lib/libwebsocket/message.rb

Overview

A base class for LibWebSocket::Request and LibWebSocket::Response.

Direct Known Subclasses

Request, Response

Instance Attribute Summary collapse

Attributes included from Stateful

#state

Instance Method Summary collapse

Methods included from Stateful

#done, #done?, #state?

Constructor Details

#initialize(hash = {}) ⇒ Message

A new instance of Message. Instance variables will be set from hash.

Examples:

msg = LibMessage.new( :host => 'example.org' )
msg.host # => 'example.org'


15
16
17
18
19
20
21
22
23
24
25
26
# File 'lib/libwebsocket/message.rb', line 15

def initialize(hash = {})
  hash.each do |k,v|
    instance_variable_set("@#{k}",v)
  end

  @version ||= 76
  @buffer = ''
  @fields ||= {}
  @max_message_size ||= 2048
  @cookies ||= []
  @state = 'first_line'
end

Instance Attribute Details

#challengeObject

Returns the value of attribute challenge.



8
9
10
# File 'lib/libwebsocket/message.rb', line 8

def challenge
  @challenge
end

#checksumObject

Calculate Draft 76 checksum



47
48
49
# File 'lib/libwebsocket/message.rb', line 47

def checksum
  @checksum
end

#errorObject

Returns the value of attribute error.



8
9
10
# File 'lib/libwebsocket/message.rb', line 8

def error
  @error
end

#fieldsObject

Returns the value of attribute fields.



8
9
10
# File 'lib/libwebsocket/message.rb', line 8

def fields
  @fields
end

#hostObject

Returns the value of attribute host.



8
9
10
# File 'lib/libwebsocket/message.rb', line 8

def host
  @host
end

#number1Object

Returns the value of attribute number1.



8
9
10
# File 'lib/libwebsocket/message.rb', line 8

def number1
  @number1
end

#number2Object

Returns the value of attribute number2.



8
9
10
# File 'lib/libwebsocket/message.rb', line 8

def number2
  @number2
end

#originObject

Returns the value of attribute origin.



8
9
10
# File 'lib/libwebsocket/message.rb', line 8

def origin
  @origin
end

#subprotocolObject

Returns the value of attribute subprotocol.



8
9
10
# File 'lib/libwebsocket/message.rb', line 8

def subprotocol
  @subprotocol
end

#versionObject

Returns the value of attribute version.



8
9
10
# File 'lib/libwebsocket/message.rb', line 8

def version
  @version
end

Instance Method Details

#field(f, val = nil) ⇒ Object

Alias for fields. Use this instead of fields directly to preserve normalization(lowercase etc.)



30
31
32
33
34
35
36
37
38
# File 'lib/libwebsocket/message.rb', line 30

def field(f, val = nil)
  name = f.downcase

  return self.fields[name] unless val

  self.fields[name] = val

  return self
end

#parse(string) ⇒ Object

Parse string



66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
# File 'lib/libwebsocket/message.rb', line 66

def parse(string)
  return unless string.is_a?(String)

  return if self.error

  return unless self.append(string)

  while(!self.state?('body') && line = self.get_line)
    if self.state?('first_line')
      return unless self.parse_first_line(line)

      self.state = 'fields'
    elsif line != ''
      return unless self.parse_field(line)
    else
      self.state = 'body'
      break
    end
  end

  return true unless self.state?('body')

  rv = self.parse_body
  return unless rv

  # Need more data
  return rv unless rv != true

  return self.done
end