UPD: MacCloud/S3: step-98: simplify unnecessary different configurations for each S3 Driver

This commit is contained in:
rich2014 2025-05-04 16:01:52 +08:00
commit 2f7f150698
3 changed files with 23 additions and 79 deletions

View file

@ -16,13 +16,9 @@ type
public
class function driverName: String; override;
class function createInstance: TCloudDriver; override;
constructor Create( const config: TS3Config );
function clone: TCloudDriver; override;
end;
var
aliyunOSSConfig: TS3Config;
implementation
{ TAliyunOSSClient }
@ -34,24 +30,14 @@ end;
class function TAliyunOSSClient.createInstance: TCloudDriver;
begin
Result:= TAliyunOSSClient.Create( aliyunOSSConfig );
end;
constructor TAliyunOSSClient.Create( const config: TS3Config );
var
params: TAWSAuthSessionParams;
begin
Inherited Create( config );
params:= Default( TAWSAuthSessionParams );
params.config:= config;
_authSession:= TAWSAuthSession.Create( params );
Result:= TAliyunOSSClient.Create;
end;
function TAliyunOSSClient.clone: TCloudDriver;
var
newClient: TAliyunOSSClient;
begin
newClient:= TAliyunOSSClient.Create( _config );
newClient:= TAliyunOSSClient.Create;
newClient._authSession.Free;
newClient._authSession:= TAWSAuthSession( _authSession.clone(newClient) );
Result:= newClient;

View file

@ -83,10 +83,9 @@ type
TS3Client = class( TAWSCloudDriver )
protected
_config: TS3Config;
_authSession: TAWSAuthSession;
public
constructor Create( const config: TS3Config );
constructor Create;
destructor Destroy; override;
public
function createLister( const path: String ): TCloudDriverLister; override;
@ -116,6 +115,9 @@ type
implementation
var
s3CloudDriverConfig: TS3Config;
// raise the corresponding exception if there are errors
procedure S3ClientResultProcess( const cloudDriverResult: TCloudDriverResult );
var
@ -439,9 +441,13 @@ end;
{ TS3Client }
constructor TS3Client.Create( const config: TS3Config );
constructor TS3Client.Create;
var
params: TAWSAuthSessionParams;
begin
_config:= config;
params:= Default( TAWSAuthSessionParams );
params.config:= s3CloudDriverConfig;
_authSession:= TAWSAuthSession.Create( params );
end;
destructor TS3Client.Destroy;
@ -555,5 +561,15 @@ begin
end;
end;
initialization
s3CloudDriverConfig:= TS3Config.Create(
'AWS4-HMAC-SHA256',
'AWS4',
's3',
'aws4_request' );
finalization
FreeAndNil( s3CloudDriverConfig );
end.

View file

@ -105,29 +105,8 @@ type
class procedure saveConnectionCommon( const driver: TCloudDriver; const params: NSMutableDictionary ); override;
class procedure loadConnectionSecurity( const driver: TCloudDriver; const params: NSDictionary ); override;
class procedure saveConnectionSecurity( const driver: TCloudDriver; const params: NSMutableDictionary ); override;
class function cloudDriverConfigPtr: TS3ConfigPtr; virtual; abstract;
class function cloudDriverClass: TCloudDriverClass; virtual; abstract;
end;
{ TWFXAliyunOSSConfig }
TWFXAliyunOSSConfig = class( TWFXS3Config )
class function cloudDriverConfigPtr: TS3ConfigPtr; override;
class function cloudDriverClass: TCloudDriverClass; override;
end;
{ TWFXAliyunOSSConfig }
class function TWFXAliyunOSSConfig.cloudDriverConfigPtr: TS3ConfigPtr;
begin
Result:= @aliyunOSSConfig;
end;
class function TWFXAliyunOSSConfig.cloudDriverClass: TCloudDriverClass;
begin
Result:= TAliyunOSSClient;
end;
{ TWFXTokenCloudDriverConfig }
class procedure TWFXTokenCloudDriverConfig.loadDriverCommon(const params: NSDictionary);
@ -251,43 +230,11 @@ end;
{ TWFXS3Config }
class procedure TWFXS3Config.loadDriverCommon( const params: NSDictionary );
var
versionAlgorithm: String;
prefix: String;
service: String;
request: String;
oldCloudDriverConfig: TS3Config;
jsonCredential: NSDictionary;
begin
jsonCredential:= TJsonUtil.getDictionary( params, 'credential' );
versionAlgorithm:= TJsonUtil.getString( jsonCredential, 'versionAlgorithm' );
prefix:= TJsonUtil.getString( jsonCredential, 'prefix' );
service:= TJsonUtil.getString( jsonCredential, 'service' );
request:= TJsonUtil.getString( jsonCredential, 'request' );
oldCloudDriverConfig:= self.cloudDriverConfigPtr^;
self.cloudDriverConfigPtr^:= TS3Config.Create(
versionAlgorithm,
prefix,
service,
request );
if Assigned(oldCloudDriverConfig) then
oldCloudDriverConfig.Free;
cloudDriverManager.register( self.cloudDriverClass );
end;
class procedure TWFXS3Config.saveDriverCommon( const params: NSMutableDictionary );
var
cloudDriverConfig: TS3Config;
jsonCredential: NSMutableDictionary;
begin
cloudDriverConfig:= self.cloudDriverConfigPtr^;
jsonCredential:= NSMutableDictionary.new;
TJsonUtil.setString( jsonCredential, 'versionAlgorithm', cloudDriverConfig.versionAlgorithm );
TJsonUtil.setString( jsonCredential, 'prefix', cloudDriverConfig.prefix );
TJsonUtil.setString( jsonCredential, 'service', cloudDriverConfig.service );
TJsonUtil.setString( jsonCredential, 'request', cloudDriverConfig.request );
TJsonUtil.setDictionary( params, 'credential', jsonCredential );
jsonCredential.release;
end;
class procedure TWFXS3Config.loadConnectionCommon( const driver: TCloudDriver; const params: NSDictionary );
@ -592,12 +539,7 @@ begin
boxConfig:= TTokenCloudDriverConfigWithSecret.Create( '', '', 'dc2ea085a05ac273a://box/auth' );
cloudDriverManager.register( TBoxClient );
WFXCloudDriverConfigManager.register( TAliyunOSSClient.driverName, TWFXAliyunOSSConfig );
aliyunOSSConfig:= TS3Config.Create(
'AWS4-HMAC-SHA256',
'AWS4',
's3',
'aws4_request' );
WFXCloudDriverConfigManager.register( TAliyunOSSClient.driverName, TWFXS3Config );
cloudDriverManager.register( TAliyunOSSClient );
end;