Advertisement
Guest User

fiken?

a guest
Jul 20th, 2018
109
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 2.12 KB | None | 0 0
  1. from exceptions import *
  2. from json import loads as _loads
  3. import requests
  4.  
  5. import datetime
  6.  
  7. PRIVATE_COMMANDS = ['whoAmI']
  8.  
  9. class FikenConnectError(Exception):
  10.     def __init__(self, err):
  11.         if err == 415:
  12.             raise HTTP415
  13.         elif err == 405:
  14.             raise HTTP405
  15.         elif err == 404:
  16.             raise HTTP404
  17.         elif err == 403:
  18.             raise HTTP403
  19.         elif err == 401:
  20.             raise HTTP401
  21.         elif err == 400:
  22.             raise HTTP400
  23.  
  24. class FikenConnect(object):
  25.     def __init__(self,
  26.                  username=None,
  27.                  password=None,
  28.                  timeout=5,
  29.                  debug_endpoint=False):
  30.  
  31.         self.username = str(username) if username else None
  32.         self.password = str(password) if password else None
  33.  
  34.         self.timeout = timeout
  35.         self.debug_endpoint = debug_endpoint
  36.         self.base_url = 'https://fiken.no/api/v1/'
  37.  
  38.         self.data = None
  39.         self.filtered_data = None
  40.         self.session = requests.Session()
  41.  
  42.     def __call__(self, command):
  43.         self.base_url = 'https://fiken.no/api/v1/'
  44.         if command in PRIVATE_COMMANDS:
  45.             if not self.username or not self.password:
  46.                 raise FikenConnectError("Username and Password needed!")
  47.             url = self.base_url + '{}?'.format(command)
  48.  
  49.             if self.debug_endpoint:
  50.                 print(url)
  51.  
  52.             headers = {
  53.                 'Content Type': 'application/json',
  54.                 'Accept': 'application/hal+json'
  55.             }
  56.             self.session.auth = (self.username, self.password)
  57.             self.session.headers = headers
  58.  
  59.             # post request
  60.             ret = self.session.get(url, timeout=self.timeout)
  61.  
  62.             if ret.status_code != 200:
  63.                 raise FikenConnectError("Status Code: %s" % ret.status_code)
  64.                 return None
  65.             else:
  66.                json_out = _loads(ret.content.decode('utf-8'))
  67.                return json_out
  68.  
  69.     def test_connection(self):
  70.         self.data = self.__call__('whoAmI')
  71.         return self.data
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement