Skip to content

Commit 3fc87d0

Browse files
committed
Fix getMetadata() to have data for S3 folders
1 parent a28a3cc commit 3fc87d0

File tree

3 files changed

+40
-2
lines changed

3 files changed

+40
-2
lines changed

Adapter/AbstractS3.php

Lines changed: 32 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,32 @@
1+
<?php
2+
3+
namespace CloudFiles\Adapter;
4+
5+
use ExpressionEngine\Dependency\League\Flysystem;
6+
7+
abstract class AbstractS3 extends Flysystem\AwsS3v3\AwsS3Adapter
8+
{
9+
10+
/**
11+
* Get all the meta data of a file or directory.
12+
*
13+
* @param string $path
14+
*
15+
* @return false|array
16+
*/
17+
public function getMetadata($path)
18+
{
19+
$metadata = parent::getMetadata($path);
20+
21+
if ($metadata !== false) {
22+
return $metadata;
23+
}
24+
25+
// AWS looks for metadata with a headObject request, this returns 404 (false) on directories
26+
if (!empty($this->listContents($path))) {
27+
return ['type' => 'dir', 'path' => $path, 'size' => 0, 'timestamp' => null];
28+
}
29+
30+
return false;
31+
}
32+
}

Adapter/AwsS3.php

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@
88
use ExpressionEngine\Library\Filesystem\Adapter\AdapterTrait;
99
use ExpressionEngine\Service\Validation\ValidationAware;
1010

11-
class AwsS3 extends Flysystem\AwsS3v3\AwsS3Adapter implements AdapterInterface, ValidationAware
11+
class AwsS3 extends AbstractS3 implements AdapterInterface, ValidationAware
1212
{
1313
use AdapterTrait;
1414

@@ -118,7 +118,9 @@ public static function listAvailableRegions()
118118
'af-south-1' => 'Africa (Cape Town)',
119119
'ap-east-1' => 'Asia Pacific (Hong Kong)',
120120
'ap-southeast-3' => 'Asia Pacific (Jakarta)',
121+
'ap-southeast-4' => 'Asia Pacific (Melbourne)',
121122
'ap-south-1' => 'Asia Pacific (Mumbai)',
123+
'ap-south-2' => 'Asia Pacific (Hyderabad)',
122124
'ap-northeast-3' => 'Asia Pacific (Osaka)',
123125
'ap-northeast-2' => 'Asia Pacific (Seoul)',
124126
'ap-southeast-1' => 'Asia Pacific (Singapore)',
@@ -133,7 +135,10 @@ public static function listAvailableRegions()
133135
'eu-south-1' => 'Europe (Milan)',
134136
'eu-west-3' => 'Europe (Paris)',
135137
'eu-north-1' => 'Europe (Stockholm)',
138+
'eu-south-2' => 'Europe (Spain)',
139+
'eu-central-2' => 'Europe (Zurich)',
136140
'me-south-1' => 'Middle East (Bahrain)',
141+
'me-central-1' => 'Middle East (UAE)',
137142
'sa-east-1' => 'South America (São Paulo)',
138143
];
139144
}

Adapter/DigitalOcean.php

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@
88
use ExpressionEngine\Library\Filesystem\Adapter\AdapterTrait;
99
use ExpressionEngine\Service\Validation\ValidationAware;
1010

11-
class DigitalOcean extends Flysystem\AwsS3v3\AwsS3Adapter implements AdapterInterface, ValidationAware
11+
class DigitalOcean extends AbstractS3 implements AdapterInterface, ValidationAware
1212
{
1313
use AdapterTrait;
1414

@@ -125,6 +125,7 @@ public static function listAvailableRegions()
125125
'fra1' => 'FRA1 - Frankfurt',
126126
'tor1' => 'TOR1 - Toronto',
127127
'blr1' => 'BLR1 - Bangalore',
128+
'syd1' => 'SYD1 - Sydney',
128129
];
129130
}
130131

0 commit comments

Comments
 (0)