Class: Simultaneous::BroadcastMessage
- Inherits:
-
Object
- Object
- Simultaneous::BroadcastMessage
- Defined in:
- lib/simultaneous/broadcast_message.rb
Instance Attribute Summary collapse
-
#domain ⇒ Object
Returns the value of attribute domain.
-
#event ⇒ Object
Returns the value of attribute event.
-
#id ⇒ Object
Returns the value of attribute id.
Instance Method Summary collapse
- #<<(line) ⇒ Object
- #data ⇒ Object
- #data=(data) ⇒ Object
- #event_content ⇒ Object
-
#initialize(values = {}) ⇒ BroadcastMessage
constructor
A new instance of BroadcastMessage.
- #next_id ⇒ Object
- #to_event ⇒ Object
- #to_sse ⇒ Object
- #valid? ⇒ Boolean
Constructor Details
#initialize(values = {}) ⇒ BroadcastMessage
Returns a new instance of BroadcastMessage.
8 9 10 11 12 13 14 15 16 |
# File 'lib/simultaneous/broadcast_message.rb', line 8 def initialize(values = {}) @domain = (values[:domain] || values["domain"]) @event = nil if (event = (values[:event] || values["event"])) and !event.empty? self.event = event end self.data = (values[:data] || values["data"] || "") self.id = (values[:id] || next_id) end |
Instance Attribute Details
#domain ⇒ Object
Returns the value of attribute domain.
5 6 7 |
# File 'lib/simultaneous/broadcast_message.rb', line 5 def domain @domain end |
#event ⇒ Object
Returns the value of attribute event.
6 7 8 |
# File 'lib/simultaneous/broadcast_message.rb', line 6 def event @event end |
#id ⇒ Object
Returns the value of attribute id.
5 6 7 |
# File 'lib/simultaneous/broadcast_message.rb', line 5 def id @id end |
Instance Method Details
#<<(line) ⇒ Object
34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 |
# File 'lib/simultaneous/broadcast_message.rb', line 34 def <<(line) data = line.chomp case data when /^domain: *(.+)/ self.domain = $1 when /^event: *(.+)/ self.event = $1 when /^id: *(.+)/ @id = $1 when /^data: *(.*)/ @data << $1 when /^:/ # comment else # malformed request end end |
#data ⇒ Object
30 31 32 |
# File 'lib/simultaneous/broadcast_message.rb', line 30 def data @data.join("\n").chomp end |
#data=(data) ⇒ Object
26 27 28 |
# File 'lib/simultaneous/broadcast_message.rb', line 26 def data=(data) @data = data.split(/\r\n?|\n\r?/) end |
#event_content ⇒ Object
66 67 68 69 70 |
# File 'lib/simultaneous/broadcast_message.rb', line 66 def event_content lines = ["event: #{event}", "id: #{id}"] lines.concat(@data.map { |l| "data: #{l}" }) lines.push("\n") end |
#next_id ⇒ Object
18 19 20 |
# File 'lib/simultaneous/broadcast_message.rb', line 18 def next_id SecureRandom.uuid end |
#to_event ⇒ Object
56 57 58 59 60 |
# File 'lib/simultaneous/broadcast_message.rb', line 56 def to_event lines = ["domain: #{domain}"] lines.concat(event_content) lines.join("\n") end |
#to_sse ⇒ Object
62 63 64 |
# File 'lib/simultaneous/broadcast_message.rb', line 62 def to_sse event_content.join("\n") end |
#valid? ⇒ Boolean
52 53 54 |
# File 'lib/simultaneous/broadcast_message.rb', line 52 def valid? @domain && @event && !@data.empty? end |