[Libreoffice-commits] online.git: loolwsd/LOOLWSD.cpp loolwsd/Storage.hpp
Ashod Nakashian
ashod.nakashian at collabora.co.uk
Fri Feb 19 21:45:43 UTC 2016
loolwsd/LOOLWSD.cpp | 1
loolwsd/Storage.hpp | 84 ++++++++++++++++++++++++++++++++++++++++++++++++++++
2 files changed, 85 insertions(+)
New commits:
commit 13f9b7a2dbd88974fb328498ae31bf1910d7f982
Author: Ashod Nakashian <ashod.nakashian at collabora.co.uk>
Date: Fri Feb 19 16:19:15 2016 -0500
loolwsd: Storage Abstraction support
An abstract Storage abstraction class is added.
There will be a factory to instantiate concrete
implementation for a given backend.
For WebDAV and similar hosted backends, authentication
and authorization will be done by the implementation
with the help of the Auth abstraction.
Change-Id: I38ec5dad4c2c4ce16df30d65826df96751b10e2d
Reviewed-on: https://gerrit.libreoffice.org/22513
Reviewed-by: Ashod Nakashian <ashnakash at gmail.com>
Tested-by: Ashod Nakashian <ashnakash at gmail.com>
diff --git a/loolwsd/LOOLWSD.cpp b/loolwsd/LOOLWSD.cpp
index 75a83b2..276c5fe 100644
--- a/loolwsd/LOOLWSD.cpp
+++ b/loolwsd/LOOLWSD.cpp
@@ -111,6 +111,7 @@ DEALINGS IN THE SOFTWARE.
#include "ChildProcessSession.hpp"
#include "LOOLWSD.hpp"
#include "QueueHandler.hpp"
+#include "Storage.hpp"
#include "Util.hpp"
using namespace LOOLProtocol;
diff --git a/loolwsd/Storage.hpp b/loolwsd/Storage.hpp
new file mode 100644
index 0000000..7597783
--- /dev/null
+++ b/loolwsd/Storage.hpp
@@ -0,0 +1,84 @@
+/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4; fill-column: 100 -*- */
+/*
+ * This file is part of the LibreOffice project.
+ *
+ * This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at http://mozilla.org/MPL/2.0/.
+ */
+
+// Storage abstraction.
+#ifndef INCLUDED_STORAGE_HPP
+#define INCLUDED_STORAGE_HPP
+
+#include <string>
+
+#include "Auth.hpp"
+#include "Util.hpp"
+
+/// Base class of all Storage abstractions.
+class StorageBase
+{
+public:
+
+ /// Returns a local file path given a URI.
+ /// If necessary copies the file locally first.
+ virtual std::string getFilePathFromURI(const std::string& uri) = 0;
+
+ /// Writes the contents of the file back to the URI.
+ virtual bool restoreFileToURI(const std::string& path, const std::string& uri) = 0;
+
+};
+
+/// Trivial implementation of local storage that does not need do anything.
+class LocalStorage : public StorageBase
+{
+public:
+
+ std::string getFilePathFromURI(const std::string& uri) override
+ {
+ // It's local already.
+ // TODO: Validate access?
+ return uri;
+ }
+
+ bool restoreFileToURI(const std::string& path, const std::string& uri)
+ {
+ // Nothing to do.
+ (void)path;
+ (void)uri;
+ return false;
+ }
+};
+
+class WebDAVStorage : public StorageBase
+{
+public:
+
+ WebDAVStorage(const std::string& url, std::unique_ptr<AuthBase> authAgent) :
+ _url(url),
+ _authAgent(std::move(authAgent))
+ {
+ }
+
+ std::string getFilePathFromURI(const std::string& uri) override
+ {
+ // TODO: implement webdav GET.
+ return uri;
+ }
+
+ bool restoreFileToURI(const std::string& path, const std::string& uri)
+ {
+ // TODO: implement webdav PUT.
+ (void)path;
+ (void)uri;
+ return false;
+ }
+
+private:
+ const std::string _url;
+ std::unique_ptr<AuthBase> _authAgent;
+};
+
+#endif
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
More information about the Libreoffice-commits
mailing list