Exemplo n.º 1
0
QString ApiEntryPrivate::kUrlFromGuid(const QString& strToken, const QString& strKbGUID)
{
    Q_ASSERT(!strToken.isEmpty());

    if (m_mapkUrl.contains(strKbGUID))
        return m_mapkUrl.value(strKbGUID);

    WIZUSERINFO info = Token::info();
    m_mapkUrl.insert(info.strKbGUID, info.strDatabaseServer);
    qDebug() << "user: "******" kbUrl: " << info.strDatabaseServer;

    CWizKMAccountsServer asServer(syncUrl());
    asServer.SetUserInfo(info);

    CWizGroupDataArray arrayGroup;
    if (asServer.GetGroupList(arrayGroup)) {
        CWizGroupDataArray::const_iterator it = arrayGroup.begin();
        for (; it != arrayGroup.end(); it++) {
            const WIZGROUPDATA& group = *it;
            m_mapkUrl.insert(group.strGroupGUID, group.strDatabaseServer);
            qDebug() << "group:" << group.strGroupGUID << " kburl: " <<  group.strDatabaseServer;
        }
    } else {
        qDebug() << asServer.GetLastErrorMessage();
    }

    return m_mapkUrl.value(strKbGUID, 0);
}
bool CWizDatabaseManager::openAll()
{
    // first, open private db
    if (!open()) {
        TOLOG("open user private database failed");
        return false;
    }

    // second, get groups info
    CWizGroupDataArray arrayGroup;
    if (!m_dbPrivate->GetUserGroupInfo(arrayGroup)) {
        TOLOG("Failed to get user group info");
        return true;
    }

    // third, open groups one by one
    CWizGroupDataArray::const_iterator it;
    for (it = arrayGroup.begin(); it != arrayGroup.end(); it++) {
        WIZGROUPDATA group = *it;
        if (!open(group.strGroupGUID)) {
            TOLOG1("failed to open group: %1", group.strGroupName);
        }
    }

    return true;
}
void CWizObjectDataDownloadWorker::startDownload()
{
    // FIXME
    CWizKMAccountsServer asServer(WizKMGetAccountsServerURL(true));

    QString strUserId = m_dbMgr.db().GetUserId();
    QString strPassword = m_dbMgr.db().GetPassword();

    // FIXME: hard-coded "normal"
    if (!asServer.Login(strUserId, strPassword, "normal")) {
        Q_EMIT downloaded(false);
        return;
    }

    WIZUSERINFOBASE info = asServer.GetUserInfo();
    info.strKbGUID = m_data.strKbGUID;
    bool bOk = false;

    // reset info kb_guid and server url for downloading
    if (m_data.strKbGUID != m_dbMgr.db().kbGUID()) {
        CWizGroupDataArray arrayGroup;
        if (!asServer.GetGroupList(arrayGroup) || arrayGroup.empty()) {
            Q_EMIT downloaded(false);
        }

        CWizGroupDataArray::const_iterator it = arrayGroup.begin();
        for (; it != arrayGroup.end(); it++) {
            const WIZGROUPDATA& group = *it;
            if (group.strGroupGUID == m_data.strKbGUID) {
                info.strDatabaseServer = group.strDatabaseServer;
                bOk = true;
                break;
            }
        }
    } else {
        bOk = true;
    }

    if (!bOk) {
        Q_EMIT downloaded(false);
        return;
    }

    CWizKMDatabaseServer ksServer(info);

    // FIXME: should we query object before download data?
    if (!ksServer.data_download(m_data.strObjectGUID,
                                WIZOBJECTDATA::ObjectTypeToTypeString(m_data.eObjectType),
                                m_data.arrayData, m_data.strDisplayName)) {
        Q_EMIT downloaded(false);
        return;
    }

    m_dbMgr.db(m_data.strKbGUID).UpdateObjectData(m_data.strObjectGUID,
                                                  WIZOBJECTDATA::ObjectTypeToTypeString(m_data.eObjectType),
                                                  m_data.arrayData);

    Q_EMIT downloaded(true);
}
void CWizDownloadObjectData::onGetGroupList(const CWizGroupDataArray& arrayGroup)
{
    CWizGroupDataArray::const_iterator it;
    for (it = arrayGroup.begin(); it != arrayGroup.end(); it++) {
        const WIZGROUPDATA& group = *it;

        if (group.strGroupGUID == m_data.strKbGUID) {
            setKbUrl(group.strDatabaseServer);
            startDownloadObjectData();
            return;
        }
    }
}
Exemplo n.º 5
0
void CWizApi::onGetGroupList(const CWizGroupDataArray& arrayGroup)
{
    if (!arrayGroup.size())
        return;

    m_db->setUserGroupInfo(arrayGroup);
}
Exemplo n.º 6
0
bool CWizDatabase::getUserGroupInfo(CWizGroupDataArray& arrayGroup)
{
    CString strTotal;
    bool bExist;

    if (!GetMeta(g_strGroupSection, "Count", strTotal, "", &bExist)) {
        return false;
    }

    if (!bExist) {
        return false;
    }

    int nTotal = strTotal.toInt();
    for (int i = 0; i < nTotal; i++) {
        QString strGroupGUID = GetMetaDef(g_strGroupSection, QString::number(i));
        QString strGroupName = GetMetaDef(g_strGroupSection, strGroupGUID);

        WIZGROUPDATA group;
        group.strGroupGUID = strGroupGUID;
        group.strGroupName = strGroupName;
        arrayGroup.push_back(group);
    }

    return true;
}
Exemplo n.º 7
0
bool CWizDatabase::setUserGroupInfo(const CWizGroupDataArray& arrayGroup)
{
    if (!deleteMetasByName(g_strGroupSection))
        return false;

    int nTotal = arrayGroup.size();
    if (!nTotal) {
        return false;
    }

    if (!SetMeta(g_strGroupSection, "Count", QString::number(nTotal))) {
        return false;
    }

    int nErrors = 0;
    for (int i = 0; i < nTotal; i++) {
        WIZGROUPDATA group(arrayGroup[i]);
        if (!SetMeta(g_strGroupSection, QString::number(i), group.strGroupGUID)) {
            nErrors++;
        }

        if (!SetMeta(g_strGroupSection, group.strGroupGUID, group.strGroupName)) {
            nErrors++;
        }
    }

    if (nErrors > 0) {
        return false;
    }

    return true;
}
Exemplo n.º 8
0
bool CWizDatabase::getUserGroupInfo(CWizGroupDataArray& arrayGroup)
{
    CString strTotal;
    bool bExist;

    if (!GetMeta(g_strGroupSection, "Count", strTotal, "", &bExist)) {
        return false;
    }

    // it's ok, user has no group data
    if (!bExist) {
        return true;
    }

    int nTotal = strTotal.toInt();
    for (int i = 0; i < nTotal; i++) {
        WIZGROUPDATA group;

        group.strGroupGUID = GetMetaDef(g_strGroupSection, QString::number(i));
        group.strGroupName = GetMetaDef(g_strGroupSection, group.strGroupGUID);

        group.bizGUID = GetMetaDef(g_strBizGroupSection, group.strGroupGUID);

        if (!group.bizGUID.isEmpty())
            group.bizName = GetMetaDef(g_strBizGroupSection, group.bizGUID);

        arrayGroup.push_back(group);
    }

    return true;
}
void CWizDatabaseManager::on_groupsInfoDownloaded(const CWizGroupDataArray& arrayGroups)
{
    qDebug() << "[CWizDatabaseManager] Group info downloaded...";

    // set database info
    CWizGroupDataArray::const_iterator it;
    for (it = arrayGroups.begin(); it != arrayGroups.end(); it++) {
        const WIZGROUPDATA& group = *it;

        WIZDATABASEINFO info;
        info.bizGUID = group.bizGUID;
        info.bizName = group.bizName;
        info.name = group.strGroupName;
        info.nPermission = group.nUserGroup;
        db(group.strGroupGUID).SetDatabaseInfo(info);
    }

    // FIXME : close database not inside group list
}
Exemplo n.º 10
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);
}
Exemplo n.º 11
0
bool CWizDatabase::setUserGroupInfo(const CWizGroupDataArray& arrayGroup)
{
    if (!deleteMetasByName(g_strGroupSection)\
            && !deleteMetasByName(g_strBizGroupSection))
        return false;

    int nTotal = arrayGroup.size();
    if (!nTotal) {
        return false;
    }

    // collect biz group info
    QMap<QString, QString> bizInfo;
    for (int i = 0; i < nTotal; i++) {
        const WIZGROUPDATA& data = arrayGroup[i];
        if (!data.bizGUID.isEmpty())
            bizInfo[data.bizGUID] = data.bizName;
    }

    // set biz info
    SetMeta(g_strBizGroupSection, "Count", QString::number(bizInfo.size()));

    int idx = 0;
    QMap<QString, QString>::const_iterator it;
    for (it = bizInfo.begin(); it != bizInfo.end(); it++) {
        SetMeta(g_strBizGroupSection, QString::number(idx), it.key());
        SetMeta(g_strBizGroupSection, it.key(), it.value());
        idx++;
    }

    // set group info
    SetMeta(g_strGroupSection, "Count", QString::number(nTotal));

    for (int i = 0; i < nTotal; i++) {
        const WIZGROUPDATA& data = arrayGroup[i];
        SetMeta(g_strGroupSection, QString::number(i), data.strGroupGUID);
        SetMeta(g_strGroupSection, data.strGroupGUID, data.strGroupName);

        // also biz link
        if (!data.bizGUID.isEmpty()) {
            SetMeta(g_strBizGroupSection, data.strGroupGUID, data.bizGUID);
        }
    }

    return true;
}
Exemplo n.º 12
0
BOOL CWizKMAccountsServer::accounts_getGroupList(CWizGroupDataArray& arrayGroup)
{
    CWizKMTokenOnlyParam param(GetToken(), GetKbGUID());
    if (WIZKM_WEBAPI_VERSION < 4)
    {
        param.ChangeApiVersion(4);
    }
    //
    param.AddString(_T("kb_type"), _T("group"));
    param.AddString(_T("protocol"), "https");
    //
    std::deque<WIZGROUPDATA> arrayWrap;
    if (!Call(_T("accounts.getGroupKbList"), arrayWrap, &param))
    {
        TOLOG(_T("accounts.getGroupKbList failure!"));
        return FALSE;
    }
    //
    arrayGroup.assign(arrayWrap.begin(), arrayWrap.end());
    //
    return TRUE;
}