From f1fe3a16ea145747c3ea175c47212fef771184bb Mon Sep 17 00:00:00 2001 From: silviabf Date: Sun, 14 Jul 2024 17:54:15 +0200 Subject: [PATCH] Apply indicated changes --- Controller/IngestController.php | 44 +++++++++++++++++++++++++++ DependencyInjection/Configuration.php | 2 +- Services/APIService.php | 38 ++++++++++++++++++++++- composer.json | 6 ++-- 4 files changed, 85 insertions(+), 5 deletions(-) diff --git a/Controller/IngestController.php b/Controller/IngestController.php index d30b620..7193f75 100644 --- a/Controller/IngestController.php +++ b/Controller/IngestController.php @@ -102,6 +102,48 @@ public function addTrackAction(Request $request): ?Response } } + /** + * @Route("/deleteTrack") + */ + public function deleteTrackAction(Request $request): ?Response + { + try { + $this->APIService->deleteTrack($request->request->get('mediaPackage')); + + return $this->generateResponse('true', Response::HTTP_OK, $this->predefinedHeaders); + } catch (\Exception $exception) { + return $this->generateResponse($exception->getMessage(), $exception->getCode(), $this->predefinedHeaders); + } + } + + /** + * @Route("/getLinkTrack") + */ + public function getLinkTrackAction(Request $request): ?Response + { + try { + $link = $this->APIService->getLinkTrack($request); + + return $this->generateResponse($link, Response::HTTP_OK, $this->predefinedHeaders); + } catch (\Exception $exception) { + return $this->generateResponse($exception->getMessage(), $exception->getCode(), $this->predefinedHeaders); + } + } + + /** + * @Route("/getDownloadTrack") + */ + public function getDownloadTrackAction(Request $request): ?Response + { + try { + $link = $this->APIService->getDownloadTrack($request, $request->request->get('mediaPackage')); + + return $this->generateResponse($link, Response::HTTP_OK, $this->predefinedHeaders); + } catch (\Exception $exception) { + return $this->generateResponse($exception->getMessage(), $exception->getCode(), $this->predefinedHeaders); + } + } + /** * @Route("/addCatalog") */ @@ -158,12 +200,14 @@ public function addMediaPackageAction(Request $request): ?Response $customParameters = [ 'series' => false, + 'seriesTitle' => '', 'accessRights' => false, 'title' => '', 'description' => '', 'profile' => $this->profileService->getDefaultMasterProfile(), 'priority' => 2, 'language' => 'en', + 'roles' => [] ]; try { diff --git a/DependencyInjection/Configuration.php b/DependencyInjection/Configuration.php index af47523..f46dd31 100644 --- a/DependencyInjection/Configuration.php +++ b/DependencyInjection/Configuration.php @@ -18,7 +18,7 @@ public function getConfigTreeBuilder(): TreeBuilder ->children() ->scalarNode('allowed_removed_tag') ->defaultValue('CUSTOM_TAG') - ->isRequired() + // ->isRequired() ->info('Define which tag will be used to mark objects which can be subjected to tag removal') ->end() ; diff --git a/Services/APIService.php b/Services/APIService.php index 7a9d6d4..164e8ee 100644 --- a/Services/APIService.php +++ b/Services/APIService.php @@ -18,6 +18,7 @@ use Pumukit\SchemaBundle\Services\PersonService; use Symfony\Component\HttpFoundation\File\UploadedFile; use Symfony\Component\HttpFoundation\Response; +use Pumukit\BasePlayerBundle\Services\TrackUrlService; class APIService extends APICommonService { @@ -27,6 +28,7 @@ class APIService extends APICommonService private $jobService; private $personService; private $importMappingDataService; + private $trackUrlService; public function __construct( DocumentManager $documentManager, @@ -36,6 +38,7 @@ public function __construct( PersonService $personService, ImportMappingDataService $importMappingDataService, MultimediaObjectEventDispatcherService $multimediaObjectEventDispatcherService, + TrackUrlService $trackUrlService, array $pumukitLocales ) { parent::__construct($documentManager, $factoryService, $multimediaObjectEventDispatcherService, $pumukitLocales); @@ -45,6 +48,7 @@ public function __construct( $this->jobService = $jobService; $this->personService = $personService; $this->importMappingDataService = $importMappingDataService; + $this->trackUrlService = $trackUrlService; } public function createMediaPackage(array $requestParameters, User $user = null) @@ -100,6 +104,33 @@ public function addTrack(array $requestParameters) return $mediaPackage->asXML(); } + public function deleteTrack($mediaPackage) + { + $multimediaObject = $this->getMultimediaObjectFromMediapackageXML($mediaPackage); + + $this->factoryService->deleteMultimediaObject($multimediaObject); + + return true; + } + + public function getLinkTrack($request) + { + $multimediaObject = $this->getMultimediaObjectFromMediapackageXML($request->request->get('mediaPackage')); + return $request->getUriForPath('/video/magic/'.$multimediaObject->getSecret()); + } + + public function getDownloadTrack($request) + { + $multimediaObject = $this->getMultimediaObjectFromMediapackageXML($request->request->get('mediaPackage')); + $track = null; + foreach ($multimediaObject->getTracks() as $link) { + $track = $link; + } + $url = $this->trackUrlService->generateDirectTrackFileUrl($track, $request); + + return $request->getUriForPath($url); + } + public function addCatalog(array $requestParameters) { [$mediaPackage, $flavor, $body] = array_values($requestParameters); @@ -200,7 +231,7 @@ public function addDCCatalog(array $requestParameters, User $user = null) public function addMediaPackage(array $requestParameters, User $user = null) { - [$flavor, $body, $seriesId, $accessRights, $title, $description, $profile, $priority, $language, $roles] = array_values($requestParameters); + [$flavor, $body, $seriesId, $seriesTitle, $accessRights, $title, $description, $profile, $priority, $language, $roles] = array_values($requestParameters); if ($seriesId) { $series = $this->documentManager->getRepository(Series::class)->findOneBy(['_id' => $seriesId]); @@ -213,6 +244,11 @@ public function addMediaPackage(array $requestParameters, User $user = null) $multimediaObject = $this->factoryService->createMultimediaObject($series, true, $user); + // Change status to HIDDEN and tag PUCHWEBTV + $multimediaObject->setStatus(MultimediaObject::STATUS_HIDDEN); + $tag = $this->factoryService->getTagsByCod('PUCHWEBTV', false); + $multimediaObject->addTag($tag); + if ($accessRights) { $multimediaObject->setCopyright($accessRights); } diff --git a/composer.json b/composer.json index ffa7d65..2c9b60a 100644 --- a/composer.json +++ b/composer.json @@ -1,5 +1,5 @@ { - "name": "teltek/pumukit-external-api-bundle", + "name": "unimoodle/pumukitexternalapibundle", "type": "symfony-bundle", "description": "PuMuKIT external ingest API", "keywords": [ @@ -8,8 +8,8 @@ "bundle", "pumukit" ], - "homepage": "https://github.com/teltek/PumukitExternalAPIBundle.git", - "license": "proprietary", + "homepage": "https://git.isyc.com/unimoodle/pumukitexternalapibundle.git", + "license": "MIT", "authors": [ { "name": "Teltek Team",