12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182 |
- <?php
- namespace App\Services;
- use Aws\S3\S3Client;
- use Aws\S3\Exception\S3Exception;
- use GuzzleHttp\Exception\ConnectException;
- use League\Flysystem\AwsS3V3\AwsS3V3Adapter;
- use League\Flysystem\Filesystem;
- use League\Flysystem\UnableToRetrieveMetadata;
- use League\Flysystem\FilesystemException;
- use League\Flysystem\UnableToListContents;
- use League\Flysystem\FileAttributes;
- use League\Flysystem\UnableToWriteFile;
- class FilesystemService
- {
- const VERIFY_FILE_NAME = 'cfstest.txt';
- public static function getVerifyCredentials($key, $secret, $region, $bucket, $endpoint)
- {
- $client = new S3Client([
- 'version' => 'latest',
- 'region' => $region,
- 'endpoint' => $endpoint,
- 'credentials' => [
- 'key' => $key,
- 'secret' => $secret,
- ]
- ]);
- $adapter = new AwsS3V3Adapter(
- $client,
- $bucket,
- );
- $throw = false;
- $filesystem = new Filesystem($adapter);
- $writable = false;
- try {
- $filesystem->write(self::VERIFY_FILE_NAME, 'ok', []);
- $writable = true;
- } catch (FilesystemException | UnableToWriteFile $exception) {
- $writable = false;
- }
- if(!$writable) {
- return false;
- }
- try {
- $response = $filesystem->read(self::VERIFY_FILE_NAME);
- if($response === 'ok') {
- $writable = true;
- $res[] = self::VERIFY_FILE_NAME;
- } else {
- $writable = false;
- }
- } catch (FilesystemException | UnableToReadFile $exception) {
- $writable = false;
- }
- if(in_array(self::VERIFY_FILE_NAME, $res)) {
- try {
- $filesystem->delete(self::VERIFY_FILE_NAME);
- } catch (FilesystemException | UnableToDeleteFile $exception) {
- $writable = false;
- }
- }
- if(!$writable) {
- return false;
- }
- if(in_array(self::VERIFY_FILE_NAME, $res)) {
- return true;
- }
- return false;
- }
- }
|