#!/usr/bin/python
import requests
import base64

class ElasticsearchApi:
  def __init__(self, url, user, password):
    self.url     = url
    self.headers = {}
    if user and password:
      token = base64.b64encode('{}:{}',)
      self.headers = { 'Authorization': 'Basic ' + base64.b64encode({},) }

  def get(self, path):
    r = requests.get(
      '{}/{}'.format(self.url, path),
      headers=self.headers
    )

    if r.status_code == 500:
      raise Exception('Server return 500 error: {}'.format(r.text))
    elif r.status_code == 401:
      raise Exception('Authentification has failed')
      
    return r.status_code, r.json()

  def put(self, path, data):
    r = requests.put(
      '{}/{}'.format(self.url, path),
      headers=self.headers,
      json=data
    )
    
    if r.status_code == 500:
      raise Exception('Server return 500 error: {}'.format(r.text))
    elif r.status_code == 401:
      raise Exception('Authentification has failed')
    elif r.status_code != 200:
      raise Exception('Server return an unknown error: {}'.format(r.text))