QNetworkAccessManager *QNetworkReplyProto::manager() const { QNetworkReply *item = qscriptvalue_cast<QNetworkReply*>(thisObject()); if (item) return item->manager(); return 0; }
void LoginDialog::OnLoggedIn() { QNetworkReply *reply = qobject_cast<QNetworkReply *>(QObject::sender()); QByteArray bytes = reply->readAll(); int status = reply->attribute(QNetworkRequest::HttpStatusCodeAttribute).toInt(); if (status != 302) { DisplayError("Failed to log in (invalid password or expired session ID? try re-logging with email/password pair or via steam)"); return; } QList<QNetworkCookie> cookies = reply->manager()->cookieJar()->cookiesForUrl(QUrl(POE_MAIN_PAGE)); for (auto &cookie : cookies) if (QString(cookie.name()) == POE_COOKIE_NAME) session_id_ = cookie.value(); // we need one more request to get account name QNetworkReply *main_page = login_manager_->get(QNetworkRequest(QUrl(POE_MY_ACCOUNT))); connect(main_page, SIGNAL(finished()), this, SLOT(OnMainPageFinished())); }
void Session::Request::onLoginPageResult() { QNetworkReply *reply = qobject_cast<QNetworkReply*>(QObject::sender()); int status = reply->attribute(QNetworkRequest::HttpStatusCodeAttribute).toInt(); if (status != 302) { emit loginResult(0x01, "Failed to log in (invalid password or expired session ID)."); } else { QList<QNetworkCookie> cookies = reply->manager()->cookieJar()->cookiesForUrl(MainUrl()); for (auto &cookie : cookies) { if (QString(cookie.name()) == SessionIdCookie()) { _sessionId = cookie.value(); emit loginResult(0x00, "Logged in!"); break; } } QNetworkRequest request = createRequest(AccountUrl()); QNetworkReply *r = _manager->get(request); connect(r, &QNetworkReply::finished, this, &Session::Request::Request::onAccountPageResult); } reply->deleteLater(); }