[prev in list] [next in list] [prev in thread] [next in thread]
List: kde-commits
Subject: [akonadi-google/wip-v0.3] /: Use PATCH to modify events
From: Dan_Vrátil <dan () progdan ! cz>
Date: 2012-04-01 0:49:23
Message-ID: 20120401004923.BD82EA60A9 () git ! kde ! org
[Download RAW message or body]
Git commit fcb9201c7f42f85766b650fe8023247b641f8795 by Dan Vrátil.
Committed on 01/04/2012 at 02:49.
Pushed by dvratil into branch 'wip-v0.3'.
Use PATCH to modify events
For standard PUT (modify) request the Google API sometimes returned
a weird error. Sending the same data with PATCH request seems to work
for now. It denies the purpos of PATCH requests, but it works for now...
M +2 -1 calendar/calendarresource.cpp
M +1 -0 contacts/contactsresource.cpp
M +12 -1 libkgoogle/accessmanager_p.cpp
M +2 -1 libkgoogle/request.h
http://commits.kde.org/akonadi-google/fcb9201c7f42f85766b650fe8023247b641f8795
diff --git a/calendar/calendarresource.cpp b/calendar/calendarresource.cpp
index bb43f15..1de851c 100644
--- a/calendar/calendarresource.cpp
+++ b/calendar/calendarresource.cpp
@@ -354,7 +354,7 @@ void CalendarResource::itemChanged(const Akonadi::Item& item, const QSet< QByteA
Services::Calendar service;
data = service.objectToJSON(static_cast< KGoogle::Object* >(&kevent));
- Request *request = new Request(url, Request::Update, "Calendar", m_account);
+ Request *request = new Request(url, Request::Patch, "Calendar", m_account);
request->setRequestData(data, "application/json");
request->setProperty("Item", QVariant::fromValue(item));
@@ -454,6 +454,7 @@ void CalendarResource::replyReceived(KGoogle::Reply* reply)
break;
case Request::Update:
+ case Request::Patch:
itemUpdated(reply);
break;
diff --git a/contacts/contactsresource.cpp b/contacts/contactsresource.cpp
index 5669d4d..727e9e1 100644
--- a/contacts/contactsresource.cpp
+++ b/contacts/contactsresource.cpp
@@ -413,6 +413,7 @@ void ContactsResource::replyReceived(KGoogle::Reply* reply)
case Request::FetchAll:
case Request::Move:
+ case Request::Patch:
break;
}
diff --git a/libkgoogle/accessmanager_p.cpp b/libkgoogle/accessmanager_p.cpp
index 19e9f66..27fd2e3 100644
--- a/libkgoogle/accessmanager_p.cpp
+++ b/libkgoogle/accessmanager_p.cpp
@@ -27,6 +27,7 @@
#include <QtNetwork/QNetworkRequest>
#include <QtCore/QByteArray>
#include <QtCore/QUrl>
+#include <QBuffer>
#include <qjson/parser.h>
#include <qjson/serializer.h>
@@ -202,7 +203,8 @@ void AccessManagerPrivate::nam_replyReceived(QNetworkReply* reply)
case KGoogle::Request::Fetch:
case KGoogle::Request::Create:
- case KGoogle::Request::Update: {
+ case KGoogle::Request::Update:
+ case KGoogle::Request::Patch: {
if (reply->header(QNetworkRequest::ContentTypeHeader).toString().contains("application/json") ||
reply->header(QNetworkRequest::ContentTypeHeader).toString().contains("text/plain")) {
@@ -307,6 +309,15 @@ void AccessManagerPrivate::nam_sendRequest(KGoogle::Request* request)
nr.setRawHeader("If-Match", "*");
nam->deleteResource(nr);
break;
+
+ case KGoogle::Request::Patch: {
+ QBuffer *buffer = new QBuffer(this);
+ buffer->setData(request->requestData());
+ buffer->open(QIODevice::ReadOnly);
+ nr.setHeader(QNetworkRequest::ContentTypeHeader, request->contentType());
+ QNetworkReply *reply = nam->sendCustomRequest(nr, "PATCH", buffer);
+ connect(reply, SIGNAL(finished()), buffer, SLOT(deleteLater()));
+ } break;
}
}
diff --git a/libkgoogle/request.h b/libkgoogle/request.h
index b8dfc00..9cf4f4d 100644
--- a/libkgoogle/request.h
+++ b/libkgoogle/request.h
@@ -45,7 +45,8 @@ class LIBKGOOGLE_EXPORT Request: public QNetworkRequest
Create, /** POST **/
Move, /** POST **/
Update, /** PUT **/
- Remove /** DELETE **/
+ Remove, /** DELETE **/
+ Patch /** PATCH **/
};
/**
[prev in list] [next in list] [prev in thread] [next in thread]
Configure |
About |
News |
Add a list |
Sponsored by KoreLogic