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))
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))
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))
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))
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))
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))
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))
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))
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))
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))
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))
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))
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))
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