mirror of
https://github.com/doublecmd/doublecmd.git
synced 2026-06-21 09:58:13 +00:00
UPD: MacCloud: step-53: unify TDropBoxToken to TCloudDriverToken
This commit is contained in:
parent
468a4ac676
commit
118d9e49a3
4 changed files with 56 additions and 159 deletions
|
|
@ -46,28 +46,6 @@ type
|
|||
property listenURI: String read _listenURI;
|
||||
end;
|
||||
|
||||
{ TDropBoxToken }
|
||||
|
||||
TDropBoxToken = class
|
||||
private
|
||||
_access: String;
|
||||
_refresh: String;
|
||||
_accessExpirationTime: NSTimeInterval;
|
||||
private
|
||||
function isValidAccessToken: Boolean;
|
||||
function isValidFreshToken: Boolean;
|
||||
public
|
||||
constructor Create;
|
||||
constructor Create( const access: String; const refresh: String; const accessExpirationTime: NSTimeInterval );
|
||||
function clone: TDropBoxToken;
|
||||
public
|
||||
procedure setExpiration( const seconds: Integer );
|
||||
procedure invalid;
|
||||
property access: String read _access write _access;
|
||||
property refresh: String read _refresh write _refresh;
|
||||
property accessExpirationTime: NSTimeInterval read _accessExpirationTime write _accessExpirationTime;
|
||||
end;
|
||||
|
||||
{ TDropBoxAuthPKCESession }
|
||||
|
||||
TDropBoxAuthPKCESession = class
|
||||
|
|
@ -77,7 +55,7 @@ type
|
|||
_codeVerifier: String;
|
||||
_state: String;
|
||||
_code: String;
|
||||
_token: TDropBoxToken;
|
||||
_token: TCloudDriverToken;
|
||||
_accountID: String;
|
||||
_alert: NSAlert;
|
||||
_lockObject: TCriticalSection;
|
||||
|
|
@ -100,8 +78,8 @@ type
|
|||
function authorized: Boolean;
|
||||
procedure setAuthHeader( http: TMiniHttpClient );
|
||||
protected
|
||||
procedure setToken( const token: TDropBoxToken );
|
||||
function getToken: TDropBoxToken;
|
||||
procedure setToken( const token: TCloudDriverToken );
|
||||
function getToken: TCloudDriverToken;
|
||||
end;
|
||||
|
||||
{ TDropBoxListFolderSession }
|
||||
|
|
@ -224,6 +202,8 @@ type
|
|||
constructor Create( const config: TDropBoxConfig );
|
||||
destructor Destroy; override;
|
||||
function clone: TCloudDriver; override;
|
||||
function getToken: TCloudDriverToken; override;
|
||||
procedure setToken( const token: TCloudDriverToken ); override;
|
||||
public
|
||||
function authorize: Boolean; override;
|
||||
procedure unauthorize; override;
|
||||
|
|
@ -243,9 +223,6 @@ type
|
|||
procedure createFolder( const path: String ); override;
|
||||
procedure delete( const path: String ); override;
|
||||
procedure copyOrMove( const fromPath: String; const toPath: String; const needToMove: Boolean ); override;
|
||||
public
|
||||
function getToken: TDropBoxToken;
|
||||
procedure setToken( const token: TDropBoxToken );
|
||||
end;
|
||||
|
||||
var
|
||||
|
|
@ -400,60 +377,6 @@ begin
|
|||
_listenURI:= listenURI;
|
||||
end;
|
||||
|
||||
{ TDropBoxToken }
|
||||
|
||||
function TDropBoxToken.isValidAccessToken: Boolean;
|
||||
var
|
||||
now: NSDate;
|
||||
begin
|
||||
Result:= False;
|
||||
if _access = EmptyStr then
|
||||
Exit;
|
||||
now:= NSDate.new;
|
||||
if now.timeIntervalSince1970 < _accessExpirationTime then
|
||||
Result:= True;
|
||||
now.release;
|
||||
end;
|
||||
|
||||
function TDropBoxToken.isValidFreshToken: Boolean;
|
||||
begin
|
||||
Result:= _refresh <> EmptyStr;
|
||||
end;
|
||||
|
||||
constructor TDropBoxToken.Create;
|
||||
begin
|
||||
end;
|
||||
|
||||
constructor TDropBoxToken.Create(const access: String; const refresh: String;
|
||||
const accessExpirationTime: NSTimeInterval);
|
||||
begin
|
||||
_access:= access;
|
||||
_refresh:= refresh;
|
||||
_accessExpirationTime:= accessExpirationTime;
|
||||
end;
|
||||
|
||||
function TDropBoxToken.clone: TDropBoxToken;
|
||||
begin
|
||||
Result:= TDropBoxToken.Create( _access, _refresh, _accessExpirationTime );
|
||||
end;
|
||||
|
||||
procedure TDropBoxToken.setExpiration(const seconds: Integer);
|
||||
var
|
||||
now: NSDate;
|
||||
expirationDate: NSDate;
|
||||
begin
|
||||
now:= NSDate.new;
|
||||
expirationDate:= now.dateByAddingTimeInterval( seconds - 300 );
|
||||
_accessExpirationTime:= expirationDate.timeIntervalSince1970;
|
||||
now.release;
|
||||
end;
|
||||
|
||||
procedure TDropBoxToken.invalid;
|
||||
begin
|
||||
_access:= EmptyStr;
|
||||
_refresh:= EmptyStr;
|
||||
end;
|
||||
|
||||
{ TDropBoxAuthPKCESession }
|
||||
|
||||
procedure TDropBoxAuthPKCESession.requestAuthorization;
|
||||
|
|
@ -658,7 +581,7 @@ constructor TDropBoxAuthPKCESession.Create(const config: TDropBoxConfig; const d
|
|||
begin
|
||||
_config:= config;
|
||||
_dropBoxClient:= dropBoxClient;
|
||||
_token:= TDropBoxToken.Create;
|
||||
_token:= TCloudDriverToken.Create;
|
||||
_lockObject:= TCriticalSection.Create;
|
||||
end;
|
||||
|
||||
|
|
@ -714,16 +637,16 @@ begin
|
|||
http.addHeader( DropBoxConst.HEADER.AUTH, 'Bearer ' + access );
|
||||
end;
|
||||
|
||||
procedure TDropBoxAuthPKCESession.setToken(const token: TDropBoxToken);
|
||||
procedure TDropBoxAuthPKCESession.setToken(const token: TCloudDriverToken);
|
||||
var
|
||||
oldToken: TDropBoxToken;
|
||||
oldToken: TCloudDriverToken;
|
||||
begin
|
||||
oldToken:= _token;
|
||||
_token:= token;
|
||||
oldToken.Free;
|
||||
end;
|
||||
|
||||
function TDropBoxAuthPKCESession.getToken: TDropBoxToken;
|
||||
function TDropBoxAuthPKCESession.getToken: TCloudDriverToken;
|
||||
begin
|
||||
Result:= _token;
|
||||
end;
|
||||
|
|
@ -1327,12 +1250,12 @@ begin
|
|||
end;
|
||||
end;
|
||||
|
||||
function TDropBoxClient.getToken: TDropBoxToken;
|
||||
function TDropBoxClient.getToken: TCloudDriverToken;
|
||||
begin
|
||||
Result:= _authSession.getToken;
|
||||
end;
|
||||
|
||||
procedure TDropBoxClient.setToken(const token: TDropBoxToken);
|
||||
procedure TDropBoxClient.setToken(const token: TCloudDriverToken);
|
||||
begin
|
||||
_authSession.setToken( token );
|
||||
end;
|
||||
|
|
|
|||
|
|
@ -108,6 +108,8 @@ type
|
|||
function authorize: Boolean; virtual; abstract;
|
||||
procedure unauthorize; virtual; abstract;
|
||||
function authorized: Boolean; virtual; abstract;
|
||||
function getToken: TCloudDriverToken; virtual; abstract;
|
||||
procedure setToken( const token: TCloudDriverToken ); virtual; abstract;
|
||||
public
|
||||
procedure download(
|
||||
const serverPath: String;
|
||||
|
|
|
|||
|
|
@ -178,6 +178,8 @@ type
|
|||
function authorize: Boolean; override;
|
||||
procedure unauthorize; override;
|
||||
function authorized: Boolean; override;
|
||||
function getToken: TCloudDriverToken; override;
|
||||
procedure setToken( const token: TCloudDriverToken ); override;
|
||||
public
|
||||
function createLister( const path: String ): TCloudDriverLister; override;
|
||||
public
|
||||
|
|
@ -193,9 +195,6 @@ type
|
|||
procedure createFolder( const path: String ); override;
|
||||
procedure delete( const path: String ); override;
|
||||
procedure copyOrMove( const fromPath: String; const toPath: String; const needToMove: Boolean ); override;
|
||||
public
|
||||
function getToken: TCloudDriverToken;
|
||||
procedure setToken( const token: TCloudDriverToken );
|
||||
end;
|
||||
|
||||
var
|
||||
|
|
|
|||
|
|
@ -52,24 +52,59 @@ implementation
|
|||
|
||||
type
|
||||
|
||||
{ TDropBoxCloudDriverConfig }
|
||||
{ TTokenCloudDriverConfig }
|
||||
|
||||
TDropBoxCloudDriverConfig = class( TMacCloudDriverConfig )
|
||||
class procedure loadCommon( const params: NSDictionary ); override;
|
||||
class procedure saveCommon( const params: NSMutableDictionary ); override;
|
||||
TTokenCloudDriverConfig = class( TMacCloudDriverConfig )
|
||||
class procedure loadSecurity( const driver: TCloudDriver; const params: NSDictionary ); override;
|
||||
class procedure saveSecurity( const driver: TCloudDriver; const params: NSMutableDictionary ); override;
|
||||
end;
|
||||
|
||||
{ TDropBoxCloudDriverConfig }
|
||||
|
||||
TDropBoxCloudDriverConfig = class( TTokenCloudDriverConfig )
|
||||
class procedure loadCommon( const params: NSDictionary ); override;
|
||||
class procedure saveCommon( const params: NSMutableDictionary ); override;
|
||||
end;
|
||||
|
||||
{ TYandexCloudDriverConfig }
|
||||
|
||||
TYandexCloudDriverConfig = class( TMacCloudDriverConfig )
|
||||
TYandexCloudDriverConfig = class( TTokenCloudDriverConfig )
|
||||
class procedure loadCommon( const params: NSDictionary ); override;
|
||||
class procedure saveCommon( const params: NSMutableDictionary ); override;
|
||||
class procedure loadSecurity( const driver: TCloudDriver; const params: NSDictionary ); override;
|
||||
class procedure saveSecurity( const driver: TCloudDriver; const params: NSMutableDictionary ); override;
|
||||
end;
|
||||
|
||||
{ TTokenCloudDriverConfig }
|
||||
|
||||
class procedure TTokenCloudDriverConfig.loadSecurity(
|
||||
const driver: TCloudDriver; const params: NSDictionary);
|
||||
var
|
||||
token: TCloudDriverToken;
|
||||
jsonToken: NSDictionary;
|
||||
begin
|
||||
jsonToken:= TJsonUtil.getDictionary( params, 'token' );
|
||||
token:= TCloudDriverToken.Create(
|
||||
TJsonUtil.getString( jsonToken, 'access' ),
|
||||
TJsonUtil.getString( jsonToken, 'refresh' ),
|
||||
TJsonUtil.getDateTime( jsonToken, 'accessExpirationTime' ) );
|
||||
driver.setToken( token );
|
||||
end;
|
||||
|
||||
class procedure TTokenCloudDriverConfig.saveSecurity(
|
||||
const driver: TCloudDriver; const params: NSMutableDictionary);
|
||||
var
|
||||
client: TDropBoxClient absolute driver;
|
||||
token: TCloudDriverToken;
|
||||
jsonToken: NSMutableDictionary;
|
||||
begin
|
||||
token:= client.getToken;
|
||||
jsonToken:= NSMutableDictionary.new;
|
||||
TJsonUtil.setString( jsonToken, 'access', token.access );
|
||||
TJsonUtil.setString( jsonToken, 'refresh', token.refresh );
|
||||
TJsonUtil.setDateTime( jsonToken, 'accessExpirationTime', token.accessExpirationTime );
|
||||
TJsonUtil.setDictionary( params, 'token', jsonToken );
|
||||
jsonToken.release;
|
||||
end;
|
||||
|
||||
{ TDropBoxCloudDriverConfig }
|
||||
|
||||
class procedure TDropBoxCloudDriverConfig.loadCommon(const params: NSDictionary);
|
||||
|
|
@ -93,37 +128,6 @@ begin
|
|||
TJsonUtil.setString( params, 'listenURI', dropBoxConfig.listenURI );
|
||||
end;
|
||||
|
||||
class procedure TDropBoxCloudDriverConfig.loadSecurity(
|
||||
const driver: TCloudDriver; const params: NSDictionary);
|
||||
var
|
||||
dropBoxClient: TDropBoxClient absolute driver;
|
||||
token: TDropBoxToken;
|
||||
jsonToken: NSDictionary;
|
||||
begin
|
||||
jsonToken:= TJsonUtil.getDictionary( params, 'token' );
|
||||
token:= TDropBoxToken.Create(
|
||||
TJsonUtil.getString( jsonToken, 'access' ),
|
||||
TJsonUtil.getString( jsonToken, 'refresh' ),
|
||||
TJsonUtil.getDateTime( jsonToken, 'accessExpirationTime' ) );
|
||||
dropBoxClient.setToken( token );
|
||||
end;
|
||||
|
||||
class procedure TDropBoxCloudDriverConfig.saveSecurity(
|
||||
const driver: TCloudDriver; const params: NSMutableDictionary);
|
||||
var
|
||||
dropBoxClient: TDropBoxClient absolute driver;
|
||||
token: TDropBoxToken;
|
||||
jsonToken: NSMutableDictionary;
|
||||
begin
|
||||
token:= dropBoxClient.getToken;
|
||||
jsonToken:= NSMutableDictionary.new;
|
||||
TJsonUtil.setString( jsonToken, 'access', token.access );
|
||||
TJsonUtil.setString( jsonToken, 'refresh', token.refresh );
|
||||
TJsonUtil.setDateTime( jsonToken, 'accessExpirationTime', token.accessExpirationTime );
|
||||
TJsonUtil.setDictionary( params, 'token', jsonToken );
|
||||
jsonToken.release;
|
||||
end;
|
||||
|
||||
{ TYandexCloudDriverConfig }
|
||||
|
||||
class procedure TYandexCloudDriverConfig.loadCommon(const params: NSDictionary);
|
||||
|
|
@ -147,37 +151,6 @@ begin
|
|||
TJsonUtil.setString( params, 'listenURI', yandexConfig.listenURI );
|
||||
end;
|
||||
|
||||
class procedure TYandexCloudDriverConfig.loadSecurity(
|
||||
const driver: TCloudDriver; const params: NSDictionary);
|
||||
var
|
||||
yandexClient: TYandexClient absolute driver;
|
||||
token: TCloudDriverToken;
|
||||
jsonToken: NSDictionary;
|
||||
begin
|
||||
jsonToken:= TJsonUtil.getDictionary( params, 'token' );
|
||||
token:= TCloudDriverToken.Create(
|
||||
TJsonUtil.getString( jsonToken, 'access' ),
|
||||
TJsonUtil.getString( jsonToken, 'refresh' ),
|
||||
TJsonUtil.getDateTime( jsonToken, 'accessExpirationTime' ) );
|
||||
yandexClient.setToken( token );
|
||||
end;
|
||||
|
||||
class procedure TYandexCloudDriverConfig.saveSecurity(
|
||||
const driver: TCloudDriver; const params: NSMutableDictionary);
|
||||
var
|
||||
yandexClient: TYandexClient absolute driver;
|
||||
token: TCloudDriverToken;
|
||||
jsonToken: NSMutableDictionary;
|
||||
begin
|
||||
token:= yandexClient.getToken;
|
||||
jsonToken:= NSMutableDictionary.new;
|
||||
TJsonUtil.setString( jsonToken, 'access', token.access );
|
||||
TJsonUtil.setString( jsonToken, 'refresh', token.refresh );
|
||||
TJsonUtil.setDateTime( jsonToken, 'accessExpirationTime', token.accessExpirationTime );
|
||||
TJsonUtil.setDictionary( params, 'token', jsonToken );
|
||||
jsonToken.release;
|
||||
end;
|
||||
|
||||
{ TMacCloudConfigManager }
|
||||
|
||||
constructor TMacCloudConfigManager.Create;
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue