ucb/source/ucp/webdav-curl/DAVResourceAccess.cxx |   37 +++++++++++++++++++++++
 ucb/source/ucp/webdav-curl/DAVResourceAccess.hxx |    5 +++
 2 files changed, 42 insertions(+)

New commits:
commit 59ed56fd299a0ef5e67aaba4c704262481355f43
Author:     Michael Stahl <michael.st...@allotropia.de>
AuthorDate: Fri Oct 8 18:43:17 2021 +0200
Commit:     Michael Stahl <michael.st...@allotropia.de>
CommitDate: Mon Nov 1 18:32:23 2021 +0100

    ucb: webdav-curl: implement DAVResourceAccess::OPTIONS()
    
    This is just a copy of DAVResourceAccess::PROPFIND() and trivially
    adapting 4 lines to call DAVSession::OPTIONS() with required arguments.
    
    Change-Id: If2ac8e4a465d0f09b7cf02647ac4c8e4860c45b4
    Reviewed-on: https://gerrit.libreoffice.org/c/core/+/123284
    Tested-by: Michael Stahl <michael.st...@allotropia.de>
    Reviewed-by: Michael Stahl <michael.st...@allotropia.de>

diff --git a/ucb/source/ucp/webdav-curl/DAVResourceAccess.cxx 
b/ucb/source/ucp/webdav-curl/DAVResourceAccess.cxx
index 7a2aa2b7e590..8787250c98f6 100644
--- a/ucb/source/ucp/webdav-curl/DAVResourceAccess.cxx
+++ b/ucb/source/ucp/webdav-curl/DAVResourceAccess.cxx
@@ -159,6 +159,43 @@ DAVResourceAccess & DAVResourceAccess::operator=(
     return *this;
 }
 
+void DAVResourceAccess::OPTIONS(
+    DAVOptions & rOptions,
+    const uno::Reference< ucb::XCommandEnvironment > & xEnv )
+{
+    initialize();
+
+    int errorCount = 0;
+    bool bRetry;
+    do
+    {
+        bRetry = false;
+        try
+        {
+            DAVRequestHeaders aHeaders;
+
+            getUserRequestHeaders( xEnv,
+                                   getRequestURI(),
+                                   ucb::WebDAVHTTPMethod_OPTIONS,
+                                   aHeaders );
+
+            m_xSession->OPTIONS( getRequestURI(),
+                                  rOptions,
+                                  DAVRequestEnvironment(
+                                      getRequestURI(),
+                                      new DAVAuthListener_Impl( xEnv, m_aURL ),
+                                      aHeaders, xEnv ) );
+        }
+        catch (DAVException const& e)
+        {
+            errorCount++;
+            bRetry = handleException( e, errorCount );
+            if ( !bRetry )
+                throw;
+        }
+    }
+    while ( bRetry );
+}
 
 void DAVResourceAccess::PROPFIND(
     const Depth nDepth,
diff --git a/ucb/source/ucp/webdav-curl/DAVResourceAccess.hxx 
b/ucb/source/ucp/webdav-curl/DAVResourceAccess.hxx
index 1fce8d1377dd..86a392e23cf1 100644
--- a/ucb/source/ucp/webdav-curl/DAVResourceAccess.hxx
+++ b/ucb/source/ucp/webdav-curl/DAVResourceAccess.hxx
@@ -77,6 +77,11 @@ public:
 
     // DAV methods
 
+    /// @throws DAVException
+    void
+    OPTIONS(
+              DAVOptions & rOptions,
+              const css::uno::Reference< css::ucb::XCommandEnvironment > & 
xEnv );
 
     // allprop & named
     /// @throws DAVException

Reply via email to