class Daikon::Client

Constants

EXCEPTIONS

Attributes

config[RW]
http[RW]
logger[RW]
monitor[RW]
redis[RW]

Public Instance Methods

connect() click to toggle source
# File lib/daikon/client.rb, line 22
def connect
  Redis.connect(:url => config.redis_url)
end
exception(error) click to toggle source
# File lib/daikon/client.rb, line 34
def exception(error)
  log error.to_s
  error.backtrace.each do |line|
    log line
  end
end
log(message) click to toggle source
# File lib/daikon/client.rb, line 30
def log(message)
  logger.info message if logger
end
push(method, path, body) click to toggle source
# File lib/daikon/client.rb, line 51
def push(method, path, body)
  json = body.to_json
  request(method, path,
               :body    => json,
               :headers => {"Content-Length" => json.size.to_s,
                            "Content-Type"   => "application/json"})
end
report_info() click to toggle source
# File lib/daikon/client.rb, line 70
def report_info
   push :post, "/api/v1/infos.json", redis.info
rescue *EXCEPTIONS => ex
  log "Error when reporting info"
  exception(ex)
end
request(method, path, options = {}) click to toggle source
# File lib/daikon/client.rb, line 41
def request(method, path, options = {})
  options[:method]  = method.to_s.upcase
  options[:path]    = path
  options[:headers] ||= {}
  options[:headers]['Authorization'] = config.api_key

  http.reset
  http.request(options)
end
rotate_monitor(start, stop) click to toggle source
# File lib/daikon/client.rb, line 59
def rotate_monitor(start, stop)
  payload = monitor.rotate.merge({
    "created_at" => stop
  })

  push :post, "/api/v1/summaries.json", payload
rescue *EXCEPTIONS => ex
  log "Error when rotating monitor"
  exception(ex)
end
setup(config, logger = nil) click to toggle source
# File lib/daikon/client.rb, line 12
def setup(config, logger = nil)
  self.config  = config
  self.logger  = logger
  self.redis   = connect
  self.monitor = Monitor.new(connect, logger)
  self.http    = Excon.new(config.server_prefix)

  log "Started Daikon v#{VERSION}"
end
start_monitor() click to toggle source
# File lib/daikon/client.rb, line 26
def start_monitor
  monitor.start
end