[prev in list] [next in list] [prev in thread] [next in thread]
List: kde-commits
Subject: playground/libs/webtech/lokarest
From: Josef Spillner <spillner () kde ! org>
Date: 2008-10-13 20:43:22
Message-ID: 1223930602.232112.24931.nullmailer () svn ! kde ! org
[Download RAW message or body]
SVN commit 871065 by josef:
- always return the content-type as part of the metadata, and make use of it
- prepare a working PUT and POST test case
M +6 -2 demo/testlokarest.cpp
M +20 -11 lokarest/lokarest.cpp
M +1 -1 lokarest/lokarest.h
M +5 -3 patches/kio_http.diff
--- trunk/playground/libs/webtech/lokarest/demo/testlokarest.cpp #871064:871065
@@ -47,9 +47,9 @@
StateTransfer st_get(StateTransfer::get, Resource(url, type, QByteArray()));
// Schedule all modification requests
- m_rest->schedule(st_del);
+// m_rest->schedule(st_del);
// m_rest->schedule(st_post);
-// m_rest->schedule(st_put);
+ m_rest->schedule(st_put);
// m_rest->schedule(st_get);
// Clean up afterwards
@@ -67,6 +67,10 @@
qDebug("GET-ERROR: URL '%s'", qPrintable(url));
else if(method == StateTransfer::del)
qDebug("DEL-ERROR: URL '%s'", qPrintable(url));
+ else if(method == StateTransfer::put)
+ qDebug("PUT-ERROR: URL '%s'", qPrintable(url));
+ else if(method == StateTransfer::post)
+ qDebug("POST-ERROR: URL '%s'", qPrintable(url));
else
qDebug("?!?-ERROR: URL '%s'", qPrintable(url));
}
--- trunk/playground/libs/webtech/lokarest/lokarest/lokarest.cpp #871064:871065
@@ -43,7 +43,7 @@
{
qDebug("POST URL: '%s'; POST DATA: '%s'", qPrintable(url), data.data());
- KIO::TransferJob *job = KIO::http_post(url, data, KIO::DefaultFlags);
+ KIO::TransferJob *job = KIO::http_post(url, data, KIO::HideProgressInfo);
job->addMetaData("content-type", "Content-type: " + type);
connect(job,
@@ -58,13 +58,16 @@
{
qDebug("PUT URL: '%s'; PUT DATA: '%s'", qPrintable(url), data.data());
- KIO::TransferJob *job = KIO::put(url, -1, KIO::DefaultFlags | KIO::Overwrite);
+ KIO::TransferJob *job = KIO::put(url, -1, KIO::HideProgressInfo | KIO::Overwrite);
job->addMetaData("content-type", "Content-type: " + type);
// FIXME: kio_http doesn't use this metadata
connect(job,
SIGNAL(dataReq(KIO::Job*, QByteArray&)),
SLOT(slotOutgoingJob(KIO::Job*, QByteArray&)));
+ connect(job,
+ SIGNAL(result(KJob*)),
+ SLOT(slotDone(KJob*)));
m_data[job] = data;
@@ -74,7 +77,6 @@
void LokaRest::remove(const QString& url)
{
- // FIXME: KIO tries to remove local file here for some reason
qDebug("REMOVE URL: '%s'", qPrintable(url));
KIO::DeleteJob *job = KIO::del(url, KIO::HideProgressInfo);
@@ -115,12 +117,8 @@
void LokaRest::slotIncomingJob(KIO::Job *job, const QByteArray& data)
{
- //m_data[job] = data;
-
- // FIXME: wait for slotDone?
qDebug("-> slotIncomingJob '%s'", qPrintable(m_targeturls[job]));
-// emit signalGet(Resource(m_targeturls[job], QString(), data));
-// m_targeturls.remove(job);
+ m_data[job].append(data);
}
void LokaRest::slotDone(KJob *job)
@@ -128,8 +126,17 @@
qDebug("-> slotDone, error='%i'", job->error());
QString responsecodestr = dynamic_cast<KIO::Job*>(job)->queryMetaData("responsecode");
int responsecode = responsecodestr.toInt();
+ QString contenttype = dynamic_cast<KIO::Job*>(job)->queryMetaData("content-type");
qDebug("-> slotDone, meta-responsecode='%i'", responsecode);
+ qDebug("-> slotDone, meta-contenttype='%s'", qPrintable(contenttype));
+ QByteArray data = m_data.value(dynamic_cast<KIO::Job*>(job));
+ bool failure = job->error();
+ if((responsecode >= 400) && (responsecode <= 599))
+ {
+ failure = true;
+ }
+
StateTransfer::Method method = m_targetmethods[job];
QString url = m_targeturls[job];
@@ -137,7 +144,7 @@
|| (method == StateTransfer::put)
|| (method == StateTransfer::post))
{
- if(job->error())
+ if(failure)
{
emit signalError(url, method);
}
@@ -152,7 +159,7 @@
if(method == StateTransfer::get)
{
- if(job->error())
+ if(failure)
{
StateTransfer st(method, Resource(url, QString(), QByteArray()));
m_cache->cache(st, m_cachepolicy);
@@ -161,11 +168,13 @@
}
else
{
- // FIXME: get payload and content-type
Resource resource(url, QString(), QByteArray());
m_resourcecache->cache(resource, m_cachepolicy);
+
+ emit signalGet(Resource(m_targeturls[job], contenttype, data));
}
+ m_data.remove(job);
m_targeturls.remove(job);
m_targetmethods.remove(job);
}
--- trunk/playground/libs/webtech/lokarest/lokarest/lokarest.h #871064:871065
@@ -49,7 +49,7 @@
void remove(const QString& url);
void get(const QString& url);
- QMap<KIO::Job*, QByteArray> m_data;
+ QMap<KJob*, QByteArray> m_data;
QMap<KJob*, QString> m_targeturls;
QMap<KJob*, StateTransfer::Method> m_targetmethods;
CachePolicy m_cachepolicy;
--- trunk/playground/libs/webtech/lokarest/patches/kio_http.diff #871064:871065
@@ -2,11 +2,12 @@
===================================================================
--- http.protocol (Revision 867529)
+++ http.protocol (Arbeitskopie)
-@@ -4,6 +4,7 @@
+@@ -4,6 +4,8 @@
input=none
output=filesystem
reading=true
+deleting=true
++writing=true
defaultMimetype=application/octet-stream
determineMimetypeFromExtension=false
Icon=text-html
@@ -14,16 +15,17 @@
===================================================================
--- http.cpp (Revision 867529)
+++ http.cpp (Arbeitskopie)
-@@ -560,6 +560,8 @@
+@@ -560,6 +560,9 @@
kDebug(7113) << "Previous Response:" << m_request.prevResponseCode;
kDebug(7113) << "Current Response:" << m_request.responseCode;
+ setMetaData("responsecode", QString::number(m_request.responseCode));
++ setMetaData("content-type", m_mimeType);
+
if (m_request.responseCode < 400 &&
(m_request.prevResponseCode == 401 || m_request.prevResponseCode == 407)) {
saveAuthorization(m_request.prevResponseCode == 407);
-@@ -1316,10 +1318,21 @@
+@@ -1316,10 +1319,21 @@
// The server returns a HTTP/1.1 200 Ok or HTTP/1.1 204 No Content
// on successful completion
[prev in list] [next in list] [prev in thread] [next in thread]
Configure |
About |
News |
Add a list |
Sponsored by KoreLogic