1. 19 Jun, 2021 4 commits
  2. 16 Jun, 2021 1 commit
    • Martin Hoeher's avatar
      Further Dropbox fixes · d07bf219
      Martin Hoeher authored
      Nearly there! The basic Dropbox sync tests are now all passing. The sync
      "stress" test currently still fails - this is most likely due to we do
      not handle non-incremental folder listings properly.
      d07bf219
  3. 08 Jun, 2021 1 commit
  4. 06 Jun, 2021 1 commit
  5. 30 May, 2021 1 commit
    • Martin Hoeher's avatar
      Additional Dropbox sync fixes · 12be3a19
      Martin Hoeher authored
      Several fixed to further continue the DirectorySynchronizer for Dropbox.
      The sync is not yet fully working, but we get some steps further.
      12be3a19
  6. 29 May, 2021 1 commit
  7. 22 May, 2021 1 commit
  8. 13 May, 2021 2 commits
  9. 09 May, 2021 1 commit
    • Martin Hoeher's avatar
      Handle HTTP 429 Too Many Requests · 44237aab
      Martin Hoeher authored
      The WebDAV jobs now handle HTTP 429 (Too Many Requests) responses from
      servers. If the server sends a Retry-After header, we try to use it to
      determine the delay, otherwise, a fixed delay is used, after which the
      request is run again.
      44237aab
  10. 06 May, 2021 1 commit
    • Martin Hoeher's avatar
      Allow WebDAV jobs against servers not reporting etags · 7af925e2
      Martin Hoeher authored
      This change allows running the WebDAV jobs against servers which don't
      properly report back etags in the following cases:
      
      - When downloading a file.
      - When getting folder information about a single file or folder.
      
      This is not yet enough to get the sync via the DirectorySynchronizer
      working - this requires additional work. In particular, one of the
      faulty servers (OpenDrive) pretty quickly responds with an HTTP 429 Too
      Many Requests error. So probably, in addition to the etags, work will
      need to be done in order to delay requests appropriately.
      7af925e2
  11. 03 May, 2021 1 commit
  12. 26 Apr, 2021 1 commit
    • Martin Hoeher's avatar
      Provide hint that the sync should be retried. · df354ee3
      Martin Hoeher authored
      This change introduces a new boolean flag in the DirectorySynchronizer
      class: retryWithFewerJobs. This flag is set to true after a failed sync
      if the class detects that the sync could be retried with a reduced
      number of parallel jobs.
      
      This is a workaround for the problem reported via
      https://github.com/mhoeher/opentodolist/issues/46. There, the server was
      not able to handle all requests in parallel and hence prematurely closed
      down connections. By re-running the sync with e.g. only a single job
      running at a time, it worked just fine.
      df354ee3
  13. 19 Apr, 2021 1 commit
    • Martin Hoeher's avatar
      Add recusive listing + cursors · ccbcc5a8
      Martin Hoeher authored
      The ListFilesJob now has two additional properties:
      
      The "recursive" property can be used to list a folder recursively (if
      this is supported by the backend).
      In addition, there is a new "cursor" property. After a completed
      ListFilesJob, this property can be read and saved for later use. When
      creating a new ListFilesJob, it's cursor can be set to the old value.
      The intention is, that running the job will then only yield the changed
      files and folders.
      
      Both new properties are currently only used by the DropboxListFilesJob
      implementation. The WebDAVListFilesJob could - in theory - also
      implement recursive listing. However, this is done setting the "Depth"
      HTTP header to "infinity", which not all servers support.
      
      Both properties are required to implement the sync - as we cannot use
      the same scheme as for WebDAV (as folders don't have a sync attribute).
      ccbcc5a8
  14. 18 Apr, 2021 4 commits
  15. 17 Apr, 2021 7 commits
  16. 16 Apr, 2021 1 commit
    • Martin Hoeher's avatar
      Add test against Apache mod_dav · 59e33b16
      Martin Hoeher authored
      Add a test against an Apache mod_dav instance. The Apache WebDAV
      implementation seems to have some flaws (e.g. eTag support and If-Match
      handling seems not to be complete). However, basic usage should still be
      possible now.
      
      This is mainly to work around https://bugreports.qt.io/browse/
      QTBUG-92909.
      59e33b16
  17. 15 Apr, 2021 1 commit
  18. 14 Apr, 2021 1 commit
  19. 13 Apr, 2021 1 commit
    • Martin Hoeher's avatar
      Dropbox support - initial code drop · 00b2128b
      Martin Hoeher authored
      This commit adds a lot of boilerplate code for
      adding Dropbox support to the library. All the
      required job classes and tests are added. Some
      of the jobs - the DropboxCreateFolderJob and
      DropboxGetFileInfo job are already implemented.
      The same is true for the DropboxCreateFolder
      unit test.
      
      Next up is implementing the remaining jobs
      as well as their unit tests. Furthermore, the
      DirectorySynchronizer needs some updates,
      as Dropbox does not have "sync attributes"
      (aka etags) on folders. However, their API
      allows easily retrieving the list of changes
      from the server in an elegant way. So we'll
      extend the synchronizer (and job API) a bit
      so we can utilize this approach in parallel
      to the WebDAV scheme.
      00b2128b
  20. 27 Mar, 2021 3 commits
    • Martin Hoeher's avatar
      Update version · df74e582
      Martin Hoeher authored
      df74e582
    • Martin Hoeher's avatar
      Report sync progress · 68bfd377
      Martin Hoeher authored
      Adding a new singal progress() to the DirectorySynchronizer, which
      regularly is emitted to let the user know about the current sync
      progress.
      68bfd377
    • Martin Hoeher's avatar
      Fix: Prevent apps from hanging during shutdown · 782787fb
      Martin Hoeher authored
      This fixes apps using the SQLSyncStateDatabase class from potentially
      hanging during shutdown. This was caused by the class holding an
      instance of QSqlDatabase, which is heavily discouraged by Qt. Instead,
      we now only save the connection name and use it whenever we need to get
      an instance of the database connection.
      782787fb
  21. 21 Mar, 2021 1 commit
  22. 14 Mar, 2021 4 commits