From ef7ce88cee47ec7d05c43e55c166f8488667dc5d Mon Sep 17 00:00:00 2001 From: Marcel Klehr Date: Wed, 12 Apr 2023 16:52:11 +0200 Subject: [PATCH] ISpeechToTextProvider#transcribeFile: Pass \OCP\Files\File instead of path Signed-off-by: Marcel Klehr --- .../SpeechToText/SpeechToTextManager.php | 24 +++++++++++++++---- .../SpeechToText/ISpeechToTextManager.php | 2 +- .../SpeechToText/ISpeechToTextProvider.php | 3 ++- 3 files changed, 23 insertions(+), 6 deletions(-) diff --git a/lib/private/SpeechToText/SpeechToTextManager.php b/lib/private/SpeechToText/SpeechToTextManager.php index 2e1733d0e36..7b50fa385c9 100644 --- a/lib/private/SpeechToText/SpeechToTextManager.php +++ b/lib/private/SpeechToText/SpeechToTextManager.php @@ -31,6 +31,9 @@ namespace OC\SpeechToText; use InvalidArgumentException; use OC\AppFramework\Bootstrap\Coordinator; use OCP\BackgroundJob\IJobList; +use OCP\Files\File; +use OCP\Files\IRootFolder; +use OCP\Files\NotFoundException; use OCP\IServerContainer; use OCP\PreConditionNotMetException; use OCP\SpeechToText\ISpeechToTextManager; @@ -49,6 +52,7 @@ class SpeechToTextManager implements ISpeechToTextManager { private Coordinator $coordinator, private LoggerInterface $logger, private IJobList $jobList, + private IRootFolder $rootFolder, ) { } @@ -90,6 +94,14 @@ class SpeechToTextManager implements ISpeechToTextManager { if (!$this->hasProviders()) { throw new PreConditionNotMetException('No SpeechToText providers have been registered'); } + try { + $node = $this->rootFolder->get($path); + } catch (NotFoundException $e) { + throw new InvalidArgumentException('File does not exist: ' . $path); + } + if (!($node instanceof File)) { + throw new InvalidArgumentException('Path does not resolve to a file'); + } $this->jobList->add(TranscriptionJob::class, [ 'path' => $path, 'context' => $context]); } @@ -99,10 +111,14 @@ class SpeechToTextManager implements ISpeechToTextManager { throw new PreConditionNotMetException('No SpeechToText providers have been registered'); } - if (!file_exists($path)) { - throw new InvalidArgumentException('File does not exist'); + try { + $node = $this->rootFolder->get($path); + if (!($node instanceof File)) { + throw new InvalidArgumentException('Path does not resolve to a file'); + } + return $provider->transcribeFile($node); + } catch (NotFoundException $e) { + throw new InvalidArgumentException('File does not exist: ' . $path); } - - return $provider->transcribeFile($path); } } diff --git a/lib/public/SpeechToText/ISpeechToTextManager.php b/lib/public/SpeechToText/ISpeechToTextManager.php index 297be43e6db..7bcd60bce8c 100644 --- a/lib/public/SpeechToText/ISpeechToTextManager.php +++ b/lib/public/SpeechToText/ISpeechToTextManager.php @@ -43,7 +43,7 @@ interface ISpeechToTextManager { * Will schedule a transcription process in the background. The result will become available * with the \OCP\SpeechToText\Events\TranscriptionFinishedEvent * You should add context information to the context array to re-identify the transcription result as - * as belonging to your transcription request. + * belonging to your transcription request. * * @since 27.0.0 * @throws PreConditionNotMetException If no provider was registered but this method was still called diff --git a/lib/public/SpeechToText/ISpeechToTextProvider.php b/lib/public/SpeechToText/ISpeechToTextProvider.php index 3d739408bf5..c23b75c115e 100644 --- a/lib/public/SpeechToText/ISpeechToTextProvider.php +++ b/lib/public/SpeechToText/ISpeechToTextProvider.php @@ -26,6 +26,7 @@ declare(strict_types=1); namespace OCP\SpeechToText; +use OCP\Files\File; use RuntimeException; /** @@ -41,5 +42,5 @@ interface ISpeechToTextProvider { * @since 27.0.0 * @throws RuntimeException If the text could not be transcribed */ - public function transcribeFile(string $path): string; + public function transcribeFile(File $file): string; }