From d972b9219571289097de375210fec5d6d9d16902 Mon Sep 17 00:00:00 2001 From: Matthias Schiffer Date: Tue, 29 Sep 2009 15:41:31 +0200 Subject: Client: Added UserListUploadRequst --- .../Requests/UserLists/UserListUploadRequest.cpp | 71 ++++++++++++++++++++++ .../Requests/UserLists/UserListUploadRequest.h | 51 ++++++++++++++++ 2 files changed, 122 insertions(+) create mode 100644 src/Client/Requests/UserLists/UserListUploadRequest.cpp create mode 100644 src/Client/Requests/UserLists/UserListUploadRequest.h (limited to 'src/Client/Requests/UserLists') diff --git a/src/Client/Requests/UserLists/UserListUploadRequest.cpp b/src/Client/Requests/UserLists/UserListUploadRequest.cpp new file mode 100644 index 0000000..28251d8 --- /dev/null +++ b/src/Client/Requests/UserLists/UserListUploadRequest.cpp @@ -0,0 +1,71 @@ +/* + * UserListUploadRequest.cpp + * + * Copyright (C) 2009 Matthias Schiffer + * + * This program is free software: you can redistribute it and/or modify it + * under the terms of the GNU Lesser General Public License as published by the + * Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. + * See the GNU Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public License along + * with this program. If not, see . + */ + +#include "UserListUploadRequest.h" +#include + +namespace Mad { +namespace Client { +namespace UserLists { + +void UserListUploadRequest::sendRequest() { + Common::XmlData packet; + packet.setType("UploadUserList"); + packet.set("name", name); + + sendPacket(packet); +} + +void UserListUploadRequest::handlePacket(boost::shared_ptr packet) { + if(packet->getType() == "Error") { + signalFinished(Core::Exception(packet->get("Where"), + static_cast(packet->get("ErrorCode")), + packet->get("SubCode"), packet->get("SubSubCode"))); + return; + } + else if(packet->getType() == "OK") { + if(canceled) { + signalFinished(packet, Core::Exception(Core::Exception::DUPLICATE_ENTRY)); + } + else { + signalFinished(packet); + } + } + else if(packet->getType() != "Continue") { + signalFinished(Core::Exception(Core::Exception::UNEXPECTED_PACKET)); + return; // TODO Logging + } + + if(!overwrite && packet->get("exists")) { + Common::XmlData ret; + ret.setType("Cancel"); + sendPacket(ret); + canceled = true; + return; + } + + Common::XmlData ret; + ret.setType("UploadUserList"); + Common::UserLists::Util::serializeUserList(userList.get(), &ret); + sendPacket(ret); +} + +} +} +} diff --git a/src/Client/Requests/UserLists/UserListUploadRequest.h b/src/Client/Requests/UserLists/UserListUploadRequest.h new file mode 100644 index 0000000..c270b40 --- /dev/null +++ b/src/Client/Requests/UserLists/UserListUploadRequest.h @@ -0,0 +1,51 @@ +/* + * UserListUploadRequest.h + * + * Copyright (C) 2009 Matthias Schiffer + * + * This program is free software: you can redistribute it and/or modify it + * under the terms of the GNU Lesser General Public License as published by the + * Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. + * See the GNU Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public License along + * with this program. If not, see . + */ + +#ifndef MAD_COMMON_USERLISTUPLOADREQUEST_H_ +#define MAD_COMMON_USERLISTUPLOADREQUEST_H_ + +#include +#include + +namespace Mad { +namespace Client { + +namespace UserLists { + +class UserListUploadRequest : public Common::Request { + private: + Core::String name; + boost::shared_ptr userList; + bool overwrite; + bool canceled; + + protected: + virtual void sendRequest(); + virtual void handlePacket(boost::shared_ptr packet); + + public: + UserListUploadRequest(Common::Application *application, const Core::String &name0, boost::shared_ptr userList0, bool overwrite0 = false) + : Request(application), name(name0), userList(userList0), overwrite(overwrite0), canceled(false) {} +}; + +} +} +} + +#endif /* MAD_COMMON_USERLISTUPLOADREQUEST_H_ */ -- cgit v1.2.3