abraunegg-onedrive/docs/puml/high_level_operational_process.puml
abraunegg 0404ee2e37
Add architecture documentation to 'alpha-5' (#2639)
* Add Client Architecture Documentation
2024-02-21 06:41:22 +11:00

56 lines
1.9 KiB
Plaintext

@startuml
participant "OneDrive Client\nfor Linux" as Client
participant "Microsoft OneDrive\nAPI" as API
== Access Token Validation ==
Client -> Client: Validate access and\nexisting access token\nRefresh if needed
== Query Microsoft OneDrive /delta API ==
Client -> API: Query /delta API
API -> Client: JSON responses
== Process JSON Responses ==
loop for each JSON response
Client -> Client: Determine if JSON is 'root'\nor 'deleted' item\nElse, push into temporary array for further processing
alt if 'root' or 'deleted'
Client -> Client: Process 'root' or 'deleted' items
else
Client -> Client: Evaluate against 'Client Side Filtering' rules
alt if unwanted
Client -> Client: Discard JSON
else
Client -> Client: Process JSON (create dir/download file)
Client -> Client: Save in local database cache
end
end
end
== Local Cache Database Processing for Data Integrity ==
Client -> Client: Process local cache database\nto check local data integrity and for differences
alt if difference found
Client -> API: Upload file/folder change including deletion
API -> Client: Response with item metadata
Client -> Client: Save response to local cache database
end
== Local Filesystem Scanning ==
Client -> Client: Scan local filesystem\nfor new files/folders
loop for each new item
Client -> Client: Check item against 'Client Side Filtering' rules
alt if item passes filtering
Client -> API: Upload new file/folder change including deletion
API -> Client: Response with item metadata
Client -> Client: Save response in local\ncache database
else
Client -> Client: Discard item\n(Does not meet filtering criteria)
end
end
== Final Data True-Up ==
Client -> API: Query /delta link for true-up
API -> Client: Process further online JSON changes if required
@enduml