From ecb77ad7bf25f7ba1ebe4c958218617e2ebc8a59 Mon Sep 17 00:00:00 2001 From: rakshasa Date: Mon, 26 Sep 2011 02:02:35 +0000 Subject: [PATCH] * Support conversion from Object dict_key type to XMLRPC. git-svn-id: svn://rakshasa.no/libtorrent/trunk/rtorrent@1287 e378c898-3ddf-0310-93e7-cc216c733640 --- src/rpc/xmlrpc.cc | 26 ++++++++++++++++++++++++++ 1 file changed, 26 insertions(+) diff --git a/src/rpc/xmlrpc.cc b/src/rpc/xmlrpc.cc index b6754409..4347401b 100644 --- a/src/rpc/xmlrpc.cc +++ b/src/rpc/xmlrpc.cc @@ -436,6 +436,32 @@ object_to_xmlrpc(xmlrpc_env* env, const torrent::Object& object) { return result; } + case torrent::Object::TYPE_DICT_KEY: + { + xmlrpc_value* result = xmlrpc_array_new(env); + + xmlrpc_value* key_item = object_to_xmlrpc(env, object.as_dict_key()); + xmlrpc_array_append_item(env, result, key_item); + xmlrpc_DECREF(key_item); + + if (object.as_dict_obj().is_list()) { + for (torrent::Object::list_const_iterator + itr = object.as_dict_obj().as_list().begin(), + last = object.as_dict_obj().as_list().end(); + itr != last; itr++) { + xmlrpc_value* item = object_to_xmlrpc(env, *itr); + xmlrpc_array_append_item(env, result, item); + xmlrpc_DECREF(item); + } + } else { + xmlrpc_value* arg_item = object_to_xmlrpc(env, object.as_dict_obj()); + xmlrpc_array_append_item(env, result, arg_item); + xmlrpc_DECREF(arg_item); + } + + return result; + } + default: return xmlrpc_int_new(env, 0); }