getPathToPhoto($photo, $thumbnail); return EntityBody::fromString($this->getClient()->downloadFile($pathOnStorage)); } /** * Gets the name of this album source. * @return string */ public function getName() { return 'global.album_sources.dropbox'; } /** * Gets the absolute URL to the given photo file. * @param Photo $photo Photo to get the URL to. * @param string $thumbnail Thumbnail to get the image to. * @return string */ public function getUrlToPhoto(Photo $photo, $thumbnail = null) { $photoUrl = route('downloadPhoto', [ 'albumUrlAlias' => $this->album->url_path, 'photoFilename' => $photo->storage_file_name ]); if (!is_null($thumbnail)) { $photoUrl .= sprintf('?t=%s', urlencode($thumbnail)); } return $photoUrl; } /** * Saves a generated thumbnail to its permanent location. * @param Photo $photo Photo the image relates to. * @param string $tempFilename Filename containing the image. * @param string $thumbnail Name of the thumbnail (or null for the original.) * @return mixed */ public function saveThumbnail(Photo $photo, $tempFilename, $thumbnail = null) { $pathOnStorage = $this->getPathToPhoto($photo, $thumbnail); $this->getClient()->uploadFile($tempFilename, $pathOnStorage); } private function getClient() { if (is_null($this->dropboxClient)) { $this->dropboxClient = new DropboxService(); $this->dropboxClient->setAccessToken(decrypt($this->configuration->access_token)); } return $this->dropboxClient; } private function getOriginalsFolder() { return '_originals'; } private function getPathToPhoto(Photo $photo, $thumbnail = null) { return sprintf( '/%s/%s/%s', $this->album->url_alias, is_null($thumbnail) ? $this->getOriginalsFolder() : $thumbnail, $photo->storage_file_name ); } }