* Resolve issue where if ^C or something else happens, before jsonItemsToProcess is processed, ensure the database is only updated with the deltaLink post all items being processed, which included downloading of any applicable items.
* Update comments
* Add check to ensure when creating a new directory, the value passed in must not be empty
* Update logging output to be consistent with other actions
* Update Shared Folder Handling so when adding a SharePoint Library as a Shared Folder to a Business Account these are correctly handled.
* Validate that DB matches in 'online first' vs 'local first' when using Shared Folders and SharePoint added libraries (in the case of Business Accounts)
* Tested and revalided with OneDrive Business Account with 'sync_business_shared_items = "true"'
* Tested and revalided with OneDrive Business Account with 'sync_business_shared_items = "false"'
* Tested and revalided with OneDrive Personal Account
* Ensure that 'cachedOnlineDriveData' contains valid quota data if using --local-first
* In a --local-first scenario, query the DB for unique driveId's rather than use 'cachedOnlineDriveData' which may not be fully populated
Changes
- Add helper for processing log with message and dots
- Set a rate limit of 1 second for processing dots.
- Showing processing dots during
1. db consistency check
2. file system walk.
In a --resync --local-first scenario, a Shared Folder will always be 'remote' so we need to check the remote parent id, rather than parentItem details and ensure we have a DB Tie record for the shared folder in the DB
* Add libcurl timeout on handle messaging to use 'ip_protocol_version' to set what IP protocol to use. Testing has shown that when this is triggered, it is libcurl having an issue with IPv6 DNS resolution.
* Clarify CURLOPT_CONNECTTIMEOUT in documentation
* Clarify CURLOPT_TIMEOUT in documentation
* Add 'threads' as a config file option to control the number of threads used, default of 8, max of 16
* Change CURLOPT_CONNECTTIMEOUT value to v2.4.x value default of 10 seconds
* Configure libcurl to reuse connections
* If timestamp needs to be corrected, return false so that the correct actions can be taken
* If in a --download-only scenario, do not update the timestamp online
* The OneDrive API does not present a hash for all files, most notably those that are zero byte in size (this may be fixed by the OneDrive API in the future). Add a wrapper to the existing makeItem function to test the file size before working out if this is a going to be a problem and if it is, then print out an error message if the file size is greater than 0 including either the full filename path or the items id.
* Remove sha1 from being used by the client as this is being depreciated by Microsoft in July 2023 - https://devblogs.microsoft.com/microsoft365dev/deprecation-of-sha1hash-on-onedrive-personal/
* Complete the removal of crc32 as this is also no longer present for a long time, but some code elements still existed
* Only compute quickXorHash, not quickXorHash and sha256Hash as computing sha256Hash is CPU expensive
* Update cache database stored items to only store quickXorHash and sha256Hash values (remove crc32 and sha1)