mirror of
https://github.com/abraunegg/onedrive
synced 2024-05-23 08:02:16 +02:00
0404ee2e37
* Add Client Architecture Documentation
64 lines
1.6 KiB
Plaintext
64 lines
1.6 KiB
Plaintext
@startuml
|
|
start
|
|
|
|
partition "Download File" {
|
|
|
|
:Get item specifics from JSON;
|
|
:Calculate item's path;
|
|
|
|
if (Is item malware?) then (yes)
|
|
:Log malware detected;
|
|
stop
|
|
else (no)
|
|
:Check for file size in JSON;
|
|
if (File size missing) then (yes)
|
|
:Log error;
|
|
stop
|
|
endif
|
|
|
|
:Configure hashes for comparison;
|
|
if (Hashes missing) then (yes)
|
|
:Log error;
|
|
stop
|
|
endif
|
|
|
|
if (Does file exist locally?) then (yes)
|
|
:Check DB for item;
|
|
if (DB hash match?) then (no)
|
|
:Log modification; Perform safe backup;
|
|
note left: Local data loss prevention
|
|
endif
|
|
endif
|
|
|
|
:Check local disk space;
|
|
if (Insufficient space?) then (yes)
|
|
:Log insufficient space;
|
|
stop
|
|
else (no)
|
|
if (Dry run?) then (yes)
|
|
:Fake download process;
|
|
else (no)
|
|
:Attempt to download file;
|
|
if (Download exception occurs?) then (yes)
|
|
:Handle exceptions; Retry download or log error;
|
|
endif
|
|
|
|
if (File downloaded successfully?) then (yes)
|
|
:Validate download;
|
|
if (Validation passes?) then (yes)
|
|
:Log success; Update DB;
|
|
else (no)
|
|
:Log validation failure; Remove file;
|
|
endif
|
|
else (no)
|
|
:Log download failed;
|
|
endif
|
|
endif
|
|
endif
|
|
endif
|
|
|
|
}
|
|
|
|
stop
|
|
@enduml
|