[prev in list] [next in list] [prev in thread] [next in thread]
List: kde-core-devel
Subject: [PATCH] Add WebDav REPORT query to KIO
From: Grégory_Oestreicher <greg () kamago ! net>
Date: 2009-11-01 23:23:47
Message-ID: 200911020023.47798.greg () kamago ! net
[Download RAW message or body]
[Repost of this message to the right ML after being redirected here. Sorry for
the inconvenience to the kde-devel reader]
Hi,
Here is a patch against the SVN trunk that adds the WebDav REPORT query (RFC
3253). It's mostly a copy-and-paste of other methods and it works OK for me
against the CalDav implementations I could test.
This is required for Akonadi CalDav support, which should be released soon.
Cheers,
Grégory
["kdelibs_add_dav_report.diff" (text/x-patch)]
Index: interfaces/kio/http.h
===================================================================
--- interfaces/kio/http.h (révision 1041941)
+++ interfaces/kio/http.h (copie de travail)
@@ -28,6 +28,7 @@ namespace KIO {
HTTP_OPTIONS, DAV_PROPFIND, DAV_PROPPATCH, DAV_MKCOL,
DAV_COPY, DAV_MOVE, DAV_LOCK, DAV_UNLOCK, DAV_SEARCH,
DAV_SUBSCRIBE, DAV_UNSUBSCRIBE, DAV_POLL, DAV_NOTIFY,
+ DAV_REPORT,
HTTP_UNKNOWN = -1};
}
Index: kioslave/http/http.cpp
===================================================================
--- kioslave/http/http.cpp (révision 1041941)
+++ kioslave/http/http.cpp (copie de travail)
@@ -269,6 +269,8 @@ static QString methodString(HTTP_METHOD
return "UNSUBSCRIBE ";
case DAV_POLL:
return "POLL ";
+ case DAV_REPORT:
+ return "REPORT ";
default:
Q_ASSERT(false);
return QString();
@@ -1540,6 +1542,9 @@ QString HTTPProtocol::davError( int code
case HTTP_GET:
action = i18nc( "request type", "retrieve the contents of the specified file \
or folder" ); break;
+ case DAV_REPORT:
+ action = i18nc( "request type", "run a report in the specified folder" );
+ break;
case HTTP_PUT:
case HTTP_POST:
case HTTP_HEAD:
@@ -2231,6 +2236,7 @@ bool HTTPProtocol::sendQuery()
davHeader = "Lock-token: " + metaData("davLockToken") + "\r\n";
break;
case DAV_SEARCH:
+ case DAV_REPORT:
hasDavData = true;
/* fall through */
case DAV_SUBSCRIBE:
Index: kio/kio/davjob.cpp
===================================================================
--- kio/kio/davjob.cpp (révision 1041941)
+++ kio/kio/davjob.cpp (copie de travail)
@@ -162,4 +162,11 @@ DavJob* KIO::davSearch( const KUrl& url,
return DavJobPrivate::newJob(url, KIO::DAV_SEARCH, doc.toString(), flags);
}
+DavJob* KIO::davReport( const KUrl& url, const QDomDocument& report, const QString \
&depth, JobFlags flags ) +{
+ DavJob *job = DavJobPrivate::newJob(url, (int) KIO::DAV_REPORT, \
report.toString(), flags); + job->addMetaData( "davDepth", depth );
+ return job;
+}
+
#include "davjob.moc"
Index: kio/kio/davjob.h
===================================================================
--- kio/kio/davjob.h (révision 1041941)
+++ kio/kio/davjob.h (copie de travail)
@@ -107,6 +107,17 @@ namespace KIO {
*/
KIO_EXPORT DavJob* davSearch( const KUrl &url, const QString& nsURI, const \
QString& qName, const QString& query, JobFlags flags = DefaultFlags );
+ /**
+ * Creates a new DavJob that issues a REPORT command.
+ *
+ * @param url the URL of the resource
+ * @param report a REPORT document that describes the request to make
+ * @param depth the depth of the request. Can be "0", "1" or "infinity"
+ * @param flags: We support HideProgressInfo here
+ * @return the new DavJob
+ */
+ KIO_EXPORT DavJob* davReport( const KUrl& url, const QDomDocument& report, const \
QString &depth, JobFlags flags = DefaultFlags ); +
}
#endif
[prev in list] [next in list] [prev in thread] [next in thread]
Configure |
About |
News |
Add a list |
Sponsored by KoreLogic