Skip to content

Commit

Permalink
Initial commit
Browse files Browse the repository at this point in the history
  • Loading branch information
jacksleight committed Oct 16, 2024
1 parent d220e2b commit 6585aed
Show file tree
Hide file tree
Showing 8 changed files with 107 additions and 21 deletions.
7 changes: 2 additions & 5 deletions config/assetdrop.php
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,8 @@

'container' => env('ASSETDROP_CONTAINER', 'assetdrop'),

'remove_processed' => env('ASSETDROP_REMOVE_PROCESSED', true),

'image' => [
'enabled' => env('ASSETDROP_IMAGE_ENABLE', true),
'statamic' => [
Expand Down Expand Up @@ -32,11 +34,6 @@
'disk' => env('ASSETDROP_VIDEO_EXTERNAL_DISK', 'ftp'),
'path' => env('ASSETDROP_VIDEO_EXTERNAL_PATH', '{{ assetdrop_uploaded_at | format="dmy" }}-{{ assetdrop_uploaded_by:initials }}-{{ assetdrop_name }}.{{ extension }}'),
],
'kaltura' => [
'enabled' => env('ASSETDROP_VIDEO_KALTURA_ENABLE', false),
'tags' => env('ASSETDROP_VIDEO_KALTURA_TAGS', 'assetdrop'),
'categories' => env('ASSETDROP_VIDEO_KALTURA_CATEGORIES'),
],
],

'document' => [
Expand Down
46 changes: 30 additions & 16 deletions src/Actions/ProcessUpload.php
Original file line number Diff line number Diff line change
Expand Up @@ -7,35 +7,41 @@
use Statamic\Contracts\Assets\Asset;
use Statamic\Facades\Antlers;
use Statamic\Support\Str;
use Tv2regionerne\StatamicAssetdrop\Events\ExternalDocumentProcessed;
use Tv2regionerne\StatamicAssetdrop\Events\ExternalImageProcessed;
use Tv2regionerne\StatamicAssetdrop\Events\ExternalVideoProcessed;
use Tv2regionerne\StatamicAssetdrop\Events\StatamicDocumentProcessed;
use Tv2regionerne\StatamicAssetdrop\Events\StatamicImageProcessed;
use Tv2regionerne\StatamicAssetdrop\Events\StatamicVideoProcessed;

class ProcessUpload
{
public function handle(Asset $asset)
{
$config = match (true) {
$asset->isImage() => config('assetdrop.image'),
$asset->isVideo() => config('assetdrop.video'),
default => config('assetdrop.document'),
$type = match (true) {
$asset->isImage() => 'image',
$asset->isVideo() => 'video',
default => 'document',
};

$config = config('assetdrop.'.$type);
if (! $config['enabled']) {
return;
}

if ($config['statamic']['enabled'] ?? false) {
$this->handleStatamic($asset, $config['statamic']);
$this->handleStatamic($type, $asset, $config['statamic']);
}
if ($config['external']['enabled'] ?? false) {
$this->handleExternal($asset, $config['external']);
}
if ($config['kaltura']['enabled'] ?? false) {
$this->handleKaltura($asset, $config['kaltura']);
$this->handleExternal($type, $asset, $config['external']);
}

$asset->delete();
if (config('assetdrop.remove_processed')) {
$asset->delete();
}
}

protected function handleStatamic(Asset $asset, $config)
protected function handleStatamic($type, Asset $asset, $config)
{
$container = AssetContainer::find($config['container']);
$disk = $container->disk()->filesystem();
Expand All @@ -45,21 +51,29 @@ protected function handleStatamic(Asset $asset, $config)

$newAsset = $container->asset($path);
$newAsset->writeMeta($asset->meta());
$newAsset->set('title', $newAsset->filename());
$newAsset->set('tags', $config['tags']);
$newAsset->save();

match ($type) {
'image' => StatamicImageProcessed::dispatch($asset, $newAsset),
'video' => StatamicVideoProcessed::dispatch($asset, $newAsset),
'document' => StatamicDocumentProcessed::dispatch($asset, $newAsset),
};
}

protected function handleExternal(Asset $asset, $config)
protected function handleExternal($type, Asset $asset, $config)
{
$disk = Storage::disk($config['disk']);
$path = $this->buildPath($asset, $config['path']);

$disk->writeStream($path, $asset->stream());
}

protected function handleKaltura(Asset $asset, $config)
{
// Handle kaltura?
match ($type) {
'image' => ExternalImageProcessed::dispatch($asset),
'video' => ExternalVideoProcessed::dispatch($asset),
'document' => ExternalDocumentProcessed::dispatch($asset),
};
}

protected function buildPath(Asset $asset, $template)
Expand Down
12 changes: 12 additions & 0 deletions src/Events/ExternalDocumentProcessed.php
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
<?php

namespace Tv2regionerne\StatamicAssetdrop\Events;

use Statamic\Events\Event;

class ExternalDocumentProcessed extends Event
{
public function __construct(
public $asset,
) {}
}
12 changes: 12 additions & 0 deletions src/Events/ExternalImageProcessed.php
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
<?php

namespace Tv2regionerne\StatamicAssetdrop\Events;

use Statamic\Events\Event;

class ExternalImageProcessed extends Event
{
public function __construct(
public $asset,
) {}
}
12 changes: 12 additions & 0 deletions src/Events/ExternalVideoProcessed.php
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
<?php

namespace Tv2regionerne\StatamicAssetdrop\Events;

use Statamic\Events\Event;

class ExternalVideoProcessed extends Event
{
public function __construct(
public $asset,
) {}
}
13 changes: 13 additions & 0 deletions src/Events/StatamicDocumentProcessed.php
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
<?php

namespace Tv2regionerne\StatamicAssetdrop\Events;

use Statamic\Events\Event;

class StatamicDocumentProcessed extends Event
{
public function __construct(
public $asset,
public $newAsset,
) {}
}
13 changes: 13 additions & 0 deletions src/Events/StatamicImageProcessed.php
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
<?php

namespace Tv2regionerne\StatamicAssetdrop\Events;

use Statamic\Events\Event;

class StatamicImageProcessed extends Event
{
public function __construct(
public $asset,
public $newAsset,
) {}
}
13 changes: 13 additions & 0 deletions src/Events/StatamicVideoProcessed.php
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
<?php

namespace Tv2regionerne\StatamicAssetdrop\Events;

use Statamic\Events\Event;

class StatamicVideoProcessed extends Event
{
public function __construct(
public $asset,
public $newAsset,
) {}
}

0 comments on commit 6585aed

Please sign in to comment.