Пример #1
0
void CWizSync::on_clientLoginDone()
{
    m_kbSync->database()->setDatabaseInfo(WizGlobal()->userInfo().strKbGUID,
                                          WizGlobal()->userInfo().strDatabaseServer,
                                          "Private", 0);

    Q_EMIT syncLogined();
    m_kbSync->callGetGroupList();
}
Пример #2
0
bool CWizApiBase::callClientKeepAlive()
{
    CWizApiParamBase param;
    param.AddString("token", WizGlobal()->token());

    return callXmlRpc(SyncMethod_ClientKeepAlive, &param);
}
Пример #3
0
void CWizApiBase::_onXmlRpcError(const QString& strMethodName,
                                 WizXmlRpcError err,
                                 int errorCode,
                                 const QString& errorMessage)
{
    // token timeout
    if (strMethodName == SyncMethod_ClientKeepAlive && err == errorXmlRpcFault) {
        TOLOG(tr("Token expired, Try to request another"));
        WizGlobal()->clearToken();
        callClientLogin(m_strUserId, m_strPasswd);
        return;
    }

    if (err == errorNetwork) {
        WizGlobal()->clearToken();
    }

    onXmlRpcError(strMethodName, err, errorCode, errorMessage);
}
void CWizGroupAttributeForm::on_clientLoginDone()
{
    QString strExt = QString("token=%1&kb_guid=%2").arg(WizGlobal()->token()).arg(m_strKbGUID);
    QByteArray bytes = QUrl::toPercentEncoding(strExt);
    QString strUrl = WizApiGetUrl("wiz", WIZ_CLIENT_VERSION, "view_group", bytes);

    // use raw url
    QUrl url;
    url.setEncodedUrl(strUrl.toAscii());

    m_web->load(url);
}
Пример #5
0
bool CWizApiBase::callClientLogin(const QString& strUserId, const QString& strPassword)
{
    if (WizGlobal()->token().isEmpty()) {
        CWizApiParamBase param;
        param.AddString("user_id", MakeXmlRpcUserId(strUserId));
        param.AddString("password", MakeXmlRpcPassword(strPassword));

        return callXmlRpc(SyncMethod_ClientLogin, &param);
    } else {
        m_strUserId = strUserId;
        m_strPasswd = strPassword;

        return callClientKeepAlive();
    }
}
Пример #6
0
void CWizSync::on_getGroupListDone(const CWizGroupDataArray& arrayGroup)
{
    m_arrayGroup.assign(arrayGroup.begin(), arrayGroup.end());

    // reset database info
    CWizGroupDataArray::const_iterator it;
    for (it = m_arrayGroup.begin(); it != m_arrayGroup.end(); it++) {
        const WIZGROUPDATA& group = *it;
        if (!m_dbMgr.isOpened(group.strGroupGUID)) {
            if (!m_dbMgr.open(group.strGroupGUID)) {
                TOLOG("FATAL: can't open group db for sync!");
                continue;
            }
        }

        m_dbMgr.db(group.strGroupGUID).setDatabaseInfo(group.strGroupGUID, group.strDatabaseServer,
                                                       group.strGroupName, group.nUserGroup);
    }

    // close group database not in the list
    QStringList groups;
    m_dbMgr.Guids(groups);
    for (int i = 0; i < groups.size(); i++) {
        bool found = false;
        CWizGroupDataArray::const_iterator it;
        for (it = m_arrayGroup.begin(); it != m_arrayGroup.end(); it++) {
            const WIZGROUPDATA& group = *it;
            if (group.strGroupGUID == groups.at(i)) {
                found = true;
                break;
            }
        }

        if (!found) {
            m_dbMgr.close(groups.at(i));
        }
    }

    // sync user private notes
    TOLOG(tr("Begin syncing user private data"));
    m_kbSync->startSync(WizGlobal()->userInfo().strKbGUID);
}
Пример #7
0
CWizApiTokenParam::CWizApiTokenParam(CWizApiBase& api)
{
    AddString("token", WizGlobal()->token());
    AddString("kb_guid", api.kbGUID());
}
Пример #8
0
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);
    }
}