backblaze = new BackblazeB2Service(); } /** * Deletes an entire album's media contents. * @return void */ public function deleteAlbumContents() { // TODO: Implement deleteAlbumContents() method. } /** * Deletes a thumbnail file for a photo. * @param Photo $photo Photo to delete the thumbnail from. * @param string $thumbnail Thumbnail to delete (or null to delete the original.) * @return void */ public function deleteThumbnail(Photo $photo, $thumbnail = null) { // TODO: Implement deleteThumbnail() method. } /** * Fetches the contents of a thumbnail for a photo. * @param Photo $photo Photo to fetch the thumbnail for. * @param string $thumbnail Thumbnail to fetch (or null to fetch the original.) * @return EntityBody */ public function fetchPhotoContent(Photo $photo, $thumbnail = null) { // TODO: Implement fetchPhotoContent() method. } /** * Gets the name of this album source. * @return string */ public function getName() { return 'global.album_sources.backblaze_b2'; } /** * 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) { // TODO: Implement getUrlToPhoto() method. } /** * 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); } public function setConfiguration(Storage $configuration) { parent::setConfiguration($configuration); $this->backblaze->setCredentials(decrypt($configuration->access_key), decrypt($configuration->secret_key)); } private function getClient() { $this->backblaze->authorizeAccount(); $this->backblaze->setBucketName($this->configuration->container_name); return $this->backblaze; } 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 ); } }