diff options
author | Michael Stahl <michael.stahl@allotropia.de> | 2021-09-13 15:46:01 +0200 |
---|---|---|
committer | Michael Stahl <michael.stahl@allotropia.de> | 2021-11-01 18:16:44 +0100 |
commit | ba2ceafa145880002b43c1807fae48fb66e883c6 (patch) | |
tree | f138696951c1f74fbc52582529884148c7418769 | |
parent | 617fbb5fd39e668453588d1b72bfc92a9c648552 (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.mk | 3 | ||||
-rw-r--r-- | ucb/Library_ucpdav1.mk | 1 | ||||
-rw-r--r-- | ucb/source/ucp/webdav-curl/CurlSession.cxx | 139 | ||||
-rw-r--r-- | ucb/source/ucp/webdav-curl/CurlSession.hxx | 112 | ||||
-rw-r--r-- | ucb/source/ucp/webdav-curl/DAVSession.hxx | 2 | ||||
-rw-r--r-- | ucb/source/ucp/webdav-curl/DAVSessionFactory.cxx | 6 | ||||
-rw-r--r-- | ucb/source/ucp/webdav-curl/SerfLockStore.cxx | 10 | ||||
-rw-r--r-- | ucb/source/ucp/webdav-curl/SerfLockStore.hxx | 8 |
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 ); |