ADD: MacCloud/S3: step-126: improve getAllBuckets()

This commit is contained in:
rich2014 2025-05-13 07:41:41 +08:00
commit 4e65f7feae
6 changed files with 26 additions and 21 deletions

View file

@ -28,7 +28,7 @@ type
class function driverName: String; override;
class function createInstance: TCloudDriver; override;
function getConcreteClass: TCloudDriverClass; override;
function getAllBuckets: TS3Buckets; override;
function autoBuildBuckets: TS3Buckets; override;
end;
implementation
@ -70,7 +70,7 @@ begin
Result:= TAliyunOSSClient;
end;
function TAliyunOSSClient.getAllBuckets: TS3Buckets;
function TAliyunOSSClient.autoBuildBuckets: TS3Buckets;
var
session: TS3GetAllBucketsSession = nil;
begin

View file

@ -31,7 +31,7 @@ type
class function createInstance: TCloudDriver; override;
protected
function getConcreteClass: TCloudDriverClass; override;
function getAllBuckets: TS3Buckets; override;
function autoBuildBuckets: TS3Buckets; override;
end;
implementation
@ -101,7 +101,7 @@ begin
Result:= TAmazonS3Client;
end;
function TAmazonS3Client.getAllBuckets: TS3Buckets;
function TAmazonS3Client.autoBuildBuckets: TS3Buckets;
var
session: TS3GetAllBucketsSession = nil;
begin

View file

@ -28,7 +28,7 @@ type
class function driverName: String; override;
class function createInstance: TCloudDriver; override;
function getConcreteClass: TCloudDriverClass; override;
function getAllBuckets: TS3Buckets; override;
function autoBuildBuckets: TS3Buckets; override;
end;
implementation
@ -43,7 +43,7 @@ end;
function THuaweiOBSGetAllBucketsSession.getConnectionDataOfService: TAWSConnectionData;
begin
Result.region:= '';
Result.region:= 'cn-north-1';
Result.endPoint:= 'obs.myhuaweicloud.com';
Result.bucketName:= '';
end;
@ -70,7 +70,7 @@ begin
Result:= THuaweiOBSClient;
end;
function THuaweiOBSClient.getAllBuckets: TS3Buckets;
function THuaweiOBSClient.autoBuildBuckets: TS3Buckets;
var
session: TS3GetAllBucketsSession = nil;
begin

View file

@ -18,7 +18,7 @@ type
class function createInstance: TCloudDriver; override;
protected
function getConcreteClass: TCloudDriverClass; override;
function getAllBuckets: TS3Buckets; override;
function autoBuildBuckets: TS3Buckets; override;
end;
implementation
@ -40,7 +40,7 @@ begin
Result:= TS3CompatibleClient;
end;
function TS3CompatibleClient.getAllBuckets: TS3Buckets;
function TS3CompatibleClient.autoBuildBuckets: TS3Buckets;
var
bucket: TS3Bucket;
begin

View file

@ -28,7 +28,7 @@ type
class function driverName: String; override;
class function createInstance: TCloudDriver; override;
function getConcreteClass: TCloudDriverClass; override;
function getAllBuckets: TS3Buckets; override;
function autoBuildBuckets: TS3Buckets; override;
end;
implementation
@ -70,7 +70,7 @@ begin
Result:= TTencentCOSClient;
end;
function TTencentCOSClient.getAllBuckets: TS3Buckets;
function TTencentCOSClient.autoBuildBuckets: TS3Buckets;
var
session: TS3GetAllBucketsSession = nil;
begin

View file

@ -155,6 +155,7 @@ type
_authSession: TAWSAuthSession;
_buckets: TS3Buckets;
protected
function autoBuildBuckets: TS3Buckets; virtual; abstract;
function getConcreteClass: TCloudDriverClass; virtual; abstract;
function getConnectionDataOfBucket( const name: String ): TAWSConnectionData;
public
@ -162,8 +163,8 @@ type
destructor Destroy; override;
function clone: TCloudDriver; override;
public
function getAllBuckets: TS3Buckets;
function createLister( const path: String ): TCloudDriverLister; override;
function getAllBuckets: TS3Buckets; virtual; abstract;
public
function authorize: Boolean; override;
procedure unauthorize; override;
@ -750,20 +751,15 @@ begin
Result:= newClient;
end;
function TS3Client.createLister(const path: String): TCloudDriverLister;
var
parser: TS3PathParser;
connectionData: TAWSConnectionData;
listFolderSession: TCloudDriverListFolderSession;
procedure createBucketList;
function TS3CLient.getAllBuckets: TS3Buckets;
procedure createBuckets;
var
bucket: TS3Bucket;
begin
// todo: multi thread
if _buckets <> nil then
Exit;
_buckets:= self.getAllBuckets;
_buckets:= self.autoBuildBuckets;
if _buckets.Count > 0 then
Exit;
@ -771,11 +767,20 @@ var
bucket.connectionData:= self.getDefaultConnectionData;
_buckets.add( bucket );
end;
begin
createBuckets;
Result:= _buckets;
end;
function TS3Client.createLister(const path: String): TCloudDriverLister;
var
parser: TS3PathParser;
connectionData: TAWSConnectionData;
listFolderSession: TCloudDriverListFolderSession;
begin
parser:= TS3PathParser.Create( path );
try
createBucketList;
self.getAllBuckets;
if Path = EmptyStr then begin
Result:= TS3BucketsLister.Create( _buckets );
end else begin