class Grafana::Client

Attributes

api_instance[R]
debug[R]
headers[R]
logger[R]
session_cookies[R]

Public Class Methods

new(host="localhost", port=3000, user='admin', pass='', settings={}) click to toggle source
# File lib/grafana/client.rb, line 39
def initialize(host="localhost", port=3000, user='admin', pass='', settings={})

  if settings.has_key?('timeout') && settings['timeout'].to_i <= 0
    settings['timeout'] = 5
  end
  
  if settings.has_key?('open_timeout') && settings['open_timeout'].to_i <= 0
    settings['open_timeout'] = 5
  end

  if settings.has_key?('headers') && settings['headers'].class.to_s != 'Hash'
    settings['headers'] = {}
  end

  proto = ( settings.has_key?('ssl') && settings['ssl'] == true ? 'https' : 'http')
  
  @logger.info("Initializing API client #{proto}://#{host}:#{port}") if @debug
  @logger.info("Options: #{options}") if @debug
  
  @api_instance = RestClient::Resource.new(
    "#{proto}://#{host}:#{port}", 
    :timeout => settings['timeout'],
    :open_timeout => settings['open_timeout'],
    :headers => settings['headers']
  )
  @debug = (settings['debug'] ? true : false)
  @logger = Logger.new(STDOUT)
  @headers = nil

  self.login(user, pass)
  return self
end

Public Instance Methods

login(user='admin',pass='admin') click to toggle source
# File lib/grafana/client.rb, line 72
def login(user='admin',pass='admin')
  @logger.info("Attempting to establish user session") if @debug
  request_data = {'User' => user, 'Password' => pass}
  begin
    resp = @api_instance['/login'].post(
      request_data.to_json, 
      {:content_type => 'application/json; charset=UTF-8'}
    )
    @session_cookies = resp.cookies
    if resp.code.to_i == 200
      @headers = {
        :content_type => 'application/json; charset=UTF-8',
        :cookies => @session_cookies
      }
      return true
    else
      return false
    end
  rescue => e
    @logger.error("Error running POST request on /login: #{e}") if @debug
    @logger.error("Request data: #{request_data.to_json}") if @debug
    return false
  end
  @logger.info("User session initiated") if @debug
end