示例#1
0
class Storage(UizaBase):
    def __init__(self):
        self.connection = Connection(
            workspace_api_domain=uiza.workspace_api_domain,
            api_key=uiza.authorization)
        self.connection.url = set_url(
            workspace_api_domain=self.connection.workspace_api_domain,
            api_type=settings.uiza_api.storage.type,
            api_version=settings.uiza_api.storage.version,
            api_sub_url=settings.uiza_api.storage.sub_url)

    def list(self, **params):
        """
        Override method list of Uizabase
        :param params:
        """
        raise ClientException('Storage list method not found')

    def create(self, **data):
        """
        Override method create of Uizabase
        :param params:
        """
        raise ClientException('Storage create method not found')

    def delete(self, id):
        """
        Override method create of Uizabase
        :param params:
        """
        raise ClientException('Storage delete method not found')

    def add(self, **data):
        """
        Add storage
        :param data: data body will be created
        """
        data_body = dict(appId=uiza.app_id)
        data_body.update(data)
        result = self.connection.post(data=data_body)
        try:
            query = self.url_encode(params={
                'id': result[0].id,
                'appId': uiza.app_id
            }, )
            result = self.connection.get(query=query)
        except Exception:
            pass

        return result

    def remove(self, id):
        """
        Remove storage
        :param id: id of storage
        """
        result = self.connection.delete(dict(id=id, appId=uiza.app_id))

        return result
示例#2
0
 def __init__(self):
     self.connection = Connection(
         workspace_api_domain=uiza.workspace_api_domain,
         api_key=uiza.authorization)
     self.connection.url = set_url(
         workspace_api_domain=self.connection.workspace_api_domain,
         api_type=settings.uiza_api.livestreaming.type,
         api_version=settings.uiza_api.livestreaming.version,
         api_sub_url=settings.uiza_api.livestreaming.sub_url)
示例#3
0
class User(UizaBase):
    def __init__(self):
        self.connection = Connection(
            workspace_api_domain=uiza.workspace_api_domain,
            api_key=uiza.authorization)
        self.connection.url = set_url(
            workspace_api_domain=self.connection.workspace_api_domain,
            api_type=settings.uiza_api.user.type,
            api_version=settings.uiza_api.user.version,
            api_sub_url=settings.uiza_api.user.sub_url)

    def create(self, **data):
        """
        Override method create of Uizabase
        :param params:
        """
        raise ClientException('User create method not found')

    def delete(self, id):
        """
        Override method create of Uizabase
        :param params:
        """
        raise ClientException('User delete method not found')

    def change_password(self, user_id, old_password, new_password):
        """
        Change password allows Admin or User update their current password.
        :param user_id: identifier of user need reset password
        :param old_password: current password
        :param new_password: new password (from a to Z, 6 to 25 characters)
        """
        self.connection.url = '{}/changePassword'.format(self.connection.url)
        data_body = dict(userId=user_id,
                         appId=uiza.app_id,
                         oldPassword=old_password,
                         newPassword=new_password)
        data = self.connection.post(data=data_body)

        return data

    def logout(self):
        """
        Log out an user
        """
        self.connection.url = '{}/logout'.format(self.connection.url)
        data = self.connection.post()

        return data
示例#4
0
 def __init__(self):
     self.connection = Connection(workspace_api_domain=uiza.workspace_api_domain, api_key=uiza.authorization)
     self.connection.url = set_url(
         workspace_api_domain=self.connection.workspace_api_domain,
         api_type=settings.uiza_api.category.type,
         api_version=settings.uiza_api.category.version,
         api_sub_url=settings.uiza_api.category.sub_url
     )
     self.category_relation_entity_url = set_url(
         workspace_api_domain=self.connection.workspace_api_domain,
         api_type=settings.uiza_api.category.type,
         api_version=settings.uiza_api.category.version,
         api_sub_url='media/metadata/related/entity'
     )
     self.category_relation_metadata_url = set_url(
         workspace_api_domain=self.connection.workspace_api_domain,
         api_type=settings.uiza_api.category.type,
         api_version=settings.uiza_api.category.version,
         api_sub_url='media/entity/related/metadata'
     )
示例#5
0
class Live(UizaBase):
    def __init__(self):
        self.connection = Connection(
            workspace_api_domain=uiza.workspace_api_domain,
            api_key=uiza.authorization)
        self.connection.url = set_url(
            workspace_api_domain=self.connection.workspace_api_domain,
            api_type=settings.uiza_api.livestreaming.type,
            api_version=settings.uiza_api.livestreaming.version,
            api_sub_url=settings.uiza_api.livestreaming.sub_url)

    def list(self, **params):
        """
        Override method list of Uizabase
        :param params:
        """
        raise ClientException('Livestreaming list method not found')

    def get_regions(self):
        self.connection.url = set_url(
            workspace_api_domain=self.connection.workspace_api_domain,
            api_type=settings.uiza_api.livestreaming.type,
            api_version=settings.uiza_api.livestreaming.version,
            api_sub_url=settings.uiza_api.livestreaming.live_url) + "/region"
        result = self.connection.get()

        return result

    def start_feed(self, id):
        """
        Start a live event
        :param id: identifier of event.
        """
        self.connection.url = '{}/feed'.format(self.connection.url)
        result = self.connection.post(dict(id=id, appId=uiza.app_id))

        return result

    def stop_feed(self, id):
        """
        Stop a live event
        :param id: identifier of event.
        """
        self.connection.url = '{}/feed'.format(self.connection.url)
        result = self.connection.put(dict(id=id, appId=uiza.app_id))

        return result

    def get_view(self, id):
        """
        Get a live view status
        :param id: event id has been created
        """
        self.connection.url = '{}/tracking/current-view'.format(
            self.connection.url)
        query = self.url_encode(params={'id': id, 'appId': uiza.app_id})
        result = self.connection.get(query=query)

        return result

    def list_recorded(self, id=None):
        """
        List of recorded file after streamed
        """
        self.connection.url = '{}/dvr'.format(self.connection.url)
        params = dict(appId=uiza.app_id)
        params.update(dict(id=id)) if id else params
        query = self.url_encode(params=params)
        result = self.connection.get(query=query)

        return result

    def convert_into_vod(self, id):
        """
        Convert recorded file into VOD entity
        :param id: identifier of record (get from list record)
        """
        self.connection.url = '{}/dvr/convert-to-vod'.format(
            self.connection.url)
        result = self.connection.post(dict(id=id, appId=uiza.app_id))

        return result

    def delete(self, id):
        """
        Delete a recorded file
        :param id: identifier of record (get from list record)
        """
        self.connection.url = '{}/dvr'.format(self.connection.url)
        result = self.connection.delete(dict(id=id, appId=uiza.app_id))

        return result
示例#6
0
class Category(UizaBase):

    def __init__(self):
        self.connection = Connection(workspace_api_domain=uiza.workspace_api_domain, api_key=uiza.authorization)
        self.connection.url = set_url(
            workspace_api_domain=self.connection.workspace_api_domain,
            api_type=settings.uiza_api.category.type,
            api_version=settings.uiza_api.category.version,
            api_sub_url=settings.uiza_api.category.sub_url
        )
        self.category_relation_entity_url = set_url(
            workspace_api_domain=self.connection.workspace_api_domain,
            api_type=settings.uiza_api.category.type,
            api_version=settings.uiza_api.category.version,
            api_sub_url='media/metadata/related/entity'
        )
        self.category_relation_metadata_url = set_url(
            workspace_api_domain=self.connection.workspace_api_domain,
            api_type=settings.uiza_api.category.type,
            api_version=settings.uiza_api.category.version,
            api_sub_url='media/entity/related/metadata'
        )

    def create_relation(self, entity_id, metadata_ids):
        """
        Create relation for entity and category
        :param entity_id: identifier of entity
        :param metadata_ids: identifier of category
        """
        self.connection.url = self.category_relation_metadata_url
        data_body = dict(
            entityId=entity_id,
            metadataIds=metadata_ids,
            appId=uiza.app_id
        )
        result = self.connection.post(data_body)

        return result

    def create_relation_entity(self, entity_ids, metadata_id):
        """
        Create relation for entity and category
        :param entity_ids: identifier of entity
        :param metadata_id: identifier of category
        """
        self.connection.url = self.category_relation_entity_url
        data_body = dict(
            entityIds=entity_ids,
            metadataId=metadata_id,
            appId=uiza.app_id
        )
        result = self.connection.post(data_body)

        return result

    def delete_relation(self, entity_id, metadata_ids):
        """
        Delete relation for entity and category
        :param entity_id: identifier of entity
        :param metadata_ids: identifier of category
        """
        self.connection.url = self.category_relation_metadata_url
        data_body = dict(
            entityId=entity_id,
            metadataIds=metadata_ids,
            appId=uiza.app_id
        )
        result = self.connection.delete(data_body)

        return result

    def delete_relation_entity(self, entity_ids, metadata_id):
        """
        Delete relation for entity and category
        :param entity_ids: identifier of entity
        :param metadata_id: identifier of category
        """
        self.connection.url = self.category_relation_entity_url
        data_body = dict(
            entityIds=entity_ids,
            metadataId=metadata_id,
            appId=uiza.app_id
        )
        result = self.connection.delete(data_body)

        return result
示例#7
0
class Entity(UizaBase):
    def __init__(self):
        self.connection = Connection(
            workspace_api_domain=uiza.workspace_api_domain,
            api_key=uiza.authorization)
        self.connection.url = set_url(
            workspace_api_domain=self.connection.workspace_api_domain,
            api_type=settings.uiza_api.entity.type,
            api_version=settings.uiza_api.entity.version,
            api_sub_url=settings.uiza_api.entity.sub_url)

    def search(self, keyword):
        """
        Search entity base on keyword entered
        :param keyword: keyword for search entity
        """
        self.connection.url = '{}/search'.format(self.connection.url)
        params = dict(keyword=keyword, appId=uiza.app_id)
        query = self.url_encode(params=params)
        data = self.connection.get(query=query)

        return data

    def generate_iframe(self, entityId, api):
        """
        Generate iframe entity base on keyword entered
        :param entityId: id of entity
        :param api: api iframe
        """
        self.connection.url = '{}/iframe'.format(self.connection.url)
        params = dict(entityId=entityId, api=api, appId=uiza.app_id)
        query = self.url_encode(params=params)
        data = self.connection.get(query=query)

        return data

    def publish(self, id):
        """
        Publish entity to CDN, use for streaming
        :param id: identifier of entity
        """
        self.connection.url = '{}/publish'.format(self.connection.url)
        data = self.connection.post(data={'id': id, 'appId': uiza.app_id})

        return data

    def get_status_publish(self, id):
        """
        Get status publish entity
        :param id: identifier of entity
        """
        self.connection.url = '{}/publish/status'.format(self.connection.url)
        query = self.url_encode(params={'id': id, 'appId': uiza.app_id})
        data = self.connection.get(query=query)

        return data

    def get_media_tracking(self, **kwargs):
        """
        Get media tracking
        :param progress: progress of entity. This is optional
        """
        self.connection.url = '{}/tracking'.format(self.connection.url)
        params = dict(appId=uiza.app_id)
        if kwargs:
            params.update(kwargs)
        query = self.url_encode(params=params)
        data = self.connection.get(query=query)

        return data

    def get_media_upload_detail(self, id):
        """
        Get media upload detail
        :param id: identifier of entity
        """
        self.connection.url = '{}/tracking'.format(self.connection.url)
        query = self.url_encode(params={'id': id, 'appId': uiza.app_id})
        data = self.connection.get(query=query)

        return data

    def get_aws_upload_key(self):
        """
        Return the bucket temporary upload storage & key for upload
        :param appId: appId
        """
        aws_sub_url = 'admin/app/config/aws'
        self.connection.url = set_url(
            workspace_api_domain=self.connection.workspace_api_domain,
            api_type=settings.uiza_api.entity.type,
            api_version=settings.uiza_api.entity.version,
            api_sub_url=aws_sub_url)
        query = self.url_encode(params={'appId': uiza.app_id})
        data = self.connection.get(query=query)

        return data