module Salt::Api::Events

Public Instance Methods

events() { |parse(split("data: ", 2).last)| ... } click to toggle source
# File lib/salt/api/events.rb, line 6
def events(&block)
  buffer = ""
  raw_events do |data|
    buffer += data

    while buffer.match("\n")
      event, buffer = buffer.split("\n", 2)
      if event.start_with? "data: "
        yield(JSON.parse(event.split("data: ", 2).last))
      end
    end
  end
end

Private Instance Methods

raw_events() { |chunk| ... } click to toggle source
# File lib/salt/api/events.rb, line 22
def raw_events(&block)
  req = Net::HTTP::Get.new("/events")
  req['X-Auth-Token'] = token
  req['Accept'] = "application/x-yaml"
  client.request(req) do |response|
    raise "Get request to /events failed (#{response})" unless response.kind_of? Net::HTTPSuccess

    response.read_body do |chunk|
      yield(chunk)
    end
  end
rescue Errno::ETIMEDOUT, Net::OpenTimeout => e
  e
end