提交 ca8ac4e8 编写于 作者: F fryshorts

obs: Refactor network requests.

Remove unneeded class members for request and buffer handling.
Let Qt do all the hard work here, keeping track of requests and
associated data.
上级 c6ad237b
......@@ -968,19 +968,12 @@ void OBSBasic::CheckForUpdates()
request.setUrl(QUrl("https://obsproject.com/obs2_update/basic.json"));
request.setRawHeader("User-Agent", versionString.c_str());
updateReply = networkManager.get(request);
connect(updateReply, SIGNAL(finished()),
QNetworkReply *reply = networkManager.get(request);
connect(reply, SIGNAL(finished()),
this, SLOT(updateFileFinished()));
connect(updateReply, SIGNAL(readyRead()),
this, SLOT(updateFileRead()));
#endif
}
void OBSBasic::updateFileRead()
{
updateReturnData.push_back(updateReply->readAll());
}
#ifdef __APPLE__
#define VERSION_ENTRY "mac"
#elif _WIN32
......@@ -993,18 +986,19 @@ void OBSBasic::updateFileFinished()
{
ui->actionCheckForUpdates->setEnabled(true);
if (updateReply->error()) {
QNetworkReply *reply = qobject_cast<QNetworkReply *>(sender());
if (!reply || reply->error()) {
blog(LOG_WARNING, "Update check failed: %s",
QT_TO_UTF8(updateReply->errorString()));
QT_TO_UTF8(reply->errorString()));
return;
}
const char *jsonReply = updateReturnData.constData();
if (!jsonReply || !*jsonReply)
QByteArray raw = reply->readAll();
if (!raw.length())
return;
obs_data_t *returnData = obs_data_create_from_json(jsonReply);
obs_data_t *versionData = obs_data_get_obj(returnData, VERSION_ENTRY);
obs_data_t *returnData = obs_data_create_from_json(raw.constData());
obs_data_t *versionData = obs_data_get_obj(returnData, VERSION_ENTRY);
const char *description = obs_data_get_string(returnData,
"description");
const char *download = obs_data_get_string(versionData, "download");
......@@ -1045,7 +1039,7 @@ void OBSBasic::updateFileFinished()
obs_data_release(versionData);
obs_data_release(returnData);
updateReturnData.clear();
reply->deleteLater();
}
void OBSBasic::RemoveSelectedScene()
......@@ -1961,15 +1955,20 @@ void OBSBasic::UploadLog(const char *file)
return;
}
logUploadPostData.setData(json, (int)strlen(json));
QBuffer *postData = new QBuffer();
postData->setData(json, (int) strlen(json));
QNetworkRequest postReq(QUrl("https://api.github.com/gists"));
postReq.setHeader(QNetworkRequest::ContentTypeHeader,
"application/json");
QNetworkReply *reply = networkManager.post(postReq, postData);
QUrl url("https://api.github.com/gists");
logUploadReply = networkManager.post(QNetworkRequest(url),
&logUploadPostData);
connect(logUploadReply, SIGNAL(finished()),
/* set the reply as parent, so the buffer is deleted with the reply */
postData->setParent(reply);
connect(reply, SIGNAL(finished()),
this, SLOT(logUploadFinished()));
connect(logUploadReply, SIGNAL(readyRead()),
this, SLOT(logUploadRead()));
}
void OBSBasic::on_actionShowLogs_triggered()
......@@ -1994,34 +1993,30 @@ void OBSBasic::on_actionCheckForUpdates_triggered()
CheckForUpdates();
}
void OBSBasic::logUploadRead()
{
logUploadReturnData.push_back(logUploadReply->readAll());
}
void OBSBasic::logUploadFinished()
{
ui->menuLogFiles->setEnabled(true);
if (logUploadReply->error()) {
QNetworkReply *reply = qobject_cast<QNetworkReply *>(sender());
if (!reply || reply->error()) {
QMessageBox::information(this,
QTStr("LogReturnDialog.ErrorUploadingLog"),
logUploadReply->errorString());
reply->errorString());
return;
}
const char *jsonReply = logUploadReturnData.constData();
if (!jsonReply || !*jsonReply)
QByteArray raw = reply->readAll();
if (!raw.length())
return;
obs_data_t *returnData = obs_data_create_from_json(jsonReply);
QString logURL = obs_data_get_string(returnData, "html_url");
obs_data_t *returnData = obs_data_create_from_json(raw.constData());
QString logURL = obs_data_get_string(returnData, "html_url");
obs_data_release(returnData);
OBSLogReply logDialog(this, logURL);
logDialog.exec();
logUploadReturnData.clear();
reply->deleteLater();
}
static void RenameListItem(OBSBasic *parent, QListWidget *listWidget,
......
......@@ -67,14 +67,6 @@ private:
QPointer<QTimer> cpuUsageTimer;
os_cpu_usage_info_t *cpuUsageInfo = nullptr;
QBuffer logUploadPostData;
QNetworkReply *logUploadReply = nullptr;
QByteArray logUploadReturnData;
QBuffer updatePostData;
QNetworkReply *updateReply = nullptr;
QByteArray updateReturnData;
obs_output_t *fileOutput = nullptr;
obs_output_t *streamOutput = nullptr;
obs_service_t *service = nullptr;
......@@ -282,10 +274,8 @@ private slots:
void on_recordButton_clicked();
void on_settingsButton_clicked();
void logUploadRead();
void logUploadFinished();
void updateFileRead();
void updateFileFinished();
void AddSourceFromAction();
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册