void Session::Request::fetchProfileData() { // QNetworkRequest request = createRequest(ProfileDataUrl()); // QNetworkReply *r = _manager->get(request); // connect(r, &QNetworkReply::finished, this, &Session::Request::Request::onProfileData); QJsonObject object; object.insert("name", "Novynn_GGG"); object.insert("avatar_url", ""); object.insert("messages", 0); object.insert("badges", QJsonArray()); _accountName = object.value("name").toString(); QJsonDocument temp(object); emit profileData(temp.toJson()); }
bool ImageWindow::GetICCProfile( ICCProfile& profile ) const { profile.Clear(); size_type profileSize = (*API->ImageWindow->GetImageWindowICCProfileLength)( handle ); if ( profileSize == 0 ) return false; try { ByteArray profileData( profileSize ); (*API->ImageWindow->GetImageWindowICCProfile)( handle, profileData.Begin() ); profile.Set( profileData ); return true; } ERROR_HANDLER return false; }
void Session::Request::onAccountPageResult() { QNetworkReply *reply = qobject_cast<QNetworkReply*>(QObject::sender()); if (reply->error()) { qDebug() << "Network error in " << __FUNCTION__ << ": " << reply->errorString(); } else { // Regexp for getting last visited, guild, etc // <strong>(?<attr>.+?):<\/strong><br\/>\s+?(<a href=\"(?<url>.+?)\">(?<content1>.+?)<\/a>|\s+(?<content2>[A-Za-z0-9 ]+?)\s+<\/p>) const QByteArray data = reply->readAll(); const QString avatar = getAccountAvatar(data); const QString name = getAccountName(data); const auto badges = getAccountBadges(data); const int messages = getAccountMessagesUnread(data); // Store the account name _accountName = name; QJsonObject object; object.insert("name", name); object.insert("avatar_url", avatar); object.insert("messages", messages); object.insert("badges", QJsonArray::fromStringList(badges.keys())); QJsonDocument temp(object); emit profileData(temp.toJson()); // Request Avatar if (!avatar.isEmpty()) { if (!_avatars.contains(avatar)) _avatars.append(avatar); fetchImage(avatar); } // Request Badges for (const QString &key : badges.uniqueKeys()){ const QString url = badges.value(key); if (url.isEmpty()) continue; fetchAccountBadge(key, url); } } reply->deleteLater(); }