Sha256: 932fe10cea11a9311cfcdbab7e8944db3a69dd31088e256f66cfdc7bcfb3cbf8

Contents?: true

Size: 1.79 KB

Versions: 1

Compression:

Stored size: 1.79 KB

Contents

require 'faraday'
require 'time'
require 'always_verify_ssl_certificates'

module Papertrail
  class SearchClient
    def initialize(options)

      ssl_options = { :verify => OpenSSL::SSL::VERIFY_PEER }

      # Make Ubuntu OpenSSL work
      #
      # From: https://bugs.launchpad.net/ubuntu/+source/openssl/+bug/396818
      # "[OpenSSL] does not presume to select a set of CAs by default."
      if File.file?('/etc/ssl/certs/ca-certificates.crt')
        ssl_options[:ca_file] = '/etc/ssl/certs/ca-certificates.crt'
      end

      @conn = Faraday::Connection.new(:url => 'https://papertrailapp.com', :ssl => ssl_options) do |builder|
        if options[:username] && options[:password]
          builder.basic_auth(options[:username], options[:password])
        else
          builder.headers['X-Papertrail-Token'] = options[:token]
        end

        builder.adapter  Faraday.default_adapter
        builder.response :yajl
      end

      @max_id_seen = {}
    end

    # search for all events or a specific query, defaulting to all events since
    # last result set (call with since=0 for all).
    def search(q = nil, since = nil)
      response = @conn.get('/api/v1/events/search.json') do |r|
        r.params = params_for_query(q, since)
      end

      if response.body
        @max_id_seen[q] = response.body['max_id']
        response.body['events']
      end
    end

    def params_for_query(q = nil, since = nil)
      params = {}
      params[:q] = q if q
      params[:min_id] = @max_id_seen[q] if @max_id_seen[q]
      params[:min_id] = since if since
      params
    end

    def self.format_events(events, &block)
      events.each do |event|
        yield "#{Time.parse(event['received_at']).strftime('%b %e %X')} #{event['hostname']} #{event['program']} #{event['message']}"
      end
    end
  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
papertrail-cli-0.7.0 lib/papertrail/search_client.rb