diff options
author | Julien Veyssier <eneiluj@posteo.net> | 2021-10-20 13:27:47 +0300 |
---|---|---|
committer | Julien Veyssier <eneiluj@posteo.net> | 2022-01-03 12:27:34 +0300 |
commit | 48e9828d99bf681125fdaea83a1df60fa00dbf7a (patch) | |
tree | 748452bfd67b4461614bec285b39e19b9cd7eb70 /lib | |
parent | b7234c04010dc4a487ce5218409acdc47e61e44f (diff) |
loading animation when inserting image link or uploading image
Signed-off-by: Julien Veyssier <eneiluj@posteo.net>
Diffstat (limited to 'lib')
-rw-r--r-- | lib/Controller/ImageController.php | 1 | ||||
-rw-r--r-- | lib/Service/ImageService.php | 63 |
2 files changed, 34 insertions, 30 deletions
diff --git a/lib/Controller/ImageController.php b/lib/Controller/ImageController.php index 3caf20d8b..d1371e464 100644 --- a/lib/Controller/ImageController.php +++ b/lib/Controller/ImageController.php @@ -29,7 +29,6 @@ use OCP\AppFramework\Http; use OCA\Text\Service\ImageService; use OCP\AppFramework\Controller; use OCP\AppFramework\Http\DataResponse; -use OCP\AppFramework\Http\Response; use OCP\IRequest; class ImageController extends Controller { diff --git a/lib/Service/ImageService.php b/lib/Service/ImageService.php index 70530cd40..1fdcb318b 100644 --- a/lib/Service/ImageService.php +++ b/lib/Service/ImageService.php @@ -27,8 +27,6 @@ declare(strict_types=1); namespace OCA\Text\Service; use Exception; -use OCP\Files\Node; -use OCP\Files\FileInfo; use OCP\Files\Folder; use Throwable; use GuzzleHttp\Exception\ClientException; @@ -82,41 +80,48 @@ class ImageService { public function downloadImageLink(string $link, string $userId): array { $fileName = (string) time(); $saveDir = $this->getOrCreateTextDirectory($userId); - $savedFile = $saveDir->newFile($fileName); - $resource = $savedFile->fopen('w'); - $res = $this->simpleDownload($link, $resource); - if (is_resource($resource)) { - fclose($resource); - } - $savedFile->touch(); - if (isset($res['Content-Type'])) { - if ($res['Content-Type'] === 'image/jpg') { - $fileName = $fileName . '.jpg'; - } elseif ($res['Content-Type'] === 'image/png') { - $fileName = $fileName . '.png'; - } else { + if ($saveDir !== null) { + $savedFile = $saveDir->newFile($fileName); + $resource = $savedFile->fopen('w'); + $res = $this->simpleDownload($link, $resource); + if (is_resource($resource)) { + fclose($resource); + } + $savedFile->touch(); + if (isset($res['Content-Type'])) { + if ($res['Content-Type'] === 'image/jpg') { + $fileName = $fileName . '.jpg'; + } elseif ($res['Content-Type'] === 'image/png') { + $fileName = $fileName . '.png'; + } else { + return [ + 'error' => 'Unsupported file type', + ]; + } + $targetPath = $saveDir->getPath() . '/' . $fileName; + $savedFile->move($targetPath); + $path = preg_replace('/^files/', '', $savedFile->getInternalPath()); + // get file type and name return [ - 'error' => 'Unsupported file type', + 'name' => $fileName, + 'path' => $path, ]; + } else { + return $res; } - $targetPath = $saveDir->getPath() . '/' . $fileName; - $savedFile->move($targetPath); - $path = preg_replace('/^files/', '', $savedFile->getInternalPath()); - // get file type and name + } else { return [ - 'name' => $fileName, - 'path' => $path, + 'error' => 'Impossible to create /Text directory', ]; - } else { - return $res; } } - private function getOrCreateTextDirectory(string $userId): ?Node { + private function getOrCreateTextDirectory(string $userId): ?Folder { $userFolder = $this->rootFolder->getUserFolder($userId); if ($userFolder->nodeExists('/Text')) { $node = $userFolder->get('Text'); - if ($node->getType() === FileInfo::TYPE_FOLDER) { + //if ($node->getType() === FileInfo::TYPE_FOLDER) { + if ($node instanceof Folder) { return $node; } else { return null; @@ -151,11 +156,11 @@ class ImageService { if ($method === 'GET') { $response = $client->get($url, $options); - } else if ($method === 'POST') { + } elseif ($method === 'POST') { $response = $client->post($url, $options); - } else if ($method === 'PUT') { + } elseif ($method === 'PUT') { $response = $client->put($url, $options); - } else if ($method === 'DELETE') { + } elseif ($method === 'DELETE') { $response = $client->delete($url, $options); } else { return ['error' => 'Bad HTTP method']; |