text: # -*- coding: utf-8 -*-
  """
  Display the latest response time of the configured Pingdom checks.
  
  We also verify the status of the checks and colorize if needed.
  Pingdom API doc : https://www.pingdom.com/features/api/documentation/
  
  Configuration parameters:
      app_key: create an APP KEY on pingdom first
      cache_timeout: how often to refresh the check from pingdom
      checks: comma separated pindgom check names to display
      login: pingdom login
      max_latency: maximal latency before coloring the output
      password: pingdom password
      request_timeout: pindgom API request timeout
  
  Requires:
      requests: python module from pypi
          https://pypi.python.org/pypi/requests
  """
  
  import requests
  from time import time
  
  
  class Py3status:
      """
      """
      # available configuration parameters
      app_key = ''
      cache_timeout = 600
      checks = ''
      login = ''
      max_latency = 500
      password = ''
      request_timeout = 15
  
      def pingdom_checks(self, i3s_output_list, i3s_config):
          response = {'full_text': ''}
  
          # parse some configuration parameters
          if not isinstance(self.checks, list):
              self.checks = self.checks.split(',')
  
          r = requests.get(
              'https://api.pingdom.com/api/2.0/checks',
              auth=(self.login, self.password),
              headers={'App-Key': self.app_key},
              timeout=self.request_timeout,
          )
          result = r.json()
          if 'checks' in result:
              for check in [
                  ck for ck in result['checks'] if ck['name'] in self.checks
              ]:
                  if check['status'] == 'up':
                      response['full_text'] += '{}: {}ms, '.format(
                          check['name'],
                          check['lastresponsetime']
                      )
                      if check['lastresponsetime'] > self.max_latency:
                          response.update(
                              {'color': i3s_config['color_degraded']}
                          )
                  else:
                      response['full_text'] += '{}: DOWN'.format(
                          check['name'],
                          check['lastresponsetime']
                      )
                      response.update({'color': i3s_config['color_bad']})
              response['full_text'] = response['full_text'].strip(', ')
              response['cached_until'] = time() + self.cache_timeout
  
          return response
  
  if __name__ == "__main__":
      """
      Test this module by calling it directly.
      """
      from time import sleep
      x = Py3status()
      config = {
          'color_good': '#00FF00',
          'color_bad': '#FF0000',
      }
      while True:
          print(x.pingdom_checks([], config))
          sleep(1)
  