Test mailgun connection before storing credentials into the app

This commit is contained in:
Čarodej
2022-04-08 08:00:13 +02:00
parent 6ed2efcc4e
commit 86090d5192
14 changed files with 222 additions and 134 deletions

View File

@@ -2,31 +2,43 @@
namespace Domain\Settings\Actions;
use Storage;
use Aws\S3\Exception\S3Exception;
use League\Flysystem\UnableToWriteFile;
use Domain\Settings\DTO\S3CredentialsData;
class TestS3ConnectionAction
{
public function __invoke(S3CredentialsData $credentials): void
{
// Set temporary s3 connection
config([
'filesystems.disks.s3' => [
'driver' => 's3',
'key' => $credentials->key,
'secret' => $credentials->secret,
'region' => $credentials->region,
'bucket' => $credentials->bucket,
'endpoint' => $credentials->endpoint,
],
]);
try {
// Set temporary s3 connection
config([
'filesystems.disks.s3' => [
'driver' => 's3',
'key' => $credentials->key,
'secret' => $credentials->secret,
'region' => $credentials->region,
'bucket' => $credentials->bucket,
'endpoint' => $credentials->endpoint,
],
]);
// Try to get files
Storage::disk('s3')->allFiles();
// Try to get files
Storage::disk('s3')->allFiles();
// Try to create folder
Storage::disk('s3')->makeDirectory('s3-test');
// Try to create folder
Storage::disk('s3')->makeDirectory('s3-test');
// Delete test folder
Storage::disk('s3')->deleteDirectory('s3-test');
// Delete test folder
Storage::disk('s3')->deleteDirectory('s3-test');
} catch (S3Exception | UnableToWriteFile $error) {
abort(
response()->json([
'type' => 's3-connection-error',
'title' => 'S3 Connection Error',
'message' => $error->getMessage(),
], 401)
);
}
}
}