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.
This commit is contained in:
fryshorts 2014-08-25 21:22:58 +02:00
parent c6ad237b4b
commit ca8ac4e809
2 changed files with 30 additions and 45 deletions

View file

@ -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));
QUrl url("https://api.github.com/gists");
logUploadReply = networkManager.post(QNetworkRequest(url),
&logUploadPostData);
connect(logUploadReply, SIGNAL(finished()),
QNetworkRequest postReq(QUrl("https://api.github.com/gists"));
postReq.setHeader(QNetworkRequest::ContentTypeHeader,
"application/json");
QNetworkReply *reply = networkManager.post(postReq, postData);
/* 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,

View file

@ -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();