BLUE-8: OpenStack driver is now uploading files to OS. Need another config field for the public URL to the container.
This commit is contained in:
parent
aadc39684f
commit
005c5eb645
@ -45,6 +45,14 @@ interface IAlbumSource
|
|||||||
*/
|
*/
|
||||||
function getUrlToPhoto(Photo $photo, $thumbnail = null);
|
function getUrlToPhoto(Photo $photo, $thumbnail = null);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Saves the original photo to its permanent location.
|
||||||
|
* @param Photo $photo Photo the original relates to.
|
||||||
|
* @param $tempFilename Filename containing the original image.
|
||||||
|
* @return mixed
|
||||||
|
*/
|
||||||
|
function saveOriginal(Photo $photo, $tempFilename);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Saves a generated thumbnail to its permanent location.
|
* Saves a generated thumbnail to its permanent location.
|
||||||
* @param Photo $photo Photo the thumbnail relates to.
|
* @param Photo $photo Photo the thumbnail relates to.
|
||||||
|
@ -62,10 +62,15 @@ class LocalFilesystemSource extends AlbumSourceBase implements IAlbumSource
|
|||||||
return $photoUrl;
|
return $photoUrl;
|
||||||
}
|
}
|
||||||
|
|
||||||
public function saveThumbnail(Photo $photo, $thumbnailInfo, $tempFilename)
|
public function saveOriginal(Photo $photo, $tempFilename)
|
||||||
|
{
|
||||||
|
$this->saveThumbnail($photo, $tempFilename, $this->getOriginalsFolder());
|
||||||
|
}
|
||||||
|
|
||||||
|
public function saveThumbnail(Photo $photo, $tempFilename, $thumbnail)
|
||||||
{
|
{
|
||||||
$fileInfo = new File($tempFilename);
|
$fileInfo = new File($tempFilename);
|
||||||
$fileInfo->move(sprintf('%s/%s', $this->getPathToAlbum(), $thumbnailInfo['name']), $photo->storage_file_name);
|
$fileInfo->move(sprintf('%s/%s', $this->getPathToAlbum(), $thumbnail), $photo->storage_file_name);
|
||||||
}
|
}
|
||||||
|
|
||||||
public function saveUploadedPhoto(File $uploadedFile, $overrideFilename = null)
|
public function saveUploadedPhoto(File $uploadedFile, $overrideFilename = null)
|
||||||
|
@ -2,6 +2,7 @@
|
|||||||
|
|
||||||
namespace App\AlbumSources;
|
namespace App\AlbumSources;
|
||||||
use App\Photo;
|
use App\Photo;
|
||||||
|
use OpenCloud\OpenStack;
|
||||||
use Symfony\Component\HttpFoundation\File\File;
|
use Symfony\Component\HttpFoundation\File\File;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -14,7 +15,7 @@ class OpenStackSource extends AlbumSourceBase implements IAlbumSource
|
|||||||
* Deletes an entire album's media contents.
|
* Deletes an entire album's media contents.
|
||||||
* @return void
|
* @return void
|
||||||
*/
|
*/
|
||||||
function deleteAlbumContents()
|
public function deleteAlbumContents()
|
||||||
{
|
{
|
||||||
// TODO: Implement deleteAlbumContents() method.
|
// TODO: Implement deleteAlbumContents() method.
|
||||||
}
|
}
|
||||||
@ -25,7 +26,7 @@ class OpenStackSource extends AlbumSourceBase implements IAlbumSource
|
|||||||
* @param string $thumbnail Thumbnail to delete (or null to delete the original.)
|
* @param string $thumbnail Thumbnail to delete (or null to delete the original.)
|
||||||
* @return void
|
* @return void
|
||||||
*/
|
*/
|
||||||
function deleteThumbnail(Photo $photo, $thumbnail = null)
|
public function deleteThumbnail(Photo $photo, $thumbnail = null)
|
||||||
{
|
{
|
||||||
// TODO: Implement deleteThumbnail() method.
|
// TODO: Implement deleteThumbnail() method.
|
||||||
}
|
}
|
||||||
@ -34,7 +35,7 @@ class OpenStackSource extends AlbumSourceBase implements IAlbumSource
|
|||||||
* Gets the name of this album source.
|
* Gets the name of this album source.
|
||||||
* @return string
|
* @return string
|
||||||
*/
|
*/
|
||||||
function getName()
|
public function getName()
|
||||||
{
|
{
|
||||||
return 'global.album_sources.openstack';
|
return 'global.album_sources.openstack';
|
||||||
}
|
}
|
||||||
@ -45,7 +46,7 @@ class OpenStackSource extends AlbumSourceBase implements IAlbumSource
|
|||||||
* @param string $thumbnail Thumbnail to get the image to.
|
* @param string $thumbnail Thumbnail to get the image to.
|
||||||
* @return string
|
* @return string
|
||||||
*/
|
*/
|
||||||
function getPathToPhoto(Photo $photo, $thumbnail = null)
|
public function getPathToPhoto(Photo $photo, $thumbnail = null)
|
||||||
{
|
{
|
||||||
// TODO: Implement getPathToPhoto() method.
|
// TODO: Implement getPathToPhoto() method.
|
||||||
}
|
}
|
||||||
@ -56,21 +57,36 @@ class OpenStackSource extends AlbumSourceBase implements IAlbumSource
|
|||||||
* @param string $thumbnail Thumbnail to get the image to.
|
* @param string $thumbnail Thumbnail to get the image to.
|
||||||
* @return string
|
* @return string
|
||||||
*/
|
*/
|
||||||
function getUrlToPhoto(Photo $photo, $thumbnail = null)
|
public function getUrlToPhoto(Photo $photo, $thumbnail = null)
|
||||||
{
|
{
|
||||||
// TODO: Implement getUrlToPhoto() method.
|
return sprintf(
|
||||||
|
'%s/%s/%s/%s',
|
||||||
|
'https://photos-dev-898b0644.cdn.memsites.com',
|
||||||
|
$this->album->url_alias,
|
||||||
|
is_null($thumbnail) ? $this->getOriginalsFolder() : $thumbnail,
|
||||||
|
$photo->storage_file_name
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
public function saveOriginal(Photo $photo, $tempFilename)
|
||||||
|
{
|
||||||
|
$this->saveThumbnail($photo, $tempFilename, $this->getOriginalsFolder());
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Saves a generated thumbnail to its permanent location.
|
* Saves a generated thumbnail to its permanent location.
|
||||||
* @param Photo $photo Photo the thumbnail relates to.
|
* @param Photo $photo Photo the thumbnail relates to.
|
||||||
* @param string $thumbnailInfo Information about the thumbnail.
|
|
||||||
* @param string $tempFilename Filename containing the thumbnail.
|
* @param string $tempFilename Filename containing the thumbnail.
|
||||||
|
* @param string $thumbnail Name of the thumbnail.
|
||||||
* @return mixed
|
* @return mixed
|
||||||
*/
|
*/
|
||||||
function saveThumbnail(Photo $photo, $thumbnailInfo, $tempFilename)
|
public function saveThumbnail(Photo $photo, $tempFilename, $thumbnail)
|
||||||
{
|
{
|
||||||
// TODO: Implement saveThumbnail() method.
|
$container = $this->getContainer();
|
||||||
|
$container->uploadObject(
|
||||||
|
sprintf('%s/%s/%s', $this->album->url_alias, $thumbnail, $photo->storage_file_name),
|
||||||
|
fopen($tempFilename, 'r+')
|
||||||
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -79,8 +95,36 @@ class OpenStackSource extends AlbumSourceBase implements IAlbumSource
|
|||||||
* @param string $overrideFilename Specific file name to use, or null to randomly generate one.
|
* @param string $overrideFilename Specific file name to use, or null to randomly generate one.
|
||||||
* @return File
|
* @return File
|
||||||
*/
|
*/
|
||||||
function saveUploadedPhoto(File $uploadedFile, $overrideFilename = null)
|
public function saveUploadedPhoto(File $uploadedFile, $overrideFilename = null)
|
||||||
{
|
{
|
||||||
// TODO: Implement saveUploadedPhoto() method.
|
// TODO: Implement saveUploadedPhoto() method.
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private function getClient()
|
||||||
|
{
|
||||||
|
return new OpenStack($this->configuration->auth_url, [
|
||||||
|
'username' => $this->configuration->username,
|
||||||
|
'password' => decrypt($this->configuration->password),
|
||||||
|
'tenantName' => $this->configuration->tenant_name,
|
||||||
|
]);
|
||||||
|
}
|
||||||
|
|
||||||
|
private function getContainer()
|
||||||
|
{
|
||||||
|
return $this->getStorageService()->getContainer($this->configuration->container_name);
|
||||||
|
}
|
||||||
|
|
||||||
|
private function getOriginalsFolder()
|
||||||
|
{
|
||||||
|
return '_originals';
|
||||||
|
}
|
||||||
|
|
||||||
|
private function getStorageService()
|
||||||
|
{
|
||||||
|
return $this->getClient()->objectStoreService(
|
||||||
|
$this->configuration->service_name,
|
||||||
|
$this->configuration->service_region,
|
||||||
|
'publicURL'
|
||||||
|
);
|
||||||
|
}
|
||||||
}
|
}
|
@ -51,9 +51,6 @@ class PhotoService
|
|||||||
|
|
||||||
public function analyse($queueToken)
|
public function analyse($queueToken)
|
||||||
{
|
{
|
||||||
/** @var Album $album */
|
|
||||||
$album = $this->photo->album;
|
|
||||||
|
|
||||||
$photoFile = join(DIRECTORY_SEPARATOR, [
|
$photoFile = join(DIRECTORY_SEPARATOR, [
|
||||||
FileHelper::getQueuePath($queueToken),
|
FileHelper::getQueuePath($queueToken),
|
||||||
$this->photo->storage_file_name
|
$this->photo->storage_file_name
|
||||||
@ -119,6 +116,9 @@ class PhotoService
|
|||||||
$this->photo->is_analysed = true;
|
$this->photo->is_analysed = true;
|
||||||
$this->photo->save();
|
$this->photo->save();
|
||||||
|
|
||||||
|
// Save the original
|
||||||
|
$this->albumSource->saveOriginal($this->photo, $photoFile);
|
||||||
|
|
||||||
$this->regenerateThumbnails($originalPhotoResource);
|
$this->regenerateThumbnails($originalPhotoResource);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -198,7 +198,7 @@ class PhotoService
|
|||||||
foreach ($thumbnailsRequired as $thumbnail)
|
foreach ($thumbnailsRequired as $thumbnail)
|
||||||
{
|
{
|
||||||
$generatedThumbnailPath = $this->imageHelper->generateThumbnail($originalPhotoResource, $this->photo, $thumbnail);
|
$generatedThumbnailPath = $this->imageHelper->generateThumbnail($originalPhotoResource, $this->photo, $thumbnail);
|
||||||
$this->albumSource->saveThumbnail($this->photo, $thumbnail, $generatedThumbnailPath);
|
$this->albumSource->saveThumbnail($this->photo, $generatedThumbnailPath, $thumbnail['name']);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user