mirror of
https://github.com/abraunegg/onedrive
synced 2024-05-22 07:36:36 +02:00
0404ee2e37
* Add Client Architecture Documentation
56 lines
1.9 KiB
Plaintext
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
|