mirror of
https://github.com/abraunegg/onedrive
synced 2024-06-15 20:25:18 +02:00
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
|