mirror of
https://github.com/doublecmd/doublecmd.git
synced 2026-06-21 09:58:13 +00:00
UPD: MacCloud/S3: step-98: simplify unnecessary different configurations for each S3 Driver
This commit is contained in:
parent
38b3410422
commit
2f7f150698
3 changed files with 23 additions and 79 deletions
|
|
@ -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;
|
||||
|
|
|
|||
|
|
@ -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.
|
||||
|
||||
|
|
|
|||
|
|
@ -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;
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue