summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMichael Stahl <michael.stahl@allotropia.de>2021-09-13 15:46:01 +0200
committerMichael Stahl <michael.stahl@allotropia.de>2021-11-01 18:16:44 +0100
commitba2ceafa145880002b43c1807fae48fb66e883c6 (patch)
treef138696951c1f74fbc52582529884148c7418769
parent617fbb5fd39e668453588d1b72bfc92a9c648552 (diff)
ucb: webdav-curl: add CurlSession boilerplate
Amazingly it even builds, with warnings. Change-Id: I1f89a8a7de0c37a8908f530d46e275282cdc33de Reviewed-on: https://gerrit.libreoffice.org/c/core/+/122047 Tested-by: Michael Stahl <michael.stahl@allotropia.de> Reviewed-by: Michael Stahl <michael.stahl@allotropia.de>
-rw-r--r--postprocess/Rdb_services.mk3
-rw-r--r--ucb/Library_ucpdav1.mk1
-rw-r--r--ucb/source/ucp/webdav-curl/CurlSession.cxx139
-rw-r--r--ucb/source/ucp/webdav-curl/CurlSession.hxx112
-rw-r--r--ucb/source/ucp/webdav-curl/DAVSession.hxx2
-rw-r--r--ucb/source/ucp/webdav-curl/DAVSessionFactory.cxx6
-rw-r--r--ucb/source/ucp/webdav-curl/SerfLockStore.cxx10
-rw-r--r--ucb/source/ucp/webdav-curl/SerfLockStore.hxx8
8 files changed, 268 insertions, 13 deletions
diff --git a/postprocess/Rdb_services.mk b/postprocess/Rdb_services.mk
index 1faf14a374a0..aea72437c4f9 100644
--- a/postprocess/Rdb_services.mk
+++ b/postprocess/Rdb_services.mk
@@ -179,6 +179,9 @@ $(eval $(call gb_Rdb_add_components,services,\
$(if $(filter serf,$(WITH_WEBDAV)), \
ucb/source/ucp/webdav/ucpdav1 \
) \
+ $(if $(filter curl,$(WITH_WEBDAV)), \
+ ucb/source/ucp/webdav-curl/ucpdav1 \
+ ) \
$(call gb_Helper_optional,SCRIPTING, \
basctl/util/basctl \
sc/util/vbaobj \
diff --git a/ucb/Library_ucpdav1.mk b/ucb/Library_ucpdav1.mk
index c4c739773d13..2809a49cac54 100644
--- a/ucb/Library_ucpdav1.mk
+++ b/ucb/Library_ucpdav1.mk
@@ -37,6 +37,7 @@ $(eval $(call gb_Library_use_externals,ucpdav1,\
$(eval $(call gb_Library_add_exception_objects,ucpdav1,\
ucb/source/ucp/webdav-curl/ContentProperties \
+ ucb/source/ucp/webdav-curl/CurlSession \
ucb/source/ucp/webdav-curl/CurlUri \
ucb/source/ucp/webdav-curl/DAVProperties \
ucb/source/ucp/webdav-curl/DAVResourceAccess \
diff --git a/ucb/source/ucp/webdav-curl/CurlSession.cxx b/ucb/source/ucp/webdav-curl/CurlSession.cxx
new file mode 100644
index 000000000000..fcbf87a0ea75
--- /dev/null
+++ b/ucb/source/ucp/webdav-curl/CurlSession.cxx
@@ -0,0 +1,139 @@
+/* -*- 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/.
+ */
+
+#include "CurlSession.hxx"
+
+namespace http_dav_ucp
+{
+CurlSession::CurlSession(::rtl::Reference<DAVSessionFactory> const& rpFactory, OUString const& rURI,
+ ::ucbhelper::InternetProxyDecider const& rProxyDecider)
+ : DAVSession(rpFactory)
+ , m_URI(rURI)
+ , m_rProxyDecider(rProxyDecider)
+{
+}
+
+CurlSession::~CurlSession() {}
+
+auto CurlSession::CanUse(OUString const& rURI) -> bool {}
+
+auto CurlSession::UsesProxy() -> bool {}
+
+auto CurlSession::abort() -> void {}
+
+// DAV methods
+auto CurlSession::PROPFIND(OUString const& rURIReference, Depth const depth,
+ ::std::vector<OUString> const& rPropertyNames,
+ ::std::vector<DAVResource>& o_rResources,
+ DAVRequestEnvironment const& rEnv) -> void
+{
+}
+
+auto CurlSession::PROPFIND(OUString const& rURIReference, Depth const depth,
+ ::std::vector<DAVResourceInfo>& o_rResourceInfos,
+ DAVRequestEnvironment const& rEnv) -> void
+{
+}
+
+auto CurlSession::PROPPATCH(OUString const& rURIReference,
+ ::std::vector<ProppatchValue> const& rValues,
+ DAVRequestEnvironment const& rEnv) -> void
+{
+}
+
+auto CurlSession::HEAD(OUString const& rURIReference, ::std::vector<OUString> const& rHeaderNames,
+ DAVResource& io_rResource, DAVRequestEnvironment const& rEnv) -> void
+{
+}
+
+auto CurlSession::GET(OUString const& rURIReference, DAVRequestEnvironment const& rEnv)
+ -> uno::Reference<io::XInputStream>
+{
+}
+
+auto CurlSession::GET(OUString const& rURIReference, uno::Reference<io::XOutputStream>& rxOutStream,
+ DAVRequestEnvironment const& rEnv) -> void
+{
+}
+
+auto CurlSession::GET(OUString const& rURIReference, ::std::vector<OUString> const& rHeaderNames,
+ DAVResource& io_rResource, DAVRequestEnvironment const& rEnv)
+ -> uno::Reference<io::XInputStream>
+{
+}
+
+auto CurlSession::GET(OUString const& rURIReference, uno::Reference<io::XOutputStream>& rxOutStream,
+ ::std::vector<OUString> const& rHeaderNames, DAVResource& io_rResource,
+ DAVRequestEnvironment const& rEnv) -> void
+{
+}
+
+auto CurlSession::PUT(OUString const& rURIReference,
+ uno::Reference<io::XInputStream> const& rxInStream,
+ DAVRequestEnvironment const& rEnv) -> void
+{
+}
+
+auto CurlSession::POST(OUString const& rURIReference, OUString const& rContentType,
+ OUString const& rReferer, uno::Reference<io::XInputStream> const& rxInStream,
+ DAVRequestEnvironment const& rEnv) -> uno::Reference<io::XInputStream>
+{
+}
+
+auto CurlSession::POST(OUString const& rURIReference, OUString const& rContentType,
+ OUString const& rReferer, uno::Reference<io::XInputStream> const& rxInStream,
+ uno::Reference<io::XOutputStream>& rxOutStream,
+ DAVRequestEnvironment const& rEnv) -> void
+{
+}
+
+auto CurlSession::MKCOL(OUString const& rURIReference, DAVRequestEnvironment const& rEnv) -> void {}
+
+auto CurlSession::COPY(OUString const& rSourceURIReference, OUString const& rDestinationURI,
+ DAVRequestEnvironment const& rEnv, bool const isOverwrite) -> void
+{
+}
+
+auto CurlSession::MOVE(OUString const& rSourceURIReference, OUString const& rDestinationURI,
+ DAVRequestEnvironment const& rEnv, bool const isOverwrite) -> void
+{
+}
+
+auto CurlSession::DESTROY(OUString const& rURIReference, DAVRequestEnvironment const& rEnv) -> void
+{
+}
+
+auto CurlSession::LOCK(OUString const& rURIReference, ucb::Lock /*const*/& rLock,
+ DAVRequestEnvironment const& rEnv) -> void
+{
+}
+
+auto CurlSession::LOCK(OUString const& rURIReference, sal_Int64 const nTimeout,
+ DAVRequestEnvironment const& rEnv) -> sal_Int64
+{
+}
+
+auto CurlSession::UNLOCK(OUString const& rURIReference, DAVRequestEnvironment const& rEnv) -> void
+{
+}
+
+auto CurlSession::NonInteractive_LOCK(::std::u16string_view const rURIReference,
+ sal_Int32& o_rLastChanceToSendRefreshRequest) -> bool
+{
+ (void)this;
+}
+
+auto CurlSession::NonInteractive_UNLOCK(::std::u16string_view const rURIReference) -> void
+{
+ (void)this;
+}
+
+} // namespace http_dav_ucp
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/ucb/source/ucp/webdav-curl/CurlSession.hxx b/ucb/source/ucp/webdav-curl/CurlSession.hxx
new file mode 100644
index 000000000000..22947c774420
--- /dev/null
+++ b/ucb/source/ucp/webdav-curl/CurlSession.hxx
@@ -0,0 +1,112 @@
+/* -*- 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/.
+ */
+
+#pragma once
+
+#include "DAVSession.hxx"
+#include "CurlUri.hxx"
+
+namespace http_dav_ucp
+{
+class CurlSession : public DAVSession
+{
+private:
+ CurlUri m_URI;
+ ::ucbhelper::InternetProxyDecider const& m_rProxyDecider;
+
+public:
+ explicit CurlSession(::rtl::Reference<DAVSessionFactory> const& rpFactory, OUString const& rURI,
+ ::ucbhelper::InternetProxyDecider const& rProxyDecider);
+ virtual ~CurlSession() override;
+
+ virtual auto CanUse(OUString const& rURI) -> bool override;
+
+ virtual auto UsesProxy() -> bool override;
+
+ // DAV methods
+ virtual auto PROPFIND(OUString const& rURIReference, Depth depth,
+ ::std::vector<OUString> const& rPropertyNames,
+ ::std::vector<DAVResource>& o_rResources,
+ DAVRequestEnvironment const& rEnv) -> void override;
+
+ virtual auto PROPFIND(OUString const& rURIReference, Depth depth,
+ ::std::vector<DAVResourceInfo>& o_rResourceInfos,
+ DAVRequestEnvironment const& rEnv) -> void override;
+
+ virtual auto PROPPATCH(OUString const& rURIReference,
+ ::std::vector<ProppatchValue> const& rValues,
+ DAVRequestEnvironment const& rEnv) -> void override;
+
+ virtual auto HEAD(OUString const& rURIReference, ::std::vector<OUString> const& rHeaderNames,
+ DAVResource& io_rResource, DAVRequestEnvironment const& rEnv)
+ -> void override;
+
+ virtual auto GET(OUString const& rURIReference, DAVRequestEnvironment const& rEnv)
+ -> css::uno::Reference<css::io::XInputStream> override;
+
+ virtual auto GET(OUString const& rURIReference,
+ css::uno::Reference<css::io::XOutputStream>& rxOutStream,
+ DAVRequestEnvironment const& rEnv) -> void override;
+
+ virtual auto GET(OUString const& rURIReference, ::std::vector<OUString> const& rHeaderNames,
+ DAVResource& io_rResource, DAVRequestEnvironment const& rEnv)
+ -> css::uno::Reference<css::io::XInputStream> override;
+
+ virtual auto GET(OUString const& rURIReference,
+ css::uno::Reference<css::io::XOutputStream>& rxOutStream,
+ ::std::vector<OUString> const& rHeaderNames, DAVResource& io_rResource,
+ DAVRequestEnvironment const& rEnv) -> void override;
+
+ virtual auto PUT(OUString const& rURIReference,
+ css::uno::Reference<css::io::XInputStream> const& rxInStream,
+ DAVRequestEnvironment const& rEnv) -> void override;
+
+ virtual auto POST(OUString const& rURIReference, OUString const& rContentType,
+ OUString const& rReferer,
+ css::uno::Reference<css::io::XInputStream> const& rxInStream,
+ DAVRequestEnvironment const& rEnv)
+ -> css::uno::Reference<css::io::XInputStream> override;
+
+ virtual auto POST(OUString const& rURIReference, OUString const& rContentType,
+ OUString const& rReferer,
+ css::uno::Reference<css::io::XInputStream> const& rxInStream,
+ css::uno::Reference<css::io::XOutputStream>& rxOutStream,
+ DAVRequestEnvironment const& rEnv) -> void override;
+
+ virtual auto MKCOL(OUString const& rURIReference, DAVRequestEnvironment const& rEnv)
+ -> void override;
+
+ virtual auto COPY(OUString const& rSourceURIReference, OUString const& rDestinationURI,
+ DAVRequestEnvironment const& rEnv, bool isOverwrite = false) -> void override;
+
+ virtual auto MOVE(OUString const& rSourceURIReference, OUString const& rDestinationURI,
+ DAVRequestEnvironment const& rEnv, bool isOverwrite = false) -> void override;
+
+ virtual auto DESTROY(OUString const& rURIReference, DAVRequestEnvironment const& rEnv)
+ -> void override;
+
+ virtual auto LOCK(OUString const& rURIReference, css::ucb::Lock /*const*/& rLock,
+ DAVRequestEnvironment const& rEnv) -> void override;
+
+ virtual auto LOCK(OUString const& rURIReference, sal_Int64 nTimeout,
+ DAVRequestEnvironment const& rEnv) -> sal_Int64 override;
+
+ virtual auto UNLOCK(OUString const& rURIReference, DAVRequestEnvironment const& rEnv)
+ -> void override;
+
+ virtual auto abort() -> void override;
+
+ auto NonInteractive_LOCK(::std::u16string_view rURIReference,
+ sal_Int32& o_rLastChanceToSendRefreshRequest) -> bool;
+ auto NonInteractive_UNLOCK(::std::u16string_view rURIReference) -> void;
+};
+
+} // namespace http_dav_ucp
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/ucb/source/ucp/webdav-curl/DAVSession.hxx b/ucb/source/ucp/webdav-curl/DAVSession.hxx
index 8289d052dc90..d5e8e4ad0a57 100644
--- a/ucb/source/ucp/webdav-curl/DAVSession.hxx
+++ b/ucb/source/ucp/webdav-curl/DAVSession.hxx
@@ -55,7 +55,7 @@ public:
}
}
- virtual bool CanUse( const OUString & inPath ) = 0;
+ virtual bool CanUse( const OUString & rURI ) = 0;
virtual bool UsesProxy() = 0;
diff --git a/ucb/source/ucp/webdav-curl/DAVSessionFactory.cxx b/ucb/source/ucp/webdav-curl/DAVSessionFactory.cxx
index 812d64d2e273..5de6edd198d4 100644
--- a/ucb/source/ucp/webdav-curl/DAVSessionFactory.cxx
+++ b/ucb/source/ucp/webdav-curl/DAVSessionFactory.cxx
@@ -19,7 +19,7 @@
#include <memory>
#include "DAVSessionFactory.hxx"
-#include "SerfSession.hxx"
+#include "CurlSession.hxx"
#include "CurlUri.hxx"
using namespace http_dav_ucp;
@@ -46,7 +46,7 @@ rtl::Reference< DAVSession > DAVSessionFactory::createDAVSession(
CurlUri const aURI( inUri );
std::unique_ptr< DAVSession > xElement(
- new SerfSession( this, inUri, *m_xProxyDecider ) );
+ new CurlSession(this, inUri, *m_xProxyDecider) );
aIt = m_aMap.emplace( inUri, xElement.get() ).first;
aIt->second->m_aContainerIt = aIt;
@@ -69,7 +69,7 @@ rtl::Reference< DAVSession > DAVSessionFactory::createDAVSession(
// call a little:
CurlUri const aURI( inUri );
- aIt->second = new SerfSession( this, inUri, *m_xProxyDecider );
+ aIt->second = new CurlSession(this, inUri, *m_xProxyDecider);
aIt->second->m_aContainerIt = aIt;
return aIt->second;
}
diff --git a/ucb/source/ucp/webdav-curl/SerfLockStore.cxx b/ucb/source/ucp/webdav-curl/SerfLockStore.cxx
index ec2f6ae1bea7..ff9eaac816df 100644
--- a/ucb/source/ucp/webdav-curl/SerfLockStore.cxx
+++ b/ucb/source/ucp/webdav-curl/SerfLockStore.cxx
@@ -21,7 +21,7 @@
#include <sal/log.hxx>
#include <osl/time.h>
#include <osl/thread.hxx>
-#include "SerfSession.hxx"
+#include "CurlSession.hxx"
#include "SerfLockStore.hxx"
using namespace http_dav_ucp;
@@ -94,7 +94,7 @@ SerfLockStore::~SerfLockStore()
for ( auto& rLockInfo : m_aLockInfoMap )
{
- rLockInfo.second.m_xSession->UNLOCK( rLockInfo.first );
+ rLockInfo.second.m_xSession->NonInteractive_UNLOCK(rLockInfo.first);
}
}
@@ -142,7 +142,7 @@ OUString SerfLockStore::getLockToken( const OUString& rLock )
void SerfLockStore::addLock( const OUString& rLock,
const OUString& sToken,
- rtl::Reference< SerfSession > const & xSession,
+ rtl::Reference<CurlSession> const & xSession,
sal_Int32 nLastChanceToSendRefreshRequest )
{
osl::MutexGuard aGuard( m_aMutex );
@@ -199,8 +199,8 @@ void SerfLockStore::refreshLocks()
{
// refresh the lock.
sal_Int32 nlastChanceToSendRefreshRequest = -1;
- if ( rInfo.m_xSession->LOCK(
- rLockInfo.first, &nlastChanceToSendRefreshRequest ) )
+ if (rInfo.m_xSession->NonInteractive_LOCK(
+ rLockInfo.first, nlastChanceToSendRefreshRequest))
{
rInfo.m_nLastChanceToSendRefreshRequest
= nlastChanceToSendRefreshRequest;
diff --git a/ucb/source/ucp/webdav-curl/SerfLockStore.hxx b/ucb/source/ucp/webdav-curl/SerfLockStore.hxx
index 5449f049a3ec..5bfc8c952cca 100644
--- a/ucb/source/ucp/webdav-curl/SerfLockStore.hxx
+++ b/ucb/source/ucp/webdav-curl/SerfLockStore.hxx
@@ -24,7 +24,7 @@
#include <osl/mutex.hxx>
#include <rtl/ref.hxx>
#include <rtl/ustring.hxx>
-#include "SerfSession.hxx"
+#include "CurlSession.hxx"
namespace http_dav_ucp
{
@@ -34,14 +34,14 @@ class TickerThread;
struct LockInfo
{
OUString m_sToken;
- rtl::Reference< SerfSession > m_xSession;
+ rtl::Reference<CurlSession> m_xSession;
sal_Int32 m_nLastChanceToSendRefreshRequest;
LockInfo()
: m_nLastChanceToSendRefreshRequest( -1 ) {}
LockInfo( const OUString& sToken,
- rtl::Reference< SerfSession > const & xSession,
+ rtl::Reference<CurlSession> const & xSession,
sal_Int32 nLastChanceToSendRefreshRequest )
: m_sToken( sToken ),
m_xSession( xSession ),
@@ -66,7 +66,7 @@ public:
void addLock( const OUString& rLock,
const OUString& sToken,
- rtl::Reference< SerfSession > const & xSession,
+ rtl::Reference<CurlSession> const & xSession,
// time in seconds since Jan 1 1970
// -1: infinite lock, no refresh
sal_Int32 nLastChanceToSendRefreshRequest );