Update client use of libcurl docs

* Update client use of libcurl docs
This commit is contained in:
abraunegg 2024-03-14 05:43:57 +11:00
parent 86b4cd3452
commit 0efe298b81
3 changed files with 27 additions and 11 deletions

View file

@ -1,19 +1,19 @@
# OneDrive Client for Linux Application Architecture
## How does the client work at a high level?
The client utilises the 'libcurl' library to communicate with the Microsoft Authentication Service and the Microsoft Graph API. The diagram below shows this high level interaction with the Microsoft services online:
The client utilises the 'libcurl' library to communicate with Microsoft OneDrive via the Microsoft Graph API. The diagram below shows this high level interaction with the Microsoft and GitHub API services online:
![client_use_of_libcurl](./puml/client_use_of_libcurl.png)
Depending on your operational environment, it is possible to 'tweak' the following options which will modify how libcurl operates with it's interaction with Microsoft OneDrive services:
* Downgrade all HTTPS operations to use HTTP1.1 ('force_http_11')
* Control how long a specific transfer should take before it is considered too slow and aborted ('operation_timeout')
* Control libcurl handling of DNS Cache Timeout ('dns_timeout')
* Control the maximum time allowed for the connection to be established ('connect_timeout')
* Control the timeout for activity on an established HTTPS connection ('data_timeout')
* Control what IP protocol version should be used when communicating with OneDrive ('ip_protocol_version')
* Control what User Agent is presented to Microsoft services ('user_agent')
* Downgrade all HTTPS operations to use HTTP1.1 (Config Option: `force_http_11`)
* Control how long a specific transfer should take before it is considered too slow and aborted (Config Option: `operation_timeout`)
* Control libcurl handling of DNS Cache Timeout (Config Option: `dns_timeout`)
* Control the maximum time allowed for the connection to be established (Config Option: `connect_timeout`)
* Control the timeout for activity on an established HTTPS connection (Config Option: `data_timeout`)
* Control what IP protocol version should be used when communicating with OneDrive (Config Option: `ip_protocol_version`)
* Control what User Agent is presented to Microsoft services (Config Option: `user_agent`)
**Note:** The default 'user_agent' value conforms to specific Microsoft requirements to identify as an ISV that complies with OneDrive traffic decoration requirements. Changing this value potentially will impact how Microsoft see's your client, thus your traffic may get throttled. For further information please read: https://learn.microsoft.com/en-us/sharepoint/dev/general-development/how-to-avoid-getting-throttled-or-blocked-in-sharepoint-online

Binary file not shown.

Before

Width:  |  Height:  |  Size: 27 KiB

After

Width:  |  Height:  |  Size: 52 KiB

View file

@ -1,16 +1,32 @@
@startuml
participant "OneDrive Client\nfor Linux" as od
participant "libcurl" as lc
participant "Client Web Browser" as browser
participant "Microsoft Authentication Service\n(OAuth 2.0 Endpoint)" as oauth
participant "GitHub API" as github
participant "Microsoft Graph API" as graph
activate od
activate lc
od->oauth: Request access token
od->od: Generate Authentication\nService URL
activate browser
od->browser: Navigate to Authentication\nService URL via Client Web Browser
browser->oauth: Request access token
activate oauth
oauth-->od: Access token
oauth-->browser: Access token
browser-->od: Access token
deactivate oauth
deactivate browser
od->lc: Check application version\nvia api.github.com
activate github
lc->github: Query release status
activate github
github-->lc: Release information
deactivate github
lc-->od: Process release information
deactivate lc
loop API Communication
od->lc: Construct HTTPS request (with token)
@ -22,4 +38,4 @@ loop API Communication
lc-->od: Process response
deactivate lc
end
@enduml
@enduml