aboutsummaryrefslogtreecommitdiff
path: root/backends/cloud
AgeCommit message (Collapse)Author
2019-09-15CLOUD: Fix MSVC Warning in Google Drive Token RefresherD G Turner
This was reported by Henke37 on IRC.
2019-08-25CLOUD: Make Network::ErrorResponse messages more verboseAlexander Tkachev
This commit updates all usages of Network::ErrorResponse to specify at least method name if not precise reason why operation failed.
2019-08-25CLOUD: Handle HTTP response headers case-insensitivelyAlexander Tkachev
RFC 2616 states that HTTP headers are not case-sensitive and also allows arbitrary number of whitespace characters around header value. Previous implementation was dependant on headers to be in "Title-Case" and to have only one space before header value. That has lead to cloud sync failure on Debian x64 (user's network environment was probably the reason though). This commit adds a new method, which parses headers name-value pairs into HashMap. To ensure case-insensitivity, all headers names are converted to lowercase, and thus code that uses this method should specify headers in lowercase. All usages of raw headers contents were updated to use this method.
2019-08-24CLOUD: Fix Inverted Test Regression in Debug Message CodeD G Turner
This was introduced by my previous commit to this where I accidently inverted the tests during refactoring.
2019-08-04CLOUD: Fix OneDriveTokenRefresherAlexander Tkachev
If user doesn't have a "saves" folder, listing it as a first step of syncing save files would result in 404 from OneDrive. OneDriveTokenRefresher handles token-related errors (401), so when it meets 404, it calls its finishError method. But because there was some strange behaviour from OneDrive with sending invalid JSON, this method tries fixing JSON and parsing it again. If it is valid, it calls non-error method again, and in result we get stack overflow. In order to fix that, I've added a non-JSON prefix "<irrecoverable>", so finishError won't be able to parse JSON and thus won't call finishJson again. Saves syncing callback does check string contents apart from trying to parse JSON, so it still works and correctly handles the situation when "saves" directory is missing. But, if needed, code can be updated to search for the prefix I've added and remove it before parsing original JSON.
2019-08-03CLOUD: Fix GCC Compilation Warning in Debug Code.D G Turner
The warning emitted here was due to debug() call with an empty format string, so this could have been fixed by replacing this with "%s", "". However, this change should be better since it avoids the duplication of the number of file check over several lines and reduces the string duplication i.e. DRY improvements.
2019-07-30CLOUD: Ask user to manually enable StorageAlexander Tkachev
For more security, newly connected Storage only gets username/used space information and is disabled until user manually presses the button.
2019-07-30CLOUD: Change interaction with /refresh endpointAlexander Tkachev
Refresh token is now passed as custom HTTP header, not in GET parameter, to prevent them being written into server logs.
2019-07-30CLOUD: Ignore hidden files in sync/downloadAlexander Tkachev
In PR#1754 we've discussed and decided to ignore hidden (having a name starting with '.') files while syncing saves or downloading game files. This commit adds a CloudManager method to test whether file should be ignored, and this method could be extended later if we need to ignore some other specific file names.
2019-07-30CLOUD: Minor fixes for the PR#1754Alexander Tkachev
- added missing 'd' in "%d" in SavesSyncRequest; - removed trailing ',' in enum in gui/options.h; - fixed #endif to have // before USE_LIBCURL in gui/options.h.
2019-07-30GUI: Rewrite Cloud tabAlexander Tkachev
- StorageWizardDialog is removed, along with bmps it was using; - EditTextWidget now accepts custom font in constructor; - ScrollContainer scrollbar now jumps to top when content height changes so it's "overscrolled"; - IndexPageHandler now does not awaits for `code` GET-parameter, as local webserver is no longer used to connect Storages; - CloudManager and all corresponding Storages are updated to support disconnecting and to notify about successful connection.
2019-07-30CLOUD: Refactor BaseStorage largest methodsAlexander Tkachev
Not sure if that's really better, but it was really annoying to copy-paste `delete a; delete b; return;` in every error-handling section.
2019-07-30CLOUD: Minor cleanup in OneDriveTokenRefresherAlexander Tkachev
2019-07-30CLOUD: Fix saves syncingAlexander Tkachev
This mostly affects OneDrive saves syncing, because it is the only cloud provider to return 0 as timestamp of (non-)created file. 0 is treated as EOF in /saves/timestamps file, thus all timestamps after such 0 timestamps were ignored and files were reuploaded as being "new". This commit also adds more verbose debug information on SavesSyncRequest decisions making for easier debugging.
2019-07-30CLOUD: Fix OneDriveStorage API interactionAlexander Tkachev
Something changed and old API endpoint "api.onedrive.com" now does not work. The other one, "graph.microsoft.com", does, but there were some other changes in JSON it returns. These changes are also in this commit.
2019-07-30CLOUD: Update BaseStorage to expect no refresh_tokenAlexander Tkachev
While refreshing access_token, some cloud providers also pass a new refresh_token. Google Drive does not, and accepts the same refresh_token next time. These changes allow this to happen.
2019-07-30CLOUD: Update storages to refresh token via cloud.scummvm.orgAlexander Tkachev
2019-07-30CLOUD: Get rid of 'dists/clouds/cloud_keys.h'Alexander Tkachev
2019-07-30CLOUD: Update GoogleDriveStorage and BoxStorage to auth via cloud.scummvm.orgAlexander Tkachev
2019-07-30CLOUD: Update OneDriveStorage to work via cloud.scummvm.orgAlexander Tkachev
2019-07-30CLOUD: Add BaseStorage, which does auth via cloud.scummvm.orgAlexander Tkachev
2019-07-30CLOUD: Cleanup a little bit - remove unused config keys usageAlexander Tkachev
2019-07-30CLOUD: Update DropboxStorage to work with cloud.scummvm.orgAlexander Tkachev
2019-07-30CLOUD: Update DropboxStorage to work via scummvm.org & StorageWizardDialog ↵Alexander Tkachev
correspondingly
2019-05-09CLOUD: Fix MSVC warningsSupSuper
Fixes warning C4305: truncation from 'double' to 'float'
2018-12-17WIN32: Fix libcurl redefining ARRAYSIZESupSuper
libcurl pulls in Windows headers, so let's include it first to avoid clashing with common headers
2017-07-10Revert "COMMON: Change way the Singleton instances are instantiated"Eugene Sandulenko
This reverts commit eefa72afa1978a9dea10f5b1833fcc8f58a3468e. With this patch ConfigManager is broken.
2017-07-10COMMON: Change way the Singleton instances are instantiatedThierry Crozat
This fixes tons of warnings with clang from a recent xcode version on macOS (and possibly other systems) complaining that an instantiation of _singleton is required but no definition is available.
2017-02-28CLOUD: Fix GCC Unused Variable Warning.D G Turner
This variable is not used as the constructors for the storage type classes store the resulting objects into the Cloud Manager using replaceStorage(this) instead.
2017-01-10CLOUD: Add FIXME comment.D G Turner
This is generating a compiler warning for set-but-unused, but it looks as if this is meant to be used in some way i.e. code is unfinished or orphaned.
2017-01-10CLOUD: Fix Remaining Shadowing Compiler Warnings.D G Turner
2017-01-10CLOUD: Fix Various Shadowing Compiler Warnings from errorCallback.D G Turner
2016-10-29CLOUD: Use OSDMessageQueue to post OSD messages from the cloud threadThierry Crozat
2016-10-20CLOUD: Don't error out when PNG support is not enabledBastien Bouclet
2016-09-18CLOUD: Change the cloud icon to be updated by the main threadBastien Bouclet
The cloud manager registers itself as an event source as a mean to be polled periodically by the GUI or engine code. The periodical polling is used to update the OSD icon indicating background sync activity. Also move the cloud icon from ConnectionManager to CloudManager, allowing to decouple icon handling from network connections updates.
2016-09-18ALL: Homogeneize use of 'saved game' in messagesThierry Crozat
2016-09-17CLOUD: Fix compilation for integer constant too large for 'long' typeThierry Crozat
Hopefully all ports we have support LL constants. Otherwise we will have to find a different way to fix this.
2016-09-13CLOUD: Switch to the new OSD APIBastien Bouclet
2016-09-03JANITORIAL: Make GPL headers uniformEugene Sandulenko
2016-08-24CLOUD: Remove unused includesPeter Bozsó
2016-08-24CLOUD: Fix warningsEugene Sandulenko
2016-08-24CLOUD: Fix RequestsAlexander Tkachev
Remove unnecessary JSON warnings, fix a few places.
2016-08-24CLOUD: Update SavesSyncRequestAlexander Tkachev
Add JSON checks in the callback.
2016-08-24CLOUD: Update OneDriveUploadRequestAlexander Tkachev
More JSON checks.
2016-08-24CLOUD: Update OneDriveAlexander Tkachev
Added JSON checks. New jsonContainsObject() method added to CurlJsonRequest.
2016-08-24CLOUD: Update GoogleDriveUploadRequestAlexander Tkachev
JSON checks in callback.
2016-08-24CLOUD: Update GoogleDriveStorageAlexander Tkachev
More JSON checks in callbacks.
2016-08-24CLOUD: Update DropboxUploadRequestAlexander Tkachev
JSON checks.
2016-08-24CLOUD: Update DropboxStorageAlexander Tkachev
JSON checks added.
2016-08-24CLOUD: Update Dropbox RequestsAlexander Tkachev
Adding more JSON checks there.