* Use of this software is governed by the Business Source License included in the LICENSE file and at https://getparthenon.com/docs/next/license.
9
*
10
* Change Date: TBD ( 3 years after 2.0.0 release )
11
*
12
* On the date above, in accordance with the Business Source License, use of this software will be governed by the open source license specified in the LICENSE file.
13
*/
14
15
namespace Parthenon\Common\Upload\Factory;
16
17
use League\Flysystem\FilesystemAdapter;
18
use Parthenon\Common\Exception\Upload\InvalidUploadConfigurationException;
19
use Parthenon\Common\Exception\Upload\NoUploadProviderFoundException;
20
use Parthenon\Common\Upload\UploaderInterface;
21
22
final class FlySystemAdapterFactory implements FlySystemAdapterFactoryInterface
23
{
24
public function __construct(private S3AdapterInterface $s3Adapter, private LocalAdapterInterface $localAdapter)
25
{
26
}
27
28
public function getAdapter($config): FilesystemAdapter
29
{
30
if (!isset($config['provider'])) {
31
throw new InvalidUploadConfigurationException('There is no provider defined.');
32
}
33
34
switch ($config['provider']) {
35
case UploaderInterface::PROVIDER_S3:
36
return $this->s3Adapter->build($config);
37
case UploaderInterface::PROVIDER_LOCAL:
38
return $this->localAdapter->build($config);
39
default:
40
throw new NoUploadProviderFoundException(sprintf('There is no provider for "%s"', $config['provider']));