class LogStash::Outputs::HipChat

This output allows you to write events to [HipChat](www.hipchat.com/).

Public Instance Methods

encode(hash) click to toggle source

shamelessly lifted this from the LogStash::Outputs::Http, I'd rather put this in a common place for both to use, but unsure where that place is or should be

# File lib/logstash/outputs/hipchat.rb, line 74
def encode(hash)
  return hash.collect do |key, value|
    CGI.escape(key) + "=" + CGI.escape(value)
  end.join("&")
end
receive(event) click to toggle source
# File lib/logstash/outputs/hipchat.rb, line 44
def receive(event)
  return unless output?(event)

  hipchat_data = Hash.new
  hipchat_data['room_id'] = @room_id
  hipchat_data['from']    = @from
  hipchat_data['color']   = @color
  hipchat_data['notify']  = @trigger_notify ? "1" : "0"
  hipchat_data['message'] = event.sprintf(@format)

  @logger.debug("HipChat data", :hipchat_data => hipchat_data)

  begin
    request = @agent.post(@url)
    request["Content-Type"] = @content_type
    request.body = encode(hipchat_data)

    response = @agent.execute(request)

    # Consume body to let this connection be reused
    rbody = ""
    response.read_body { |c| rbody << c }
    #puts rbody
  rescue Exception => e
    @logger.warn("Unhandled exception", :request => request, :response => response, :exception => e, :stacktrace => e.backtrace)
  end
end
register() click to toggle source
# File lib/logstash/outputs/hipchat.rb, line 33
def register
  require "ftw"
  require "uri"

  @agent = FTW::Agent.new

  @url = "https://api.hipchat.com/v1/rooms/message?auth_token=" + @token
  @content_type = "application/x-www-form-urlencoded"
end