From f1d45ea542d4c5506c21a1338335bea0e1f7e7f8 Mon Sep 17 00:00:00 2001 From: Julien Veyssier Date: Fri, 28 Apr 2023 13:52:08 +0200 Subject: [PATCH] adjust to Collaboard's changes about thumbnails Signed-off-by: Julien Veyssier --- lib/Service/CollaboardAPIService.php | 21 ++++++++++++++++++++- src/components/ProjectItem.vue | 2 +- 2 files changed, 21 insertions(+), 2 deletions(-) diff --git a/lib/Service/CollaboardAPIService.php b/lib/Service/CollaboardAPIService.php index 7932f78..4ed870b 100644 --- a/lib/Service/CollaboardAPIService.php +++ b/lib/Service/CollaboardAPIService.php @@ -66,6 +66,11 @@ public function getImage(string $url): array { ]; } + /** + * @param string $userId + * @return array|string[] + * @throws Exception + */ public function getProjects(string $userId): array { $params = [ 'AppVer' => '5.16.520', @@ -76,9 +81,15 @@ public function getProjects(string $userId): array { if (isset($projectsResult['error'])) { return $projectsResult; } + $thumbnailRequestOptions = [ + 'headers' => [ + 'User-Agent' => Application::INTEGRATION_USER_AGENT, + ], + ]; + $client = $this->client; if (isset($projectsResult['Results']) && is_array($projectsResult['Results'])) { $remoteProjects = $projectsResult['Results']; - return array_map(static function(array $remoteProject) { + return array_map(static function(array $remoteProject) use ($thumbnailRequestOptions, $client) { $remoteProject['trash'] = false; $remoteProject['name'] = $remoteProject['Project']['Description']; $remoteProject['id'] = $remoteProject['Project']['ProjectId']; @@ -88,6 +99,14 @@ public function getProjects(string $userId): array { 'photoUrl' => $remoteProject['Owner']['PhotoUrl'] ?? null, ]; $remoteProject['updated_at'] = $remoteProject['Project']['LastUpdate']; + if (isset($remoteProject['ThumbnailUrl']) && $remoteProject['ThumbnailUrl']) { + try { + $response = $client->get($remoteProject['ThumbnailUrl'], $thumbnailRequestOptions); + $remoteProject['Project']['Thumbnail'] = base64_encode($response->getBody()); + } catch (Exception | Throwable $e) { + + } + } return $remoteProject; }, $remoteProjects); } diff --git a/src/components/ProjectItem.vue b/src/components/ProjectItem.vue index 7d7847d..b138cae 100644 --- a/src/components/ProjectItem.vue +++ b/src/components/ProjectItem.vue @@ -59,7 +59,7 @@ export default { computed: { hasImage() { - return this.project.Project.Thumbnail !== null + return !!this.project.Project.Thumbnail }, imgSrc() { return 'data:image/png;base64,' + this.project.Project.Thumbnail