mirror of
https://github.com/doublecmd/doublecmd.git
synced 2026-06-28 10:02:14 +00:00
ADD: MacCloud/S3: step-126: improve getAllBuckets()
This commit is contained in:
parent
f36c3e9af4
commit
4e65f7feae
6 changed files with 26 additions and 21 deletions
|
|
@ -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
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue