[prev in list] [next in list] [prev in thread] [next in thread] 

List:       kde-commits
Subject:    KDE/kdelibs/kio/kio
From:       Dawit Alemayehu <adawit () kde ! org>
Date:       2010-11-13 7:06:24
Message-ID: 20101113070624.AD82FAC89E () svn ! kde ! org
[Download RAW message or body]

SVN commit 1196363 by adawit:

- Handle CustomOperation through KIO using the new CustomHTTPMethod meta-data added \
by Maks.  See SVN commit 1195834 by orlovich. Thanks Maks.

  Tested with the same WebODF demo site mentioned in khtml's commit rev 1195838. This \
site   should now be completely functional.


 M  +23 -5     accessmanager.cpp  


--- trunk/KDE/kdelibs/kio/kio/accessmanager.cpp #1196362:1196363
@@ -31,6 +31,7 @@
 #include <kconfiggroup.h>
 #include <ksharedconfig.h>
 #include <kprotocolinfo.h>
+#include <klocalizedstring.h>
 
 #include <QtCore/QUrl>
 #include <QtCore/QStringBuilder>
@@ -149,8 +150,9 @@
     
     if (!d->externalContentAllowed && !isLocalRequest(reqUrl)) {
         kDebug( 7044 ) << "Blocked: " << reqUrl;
-        /* if kioJob equals zero, the AccessManagerReply will block the request */
-        return new KDEPrivate::AccessManagerReply(op, req, kioJob, this);
+        KDEPrivate::AccessManagerReply* reply = new \
KDEPrivate::AccessManagerReply(op, req, kioJob, this); +        \
reply->setStatus(i18n("Blocked request."),QNetworkReply::ContentAccessDenied); +      \
return reply;  }
 
     switch (op) {
@@ -178,15 +180,31 @@
             break;
         }
         case DeleteOperation: {
+            //kDebug(7044) << "DeleteOperation:" << reqUrl;
             kioJob = KIO::file_delete(reqUrl, KIO::HideProgressInfo);
             break;
         }
-        default: {
+        case CustomOperation: {
+            const QByteArray& method = \
req.attribute(QNetworkRequest::CustomVerbAttribute).toByteArray(); +            \
//kDebug(7044) << "CustomOperation:" << reqUrl << "method:" << method << "outgoing \
data:" << outgoingData;             +            if (method.isEmpty()) {
+                KDEPrivate::AccessManagerReply* reply = new \
KDEPrivate::AccessManagerReply(op, req, kioJob, this); +                \
reply->setStatus(i18n("Unknown HTTP verb."), QNetworkReply::ProtocolUnknownError); +  \
return reply; +            } else {
+                if (outgoingData)
+                    kioJob = KIO::http_post(reqUrl, outgoingData->readAll(), \
KIO::HideProgressInfo); +                else
+                    kioJob = KIO::get(reqUrl, KIO::NoReload, KIO::HideProgressInfo);
+                kioJob->metaData().insert(QL1S("CustomHTTPMethod"), method);
+            }
+            break;
+        }
+        default:
             // Defer to QNAM for operations that cannot be handled by KIO, 
             // e.g. CustomOperation,
             return QNetworkAccessManager::createRequest(op, req, outgoingData);      \
  }
-    }
 
     kioJob->setRedirectionHandlingEnabled(false);
     
@@ -205,7 +223,7 @@
 
     kioJob->addMetaData(d->metaDataForRequest(req));
 
-    if ( op == PostOperation && !kioJob->metaData().contains("content-type"))  {
+    if ( op == PostOperation && !kioJob->metaData().contains(QL1S("content-type")))  \
                {
         const QVariant header = req.header(QNetworkRequest::ContentTypeHeader);
         if (header.isValid())
           kioJob->addMetaData(QL1S("content-type"),


[prev in list] [next in list] [prev in thread] [next in thread] 

Configure | About | News | Add a list | Sponsored by KoreLogic