From b893a81af920ee4a1dabe45ddeefa0d71bacd026 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?J=C3=B6rn=20Friedrich=20Dreyer?= Date: Tue, 17 May 2022 15:42:12 +0000 Subject: [PATCH] add client protocol overview MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: Jörn Friedrich Dreyer --- docs/architecture/protocol-changes.md | 40 +++++++++++++++++++++++++++ 1 file changed, 40 insertions(+) create mode 100644 docs/architecture/protocol-changes.md diff --git a/docs/architecture/protocol-changes.md b/docs/architecture/protocol-changes.md new file mode 100644 index 00000000000..c83029f9d15 --- /dev/null +++ b/docs/architecture/protocol-changes.md @@ -0,0 +1,40 @@ +--- +title: "Protocol changes" +date: 2022-05-17T08:46:00+01:00 +weight: 30 +geekdocRepo: https://github.com/owncloud/ocis +geekdocEditPath: edit/master/docs/architecture +geekdocFilePath: protocol-changes.md +--- + +The spaces concept allows clients to look up the space endpoints a user has access to and then do individual sync discoveries. Technically, we introduce an indirection that allows clients to rely on server provided URLs instead of hardcoded `/webdav` or `/dav/files/{username}` paths, that may change over time. + +## Space discovery + +{{}} +%%{init: {"sequence": { "showSequenceNumbers":true, "messageFontFamily":"courier", "messageFontWeight":"normal", "messageFontSize":"11"}}}%% +%% font weight is a css bug: https://github.com/mermaid-js/mermaid/issues/1976 +%% edit this diagram by pasting it into eg. https://mermaid.live +sequenceDiagram + participant Client + participant Graph + participant SpaceA + participant SpaceB + links Client: {"web": "https://owncloud.dev/clients/web/", "RClone": "https://owncloud.dev/clients/rclone/"} + link Graph: Documentation @ https://owncloud.dev/extensions/graph/ + + Note left of Client: First, a clients looks
up the spaces a user has access to + opt space lookup + Client->>+Graph: GET /me/drives + Graph-->>-Client: 200 OK JSON list of spaces, say A, B and C,
each with a dedicated webDavURL, etag and quota + end + + Note left of Client: Then it can do a parallel
sync discovery on spaces
whose etag changed + par Client to Space A + Client->>+SpaceA: PROPFIND {webDavURL for Space A} + SpaceA-->>-Client: 207 Multistatus PROPFIND response + and Client to Space B + Client->>+SpaceB: PROPFIND {webDavURL for space B} + SpaceB-->>-Client: 207 Multistatus PROPFIND response + end +{{
}}