BOOL WizXmlRpcParamsToXml(CWizXMLDocument& doc, const CString& strMethodName, CWizXmlRpcValue* pParam1, CWizXmlRpcValue* pParam2, CWizXmlRpcValue* pParam3, CWizXmlRpcValue* pParam4, CWizXmlRpcValue* pParam5, CWizXmlRpcValue* pParam6, CWizXmlRpcValue* pParam7, CWizXmlRpcValue* pParam8) { CWizXMLNode nodeMethodCall; doc.AppendChild(_T("methodCall"), nodeMethodCall); // nodeMethodCall.SetChildNodeText(_T("methodName"), strMethodName); // CWizXMLNode nodeParams; nodeMethodCall.AppendChild(_T("params"), nodeParams); // CWizXmlRpcValue* arrayParams[] = {pParam1, pParam2, pParam3, pParam4, pParam5, pParam6, pParam7, pParam8, NULL}; // CWizXmlRpcValue** ppParam = arrayParams; while (*ppParam) { CWizXMLNode nodeParamValue; nodeParams.AppendNodeByPath(_T("param/value"), nodeParamValue); // CWizXmlRpcValue* pParam = *ppParam; // pParam->Write(nodeParamValue); // ppParam++; } // return TRUE; }
BOOL CWizXmlRpcStructValue::Write(CWizXMLNode& nodeValue) { CWizXMLNode nodeStruct; nodeValue.AppendChild(_T("struct"), nodeStruct); // for (std::map<CString, CWizXmlRpcValue*>::const_iterator it = m_map.begin(); it != m_map.end(); it++) { CString strName = it->first; CWizXmlRpcValue* pValue = it->second; // CWizXMLNode nodeMember; nodeStruct.AppendChild(_T("member"), nodeMember); // nodeMember.SetChildNodeText(_T("name"), strName); // CWizXMLNode nodeElementValue; nodeMember.AppendChild(_T("value"), nodeElementValue); // pValue->Write(nodeElementValue); } // return TRUE; }
void CWizApiBase::onXmlRpcReturn(const QString& strMethodName, CWizXmlRpcValue& ret) { if (strMethodName == SyncMethod_ClientLogin) { ret.ToData<WIZUSERINFO>(m_user); onClientLogin(m_user); } else if (strMethodName == SyncMethod_ClientLogout) { onClientLogout(); } else if (strMethodName == SyncMethod_CreateAccount) { onCreateAccount(); } else if (strMethodName == SyncMethod_GetUserInfo) { onGetUserInfo(ret); } else if (strMethodName == SyncMethod_GetUserCert) { WIZUSERCERT data; ret.ToData(data); onGetUserCert(data); } else { Q_ASSERT(false); } }
bool CWizXmlRpcArrayValue::Write(CWizXMLNode& nodeValue) { CWizXMLNode nodeData; nodeValue.AppendNodeByPath("array/data", nodeData); std::deque<CWizXmlRpcValue*>::const_iterator it; for (it = m_array.begin(); it != m_array.end(); it++) { CWizXmlRpcValue* pValue = *it; CWizXMLNode nodeElementValue; nodeData.AppendChild("value", nodeElementValue); pValue->Write(nodeElementValue); } return true; }
BOOL CWizXmlRpcArrayValue::Write(CWizXMLNode& nodeValue) { CWizXMLNode nodeData; nodeValue.AppendNodeByPath(_T("array/data"), nodeData); // for (std::deque<CWizXmlRpcValue*>::const_iterator it = m_array.begin(); it != m_array.end(); it++) { CWizXmlRpcValue* pValue = *it; // CWizXMLNode nodeElementValue; nodeData.AppendChild(_T("value"), nodeElementValue); // pValue->Write(nodeElementValue); } // return TRUE; }
bool CWizXmlRpcStructValue::Write(CWizXMLNode& nodeValue) { CWizXMLNode nodeStruct; nodeValue.AppendChild("struct", nodeStruct); std::map<QString, CWizXmlRpcValue*>::const_iterator it; for (it = m_map.begin(); it != m_map.end(); it++) { QString strName = it->first; CWizXmlRpcValue* pValue = it->second; CWizXMLNode nodeMember; nodeStruct.AppendChild("member", nodeMember); nodeMember.SetChildNodeText("name", strName); CWizXMLNode nodeElementValue; nodeMember.AppendChild("value", nodeElementValue); pValue->Write(nodeElementValue); } return true; }
void CWizApiBase::onXmlRpcReturn(const QString& strMethodName, CWizXmlRpcValue& ret) { if (strMethodName == SyncMethod_ClientLogin) { qDebug() << "[XML-RPC]accounts.clientLogin:\n" << ret.ToString(); WIZUSERINFO userInfo; // pass empty kbguid here is ok if (!ret.ToData<WIZUSERINFO>(userInfo, kbGUID())) { return; } // save user info WizGlobal()->setUserInfo(userInfo); // set kbguid setKbGUID(userInfo.strKbGUID); onClientLogin(userInfo); Q_EMIT clientLoginDone(); } else if (strMethodName == SyncMethod_ClientKeepAlive) { // set kbguid setKbGUID(WizGlobal()->userInfo().strKbGUID); onClientLogin(WizGlobal()->userInfo()); Q_EMIT clientLoginDone(); } else if (strMethodName == SyncMethod_ClientLogout) { onClientLogout(); Q_EMIT clientLogoutDone(); } else if (strMethodName == SyncMethod_CreateAccount) { onCreateAccount(); } else if (strMethodName == SyncMethod_GetUserInfo) { onGetUserInfo(ret); } else if (strMethodName == SyncMethod_GetUserCert) { WIZUSERCERT data; ret.ToData(data, kbGUID()); onGetUserCert(data); } else if (strMethodName == SyncMethod_GetGroupList) { qDebug() << "[XML-RPC]accounts.getGroupKbList:\n" << ret.ToString(); std::deque<WIZGROUPDATA> arrayGroup; ret.ToArray<WIZGROUPDATA>(arrayGroup, kbGUID()); onGetGroupList(arrayGroup); Q_EMIT getGroupListDone(arrayGroup); } // deleteds else if (strMethodName == SyncMethod_GetDeletedList) { std::deque<WIZDELETEDGUIDDATA> arrayData; ret.ToArray<WIZDELETEDGUIDDATA>(arrayData, kbGUID()); onDeletedGetList(arrayData); } else if (strMethodName == SyncMethod_PostDeletedList) { CWizXmlRpcFaultValue* pFault = dynamic_cast<CWizXmlRpcFaultValue *>(&ret); if (pFault) { CWizDeletedGUIDDataArray arrayDeleted; onDeletedPostList(arrayDeleted); } else { onDeletedPostList(m_arrayCurrentPostDeletedGUID); } } // tags else if (strMethodName == SyncMethod_GetTagList) { std::deque<WIZTAGDATA> arrayData; ret.ToArray<WIZTAGDATA>(arrayData, kbGUID()); onTagGetList(arrayData); } else if (strMethodName == SyncMethod_PostTagList) { CWizXmlRpcFaultValue* pFault = dynamic_cast<CWizXmlRpcFaultValue *>(&ret); if (pFault) { CWizTagDataArray arrayTag; onTagPostList(arrayTag); } else { onTagPostList(m_arrayCurrentPostTag); } } // styles else if (strMethodName == SyncMethod_GetStyleList) { std::deque<WIZSTYLEDATA> arrayData; ret.ToArray<WIZSTYLEDATA>(arrayData, kbGUID()); onStyleGetList(arrayData); } else if (strMethodName == SyncMethod_PostStyleList) { CWizXmlRpcFaultValue* pFault = dynamic_cast<CWizXmlRpcFaultValue *>(&ret); if (pFault) { CWizStyleDataArray arrayStyle; onStylePostList(arrayStyle); } else { onStylePostList(m_arrayCurrentPostStyle); } } // documents else if (strMethodName == SyncMethod_GetDocumentList) { std::deque<WIZDOCUMENTDATABASE> arrayData; ret.ToArray<WIZDOCUMENTDATABASE>(arrayData, kbGUID()); onDocumentGetList(arrayData); } else if (strMethodName == SyncMethod_GetDocumentsInfo) { std::deque<WIZDOCUMENTDATABASE> arrayData; ret.ToArray<WIZDOCUMENTDATABASE>(arrayData, kbGUID()); onDocumentsGetInfo(arrayData); } else if (strMethodName == SyncMethod_GetDocumentData) { WIZDOCUMENTDATAEX data; ret.ToData(data, kbGUID()); onDocumentGetData(data); } else if (strMethodName == SyncMethod_PostDocumentData) { CWizXmlRpcFaultValue* pFault = dynamic_cast<CWizXmlRpcFaultValue *>(&ret); if (pFault) { WIZDOCUMENTDATAEX doc; onDocumentPostData(doc); } else { onDocumentPostData(m_currentDocument); } } // attachments else if (strMethodName == SyncMethod_GetAttachmentList) { std::deque<WIZDOCUMENTATTACHMENTDATAEX> arrayData; ret.ToArray<WIZDOCUMENTATTACHMENTDATAEX>(arrayData, kbGUID()); onAttachmentGetList(arrayData); } else if (strMethodName == SyncMethod_GetAttachmentsInfo) { std::deque<WIZDOCUMENTATTACHMENTDATAEX> arrayData; ret.ToArray<WIZDOCUMENTATTACHMENTDATAEX>(arrayData, kbGUID()); onAttachmentsGetInfo(arrayData); } else if (strMethodName == SyncMethod_PostAttachmentData) { CWizXmlRpcFaultValue* pFault = dynamic_cast<CWizXmlRpcFaultValue *>(&ret); if (pFault) { WIZDOCUMENTATTACHMENTDATAEX data; onAttachmentPostData(data); } else { onAttachmentPostData(m_currentAttachment); } } // trunk data else if (strMethodName == SyncMethod_DownloadObjectPart) { WIZOBJECTPARTDATA data; CWizXmlRpcFaultValue* pFault = dynamic_cast<CWizXmlRpcFaultValue *>(&ret); if (pFault) { onDownloadDataPart(data); } else { data = m_currentObjectPartData; ret.ToData(data, kbGUID()); onDownloadDataPart(data); } } else if (strMethodName == SyncMethod_UploadObjectPart) { onUploadDataPart(); } else { Q_ASSERT(0); } }
void CWizApi::onXmlRpcReturn(const QString& strMethodName, CWizXmlRpcValue& ret) { if (strMethodName == SyncMethod_GetDeletedList) { std::deque<WIZDELETEDGUIDDATA> arrayData; ret.ToArray<WIZDELETEDGUIDDATA>(arrayData); onDeletedGetList(arrayData); } else if (strMethodName == SyncMethod_GetTagList) { std::deque<WIZTAGDATA> arrayData; ret.ToArray<WIZTAGDATA>(arrayData); onTagGetList(arrayData); } else if (strMethodName == SyncMethod_GetStyleList) { std::deque<WIZSTYLEDATA> arrayData; ret.ToArray<WIZSTYLEDATA>(arrayData); onStyleGetList(arrayData); } else if (strMethodName == SyncMethod_GetDocumentList) { std::deque<WIZDOCUMENTDATABASE> arrayData; ret.ToArray<WIZDOCUMENTDATABASE>(arrayData); onDocumentGetList(arrayData); } else if (strMethodName == SyncMethod_GetAttachmentList) { std::deque<WIZDOCUMENTATTACHMENTDATAEX> arrayData; ret.ToArray<WIZDOCUMENTATTACHMENTDATAEX>(arrayData); onAttachmentGetList(arrayData); } else if (strMethodName == SyncMethod_GetDocumentData) { WIZDOCUMENTDATAEX data; ret.ToData(data); onDocumentGetData(data); } else if (strMethodName == SyncMethod_GetDocumentsInfo) { std::deque<WIZDOCUMENTDATABASE> arrayData; ret.ToArray<WIZDOCUMENTDATABASE>(arrayData); onDocumentsGetInfo(arrayData); } else if (strMethodName == SyncMethod_GetAttachmentsInfo) { std::deque<WIZDOCUMENTATTACHMENTDATAEX> arrayData; ret.ToArray<WIZDOCUMENTATTACHMENTDATAEX>(arrayData); onAttachmentsGetInfo(arrayData); } else if (strMethodName == SyncMethod_DownloadObjectPart) { WIZOBJECTPARTDATA data = m_currentObjectPartData; ret.ToData(data); onDownloadDataPart(data); } else if (strMethodName == SyncMethod_UploadObjectPart) { onUploadDataPart(); } else if (strMethodName == SyncMethod_PostDeletedList) { onDeletedPostList(m_arrayCurrentPostDeletedGUID); } else if (strMethodName == SyncMethod_PostTagList) { onTagPostList(m_arrayCurrentPostTag); } else if (strMethodName == SyncMethod_PostStyleList) { onStylePostList(m_arrayCurrentPostStyle); } else if (strMethodName == SyncMethod_PostDocumentData) { onDocumentPostData(m_currentDocument); } else if (strMethodName == SyncMethod_PostAttachmentData) { onAttachmentPostData(m_currentAttachment); } else { CWizApiBase::onXmlRpcReturn(strMethodName, ret); } }
BOOL WizXmlRpcValueFromXml(CWizXMLNode& nodeValue, CWizXmlRpcValue** ppRet) { *ppRet = NULL; // CWizXMLNode nodeTypeTest; nodeValue.GetFirstChildNode(nodeTypeTest); if (nodeTypeTest.isNull()) { CString strText = nodeValue.GetText(); // *ppRet = new CWizXmlRpcStringValue(strText); return TRUE; } // CWizXmlRpcValue* pValue = NULL; // CString strValueType = nodeTypeTest.GetName(); // if (0 == strValueType.CompareNoCase(_T("int")) || 0 == strValueType.CompareNoCase(_T("i4"))) { pValue = new CWizXmlRpcIntValue(); } else if (0 == strValueType.CompareNoCase(_T("string")) || 0 == strValueType.CompareNoCase(_T("ex:nil")) || 0 == strValueType.CompareNoCase(_T("ex:i8"))) { pValue = new CWizXmlRpcStringValue(); } else if (0 == strValueType.CompareNoCase(_T("nil")) || 0 == strValueType.CompareNoCase(_T("i8"))) { pValue = new CWizXmlRpcStringValue(); } else if (0 == strValueType.CompareNoCase(_T("struct"))) { pValue = new CWizXmlRpcStructValue(); } else if (0 == strValueType.CompareNoCase(_T("array"))) { pValue = new CWizXmlRpcArrayValue(); } else if (0 == strValueType.CompareNoCase(_T("base64"))) { pValue = new CWizXmlRpcBase64Value(); } else if (0 == strValueType.CompareNoCase(_T("boolean")) || 0 == strValueType.CompareNoCase(_T("bool"))) { pValue = new CWizXmlRpcBoolValue(); } else if (0 == strValueType.CompareNoCase(_T("dateTime.iso8601"))) { pValue = new CWizXmlRpcTimeValue(); } else { TOLOG1(_T("Unknown xmlrpc value type:%1"), strValueType); return FALSE; } // // ATLASSERT(pValue); // if (pValue->Read(nodeValue)) { *ppRet = pValue; return TRUE; } // TOLOG(_T("Failed to read xmlrpc value!")); // delete pValue; // return FALSE; }