File size: 2,093 Bytes
8070315
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
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()