Skip to content
Snippets Groups Projects
Resource.py 2.89 KiB
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/",
    "folders": "/rest/folders/",
    "files": "/rest/files/",
    "images": "/rest/images/",
    "enrichments": "/rest/enrichments/",
    "buildings": "/rest/buildings/",
    "broadcasters": "/rest/broadcasters/"
}


class Resource:
    host_url = ''
    name = ''
    api_key = ''
    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 = '%s/%s' % (self.host_url, API_URLS[self.name])
        if resource_id:
            url = '%s/%s' % (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,
                requests.URLRequired) as e:
            logging.error(e)
            return
        return response

    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)