from request import PandaRequest from models import Video, Cloud, Encoding, Profile, Notifications, PandaDict from models import GroupRetriever, SingleRetriever from models import PandaError from upload_session import UploadSession import logging logging.getLogger(__name__).addHandler(logging.NullHandler()) class Panda(object): def __init__(self, access_key, secret_key, cloud_id=None, api_host='api.pandastream.com', api_port=443): self.cloud_id = cloud_id self.access_key = access_key self.secret_key = secret_key self.api_host = api_host self.api_port = api_port self.api_version = 2 self.videos = GroupRetriever(self, Video) self.clouds = GroupRetriever(self, Cloud) self.encodings = GroupRetriever(self, Encoding) self.profiles = GroupRetriever(self, Profile) self.notifications = SingleRetriever(self, Notifications) def credentials(self): cred = [ 'cloud_id', 'access_key', 'secret_key', 'api_host', 'api_port', 'api_version' ] return {key: self.__dict__[key] for key in cred } def get(self, request_path, params={}): return PandaRequest('GET', request_path, self.credentials(), params).send() def post(self, request_path, params={}): return PandaRequest('POST', request_path, self.credentials(), params).send() def put(self, request_path, params={}): return PandaRequest('PUT', request_path, self.credentials(), params).send() def delete(self, request_path, params={}): return PandaRequest('DELETE', request_path, self.credentials(), params).send() def signed_params(self, verb, path, timestamp=None, params={}): return PandaRequest(verb, path, self.credentials(), params, timestamp).signed_params() def upload_session(self, path, **kwargs): return UploadSession(self, path, **kwargs) def cloud_details(self): return SingleRetriever(self, PandaDict, "/clouds/{0}".format(self.cloud_id)).get()