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 ++++++++++++++++++++++ 1 file changed, 71 insertions(+) create mode 100644 src/Client/Requests/UserLists/UserListUploadRequest.cpp (limited to 'src/Client/Requests/UserLists/UserListUploadRequest.cpp') 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); +} + +} +} +} -- cgit v1.2.3