Пример #1
0
    def add_content_protection_to_drm_fmp4_represenation(
            self, object_, manifest_id, period_id, adaptationset_id,
            representation_id):
        if not isinstance(object_, ContentProtection):
            raise InvalidTypeError(
                'object_ has to be an instance of {}'.format(
                    ContentProtection.__name__))

        url = self.relative_url
        if not url.endswith('/'):
            url += '/'

        url = urljoin(
            url,
            '{}/periods/{}/adaptationsets/{}/representations/fmp4/drm/{}/contentprotection'
            .format(manifest_id, period_id, adaptationset_id,
                    representation_id))

        response = self.http_client.post(url, object_)  # type: Response

        if response.status == Status.ERROR.value:
            raise BitmovinApiError(
                'Response was not successful: {}'.format(
                    response.raw_response), response)

        if response.status == Status.SUCCESS.value:
            created_resource = self.parsing_utils.parse_bitmovin_resource_from_response(
                response=response, class_=ContentProtection)
            return ResourceResponse(response=response,
                                    resource=created_resource)

        raise InvalidStatusError('Unknown status {} received'.format(
            response.status))
Пример #2
0
    def add_video_adaptation_set(self, object_, manifest_id, period_id):
        if not isinstance(object_, VideoAdaptationSet):
            raise InvalidTypeError(
                'object_ has to be an instance of {}'.format(
                    VideoAdaptationSet.__name__))

        url = self.relative_url
        if not url.endswith('/'):
            url += '/'

        url = urljoin(
            url, '{}/periods/{}/adaptationsets/video'.format(
                manifest_id, period_id))
        response = self.http_client.post(url, object_)  # type: Response

        if response.status == Status.ERROR.value:
            raise BitmovinApiError(
                'Response was not successful: {}'.format(
                    response.raw_response), response)

        if response.status == Status.SUCCESS.value:
            created_resource = self.parsing_utils.parse_bitmovin_resource_from_response(
                response=response, class_=VideoAdaptationSet)
            return ResourceResponse(response=response,
                                    resource=created_resource)

        raise InvalidStatusError('Unknown status {} received'.format(
            response.status))
Пример #3
0
    def retrieve_live(self, encoding_id):
        self.parsing_utils.check_arg_valid_uuid(encoding_id)
        url = self.relative_url + '/{}/live'.format(encoding_id)
        response = self.http_client.get(url)

        if response.status == Status.ERROR.value:
            raise BitmovinApiError('Response was not successful', response)
        if response.status == Status.SUCCESS.value:
            created_resource = self.parsing_utils.parse_bitmovin_resource_from_response(
                response=response, class_=EncodingLiveDetails)
            return ResourceResponse(response=response,
                                    resource=created_resource)
        raise InvalidStatusError('Unknown status {} received'.format(
            response.status))
Пример #4
0
    def stop_live(self, encoding_id):
        self.parsing_utils.check_arg_valid_uuid(encoding_id)
        url = self.relative_url + '/{}/live/stop'.format(encoding_id)
        response = self.http_client.post_empty_body(url)

        if response.status == Status.ERROR.value:
            raise BitmovinApiError('Response was not successful', response)
        if response.status == Status.SUCCESS.value:
            created_resource = self.parsing_utils.parse_bitmovin_minimal_model_from_response(
                response=response)
            return ResourceResponse(response=response,
                                    resource=created_resource)
        raise InvalidStatusError('Unknown status {} received'.format(
            response.status))
Пример #5
0
    def create_without_check(self, object_):
        response = self.http_client.post(self.relative_url,
                                         object_)  # type: Response

        if response.status == Status.ERROR.value:
            raise BitmovinApiError(
                'Response was not successful: {}'.format(
                    response.raw_response), response)

        if response.status == Status.SUCCESS.value:
            return None

        raise InvalidStatusError('Unknown status {} received'.format(
            response.status))
Пример #6
0
    def list_analyses(self, input_id, offset=0, limit=100):
        url = '{}/{}/analysis?offset={}&limit={}'.format(
            self.relative_url, input_id, offset, limit)
        response = self.http_client.get(url)

        if response.status == Status.ERROR.value:
            raise BitmovinApiError('Response was not successful', response)

        if response.status == Status.SUCCESS.value:
            details_list = self.parsing_utils.parse_bitmovin_resource_list_from_response(
                response=response, class_=AnalysisDetails)
            return ResourceResponse(response=response, resource=details_list)

        raise InvalidStatusError('Unknown status {} received'.format(
            response.status))
Пример #7
0
    def delete(self, id_):
        self.parsing_utils.check_arg_valid_uuid(argument=id_)
        url = '{}/{}'.format(self.relative_url, id_)
        response = self.http_client.delete(url)

        if response.status == Status.ERROR.value:
            raise BitmovinApiError('Response was not successful', response)

        if response.status == Status.SUCCESS.value:
            retrieved_resource = self.parsing_utils.parse_bitmovin_minimal_model_from_response(
                response=response)
            return ResourceResponse(response=response,
                                    resource=retrieved_resource)

        raise InvalidStatusError('Unknown status {} received'.format(
            response.status))
Пример #8
0
    def retrieve_analysis_custom_data(self, input_id, analysis_id):
        self.parsing_utils.check_arg_valid_uuid(argument=input_id)
        self.parsing_utils.check_arg_valid_uuid(argument=analysis_id)
        url = '{}/{}/analysis/{}/customData'.format(self.relative_url,
                                                    input_id, analysis_id)
        response = self.http_client.get(url)

        if response.status == Status.ERROR.value:
            raise BitmovinApiError('Response was not successful', response)

        if response.status == Status.SUCCESS.value:
            retrieved_resource = self.parsing_utils.parse_bitmovin_resource_from_response(
                response=response, class_=CustomData)
            return ResourceResponse(response=response,
                                    resource=retrieved_resource)

        raise InvalidStatusError('Unknown status {} received'.format(
            response.status))
    def retrieve_information(self, encoding_id, muxing_id):
        self.parsing_utils.check_arg_valid_uuid(argument=muxing_id)
        self.relative_url = self._get_endpoint_url(encoding_id=encoding_id)
        url = self.relative_url + '/{}/information'.format(muxing_id)

        response = self.http_client.get(url)

        if response.status == Status.ERROR.value:
            raise BitmovinApiError('Response was not successful', response)

        if response.status == Status.SUCCESS.value:
            retrieved_resource = self.parsing_utils.parse_bitmovin_resource_from_response(
                response=response, class_=ProgressiveTSInformation)
            return ResourceResponse(response=response,
                                    resource=retrieved_resource)

        raise InvalidStatusError('Unknown status {} received'.format(
            response.status))
Пример #10
0
    def start_live(self, encoding_id,
                   live_stream_configuration: LiveStreamConfiguration):
        self.parsing_utils.check_arg_valid_uuid(encoding_id)
        self.parsing_utils.check_not_none(live_stream_configuration)
        self.parsing_utils.check_not_blank(live_stream_configuration.streamKey)

        url = self.relative_url + '/{}/live/start'.format(encoding_id)

        response = self.http_client.post(url, live_stream_configuration)

        if response.status == Status.ERROR.value:
            raise BitmovinApiError('Response was not successful', response)
        if response.status == Status.SUCCESS.value:
            created_resource = self.parsing_utils.parse_bitmovin_minimal_model_from_response(
                response=response)
            return ResourceResponse(response=response,
                                    resource=created_resource)
        raise InvalidStatusError('Unknown status {} received'.format(
            response.status))
Пример #11
0
    def list(self, offset=None, limit=None):
        if not offset:
            offset = self.DEFAULT_LIST_OFFSET_PARAM
        if not limit:
            limit = self.DEFAULT_LIST_LIMIT_PARAM
        url = '{}?offset={}&limit={}'.format(self.relative_url, offset, limit)
        response = self.http_client.get(url)

        if response.status == Status.ERROR.value:
            raise BitmovinApiError('Response was not successful', response)

        if response.status == Status.SUCCESS.value:
            minimal_models = self.parsing_utils.parse_bitmovin_resource_list_from_response(
                response=response, class_=self.class_)

            return ResourceResponse(response=response, resource=minimal_models)

        raise InvalidStatusError('Unknown status {} received'.format(
            response.status))
Пример #12
0
    def analyze(self, input_id, analysis_object):
        if not isinstance(analysis_object, Analysis):
            raise InvalidTypeError(
                'analysis_object has to be an instance of Analysis')

        response = self.http_client.post(self.relative_url +
                                         '/{}/analysis'.format(input_id),
                                         analysis_object)  # type: Response

        if response.status == Status.ERROR.value:
            raise BitmovinApiError('Response was not successful', response)

        if response.status == Status.SUCCESS.value:
            created_resource = self.parsing_utils.parse_bitmovin_minimal_model_from_response(
                response=response)
            return ResourceResponse(response=response,
                                    resource=created_resource)

        raise InvalidStatusError('Unknown status {} received'.format(
            response.status))
Пример #13
0
    def start(self,
              encoding_id,
              start_encoding_request: StartEncodingRequest = None):
        self.parsing_utils.check_arg_valid_uuid(encoding_id)
        url = self.relative_url + '/{}/start'.format(encoding_id)
        if start_encoding_request is None:
            response = self.http_client.post_empty_body(relative_url=url)
        else:
            response = self.http_client.post(relative_url=url,
                                             payload=start_encoding_request)

        if response.status == Status.ERROR.value:
            raise BitmovinApiError('Response was not successful', response)
        if response.status == Status.SUCCESS.value:
            created_resource = self.parsing_utils.parse_bitmovin_minimal_model_from_response(
                response=response)
            return ResourceResponse(response=response,
                                    resource=created_resource)
        raise InvalidStatusError('Unknown status {} received'.format(
            response.status))
Пример #14
0
    def create(self, object_):
        if not isinstance(object_, self.class_):
            raise InvalidTypeError(
                'object_ has to be an instance of {}'.format(
                    self.class_.__name__))

        response = self.http_client.post(self.relative_url,
                                         object_)  # type: Response

        if response.status == Status.ERROR.value:
            raise BitmovinApiError(
                'Response was not successful: {}'.format(
                    response.raw_response), response)

        if response.status == Status.SUCCESS.value:
            created_resource = self.parsing_utils.parse_bitmovin_resource_from_response(
                response=response, class_=self.class_)
            return ResourceResponse(response=response,
                                    resource=created_resource)

        raise InvalidStatusError('Unknown status {} received'.format(
            response.status))
Пример #15
0
 def status(self, new_status):
     # TODO: fix RecursionError: maximum recursion depth exceeded while calling a Python object
     if not Status.__members__.get(new_status):
         raise InvalidStatusError(
             "Invalid Status Value: {}".format(new_status))
     self._status = new_status