class DreddHooks::Server::Buffer

Store JSON messages or part of them

Public Class Methods

new(message_delimiter) click to toggle source
# File lib/dredd_hooks/server/buffer.rb, line 9
def initialize(message_delimiter)
  flush!
  @message_delimiter = message_delimiter
end

Public Instance Methods

<<(string) click to toggle source
# File lib/dredd_hooks/server/buffer.rb, line 23
def <<(string)
  @content += string
end
any_message?() click to toggle source
# File lib/dredd_hooks/server/buffer.rb, line 27
def any_message?
  @content.include? @message_delimiter
end
flush!() click to toggle source

Empty the buffer.

Returns the buffer content String.

# File lib/dredd_hooks/server/buffer.rb, line 17
def flush!
  content = @content
  @content = ""
  content
end
unshift_messages() click to toggle source
# File lib/dredd_hooks/server/buffer.rb, line 31
def unshift_messages
  flush!.
  split(@message_delimiter).
  inject([]) { |messages, message|
    begin
      messages.push JSON.parse(message)
    rescue JSON::ParserError
      # If the message after the delimiter is not parseable JSON,
      # then it's a chunk of the next message, and should be put back
      # into the buffer.
      @content += message
      messages
    end
  }
end