Newer
Older
#!/usr/bin/env python3
# -*- coding: utf-8 -*-
import requests
import logging
API_URLS = {
'users': '/rest/users/',
'groups': '/rest/groups/',
'owners': '/rest/owners/',
'channels': '/rest/channels/',
'themes': '/rest/themes/',
'types': '/rest/types/',
'discipline': '/rest/discipline/',
'videos': '/rest/videos/',
'renditions': '/rest/renditions/',
'encodings_video': '/rest/encodings_video/',
'encodings_audio': '/rest/encodings_audio/',
'playlist_videos': '/rest/playlist_videos/',
'contributors': '/rest/contributors/',
'documents': '/rest/documents/',
'tracks': '/rest/tracks/',
'overlays': '/rest/overlays/',
'chapters': '/rest/chapters/',
'recording': '/rest/recording/',
'recordingfile': '/rest/recordingfile/',
#'enrichments': '/rest/enrichments/', seems not available in rest api
#'buildings': '/rest/buildings/',
#'broadcasters': '/rest/broadcasters/'
if os.environ.get('POD_CLIENT_USE_POD_FILE'):
# specific rest urls only available if USE_PODFILE is set in pod settings file
API_URLS['folders'] = '/rest/folders/'
API_URLS['files'] = '/rest/files/'
API_URLS['images'] = '/rest/images/'
class Resource:
host_url = ''
name = ''
def __init__(self, host_url, api_key, resource_name):
self.host_url = host_url
if not self.host_url:
raise Exception('Pod host url required')
self.api_key = api_key
if not self.api_key:
raise Exception('Pod api key missing')
self.name = resource_name
if not API_URLS.get(self.name):
raise Exception('Resource url not supported')
def _request(self, method='GET', resource_id=None, headers={}, params={}, data={}, **request_params):
url = self.url(resource_id)
headers['Authorization'] = 'Token %s' % self.api_key
response = requests.request(method, url, headers=headers, params=params, data=data, **request_params)
except (requests.RequestException,
requests.ConnectionError,
requests.HTTPError,
logging.error(e)
return
return response
def url(self, resource_id=None):
url = '%s/%s/' % (self.host_url, API_URLS[self.name])
if resource_id:
url = '%s%s/' % (url, resource_id)
return url
def get(self, resource_id=None, data=None, **request_params):
return self._request('GET', resource_id=resource_id, params=data, **request_params)
def post(self, resource_id=None, data=None, **request_params):
return self._request('POST', resource_id=resource_id, data=data, **request_params)
def put(self, resource_id=None, data=None, **request_params):
return self._request('PUT', resource_id=resource_id, data=data, **request_params)
def patch(self, resource_id=None, data=None, **request_params):
return self._request('PATCH', resource_id=resource_id, data=data, **request_params)
def delete(self, resource_id=None, data=None, **request_params):
return self._request('DELETE', resource_id=resource_id, data=data, **request_params)