added source browsing
parent
dbaecd9c1b
commit
fe916126f6
|
|
@ -266,6 +266,7 @@ void DevicePluginBose::executeBrowserItem(BrowserActionInfo *info)
|
||||||
if (device->deviceClassId() == soundtouchDeviceClassId) {
|
if (device->deviceClassId() == soundtouchDeviceClassId) {
|
||||||
SoundTouch *soundTouch = m_soundTouch.value(device);
|
SoundTouch *soundTouch = m_soundTouch.value(device);
|
||||||
ContentItemObject contentItem;
|
ContentItemObject contentItem;
|
||||||
|
contentItem.source = info->browserAction().itemId();
|
||||||
QUuid requestId = soundTouch->setSource(contentItem);
|
QUuid requestId = soundTouch->setSource(contentItem);
|
||||||
m_asyncExecuteBroweItems.insert(requestId, info);
|
m_asyncExecuteBroweItems.insert(requestId, info);
|
||||||
connect(info, &BrowserActionInfo::aborted, this, [this, requestId]{m_asyncExecuteBroweItems.remove(requestId);});
|
connect(info, &BrowserActionInfo::aborted, this, [this, requestId]{m_asyncExecuteBroweItems.remove(requestId);});
|
||||||
|
|
|
||||||
|
|
@ -233,15 +233,7 @@ QUuid SoundTouch::setKey(KEY_VALUE keyValue)
|
||||||
QNetworkReply *reply = m_networkAccessManager->post(QNetworkRequest(url), content);
|
QNetworkReply *reply = m_networkAccessManager->post(QNetworkRequest(url), content);
|
||||||
connect(reply, &QNetworkReply::finished, this, [requestId, reply, this] {
|
connect(reply, &QNetworkReply::finished, this, [requestId, reply, this] {
|
||||||
reply->deleteLater();
|
reply->deleteLater();
|
||||||
int status = reply->attribute(QNetworkRequest::HttpStatusCodeAttribute).toInt();
|
emitRequestStatus(requestId, reply);
|
||||||
// Check HTTP status code
|
|
||||||
if (status != 200 || reply->error() != QNetworkReply::NoError) {
|
|
||||||
qCWarning(dcBose()) << "Request error:" << reply->errorString() << "request:" << reply->url().path();
|
|
||||||
emit requestExecuted(requestId, false);
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
//TODO parse error
|
|
||||||
});
|
});
|
||||||
|
|
||||||
if (keyValue == KEY_VALUE_POWER) {
|
if (keyValue == KEY_VALUE_POWER) {
|
||||||
|
|
@ -281,15 +273,7 @@ QUuid SoundTouch::setVolume(int volume)
|
||||||
QNetworkReply *reply = m_networkAccessManager->post(QNetworkRequest(url), content);
|
QNetworkReply *reply = m_networkAccessManager->post(QNetworkRequest(url), content);
|
||||||
connect(reply, &QNetworkReply::finished, this, [requestId, reply, this] {
|
connect(reply, &QNetworkReply::finished, this, [requestId, reply, this] {
|
||||||
reply->deleteLater();
|
reply->deleteLater();
|
||||||
int status = reply->attribute(QNetworkRequest::HttpStatusCodeAttribute).toInt();
|
emitRequestStatus(requestId, reply);
|
||||||
// Check HTTP status code
|
|
||||||
if (status != 200 || reply->error() != QNetworkReply::NoError) {
|
|
||||||
qCWarning(dcBose()) << "Request error:" << reply->errorString() << "request:" << reply->url().path();
|
|
||||||
emit requestExecuted(requestId, false);
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
//TODO parse error
|
|
||||||
});
|
});
|
||||||
return requestId;
|
return requestId;
|
||||||
}
|
}
|
||||||
|
|
@ -315,15 +299,7 @@ QUuid SoundTouch::setSource(ContentItemObject contentItem)
|
||||||
QNetworkReply *reply = m_networkAccessManager->post(QNetworkRequest(url), content);
|
QNetworkReply *reply = m_networkAccessManager->post(QNetworkRequest(url), content);
|
||||||
connect(reply, &QNetworkReply::finished, this, [requestId, reply, this] {
|
connect(reply, &QNetworkReply::finished, this, [requestId, reply, this] {
|
||||||
reply->deleteLater();
|
reply->deleteLater();
|
||||||
int status = reply->attribute(QNetworkRequest::HttpStatusCodeAttribute).toInt();
|
emitRequestStatus(requestId, reply);
|
||||||
// Check HTTP status code
|
|
||||||
if (status != 200 || reply->error() != QNetworkReply::NoError) {
|
|
||||||
qCWarning(dcBose()) << "Request error:" << reply->errorString() << "request:" << reply->url().path();
|
|
||||||
emit requestExecuted(requestId, false);
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
//TODO parse error
|
|
||||||
});
|
});
|
||||||
return requestId;
|
return requestId;
|
||||||
}
|
}
|
||||||
|
|
@ -351,15 +327,7 @@ QUuid SoundTouch::setZone(ZoneObject zone)
|
||||||
QNetworkReply *reply = m_networkAccessManager->post(QNetworkRequest(url), content);
|
QNetworkReply *reply = m_networkAccessManager->post(QNetworkRequest(url), content);
|
||||||
connect(reply, &QNetworkReply::finished, this, [requestId, reply, this] {
|
connect(reply, &QNetworkReply::finished, this, [requestId, reply, this] {
|
||||||
reply->deleteLater();
|
reply->deleteLater();
|
||||||
int status = reply->attribute(QNetworkRequest::HttpStatusCodeAttribute).toInt();
|
emitRequestStatus(requestId, reply);
|
||||||
// Check HTTP status code
|
|
||||||
if (status != 200 || reply->error() != QNetworkReply::NoError) {
|
|
||||||
qCWarning(dcBose()) << "Request error:" << reply->errorString() << "request:" << reply->url().path();
|
|
||||||
emit requestExecuted(requestId, false);
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
//TODO parse error
|
|
||||||
});
|
});
|
||||||
return requestId;
|
return requestId;
|
||||||
}
|
}
|
||||||
|
|
@ -385,18 +353,9 @@ QUuid SoundTouch::addZoneSlave(ZoneObject zone)
|
||||||
xml.writeEndDocument();
|
xml.writeEndDocument();
|
||||||
qDebug(dcBose) << "Sending request" << url << content;
|
qDebug(dcBose) << "Sending request" << url << content;
|
||||||
QNetworkReply *reply = m_networkAccessManager->post(QNetworkRequest(url), content);
|
QNetworkReply *reply = m_networkAccessManager->post(QNetworkRequest(url), content);
|
||||||
|
|
||||||
connect(reply, &QNetworkReply::finished, this, [requestId, reply, this] {
|
connect(reply, &QNetworkReply::finished, this, [requestId, reply, this] {
|
||||||
reply->deleteLater();
|
reply->deleteLater();
|
||||||
int status = reply->attribute(QNetworkRequest::HttpStatusCodeAttribute).toInt();
|
emitRequestStatus(requestId, reply);
|
||||||
// Check HTTP status code
|
|
||||||
if (status != 200 || reply->error() != QNetworkReply::NoError) {
|
|
||||||
qCWarning(dcBose()) << "Request error:" << reply->errorString() << "request:" << reply->url().path();
|
|
||||||
emit requestExecuted(requestId, false);
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
//TODO parse error
|
|
||||||
});
|
});
|
||||||
return requestId;
|
return requestId;
|
||||||
}
|
}
|
||||||
|
|
@ -424,15 +383,7 @@ QUuid SoundTouch::removeZoneSlave(ZoneObject zone)
|
||||||
QNetworkReply *reply = m_networkAccessManager->post(QNetworkRequest(url), content);
|
QNetworkReply *reply = m_networkAccessManager->post(QNetworkRequest(url), content);
|
||||||
connect(reply, &QNetworkReply::finished, this, [requestId, reply, this] {
|
connect(reply, &QNetworkReply::finished, this, [requestId, reply, this] {
|
||||||
reply->deleteLater();
|
reply->deleteLater();
|
||||||
int status = reply->attribute(QNetworkRequest::HttpStatusCodeAttribute).toInt();
|
emitRequestStatus(requestId, reply);
|
||||||
// Check HTTP status code
|
|
||||||
if (status != 200 || reply->error() != QNetworkReply::NoError) {
|
|
||||||
qCWarning(dcBose()) << "Request error:" << reply->errorString() << "request:" << reply->url().path();
|
|
||||||
emit requestExecuted(requestId, false);
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
//TODO parse error
|
|
||||||
});
|
});
|
||||||
return requestId;
|
return requestId;
|
||||||
}
|
}
|
||||||
|
|
@ -453,15 +404,7 @@ QUuid SoundTouch::setBass(int volume)
|
||||||
QNetworkReply *reply = m_networkAccessManager->post(QNetworkRequest(url), content);
|
QNetworkReply *reply = m_networkAccessManager->post(QNetworkRequest(url), content);
|
||||||
connect(reply, &QNetworkReply::finished, this, [requestId, reply, this] {
|
connect(reply, &QNetworkReply::finished, this, [requestId, reply, this] {
|
||||||
reply->deleteLater();
|
reply->deleteLater();
|
||||||
int status = reply->attribute(QNetworkRequest::HttpStatusCodeAttribute).toInt();
|
emitRequestStatus(requestId, reply);
|
||||||
// Check HTTP status code
|
|
||||||
if (status != 200 || reply->error() != QNetworkReply::NoError) {
|
|
||||||
qCWarning(dcBose()) << "Request error:" << reply->errorString() << "request:" << reply->url().path();
|
|
||||||
emit requestExecuted(requestId, false);
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
//TODO parse error
|
|
||||||
});
|
});
|
||||||
return requestId;
|
return requestId;
|
||||||
}
|
}
|
||||||
|
|
@ -482,15 +425,7 @@ QUuid SoundTouch::setName(QString name)
|
||||||
QNetworkReply *reply = m_networkAccessManager->post(QNetworkRequest(url), content);
|
QNetworkReply *reply = m_networkAccessManager->post(QNetworkRequest(url), content);
|
||||||
connect(reply, &QNetworkReply::finished, this, [requestId, reply, this] {
|
connect(reply, &QNetworkReply::finished, this, [requestId, reply, this] {
|
||||||
reply->deleteLater();
|
reply->deleteLater();
|
||||||
int status = reply->attribute(QNetworkRequest::HttpStatusCodeAttribute).toInt();
|
emitRequestStatus(requestId, reply);
|
||||||
// Check HTTP status code
|
|
||||||
if (status != 200 || reply->error() != QNetworkReply::NoError) {
|
|
||||||
qCWarning(dcBose()) << "Request error:" << reply->errorString() << "request:" << reply->url().path();
|
|
||||||
emit requestExecuted(requestId, false);
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
//TODO parse error
|
|
||||||
});
|
});
|
||||||
return requestId;
|
return requestId;
|
||||||
}
|
}
|
||||||
|
|
@ -518,7 +453,8 @@ QUuid SoundTouch::setSpeaker(PlayInfoObject playInfo)
|
||||||
qDebug(dcBose) << "Sending request" << url << content;
|
qDebug(dcBose) << "Sending request" << url << content;
|
||||||
QNetworkReply *reply = m_networkAccessManager->post(QNetworkRequest(url), content);
|
QNetworkReply *reply = m_networkAccessManager->post(QNetworkRequest(url), content);
|
||||||
connect(reply, &QNetworkReply::finished, this, [requestId, reply, this] {
|
connect(reply, &QNetworkReply::finished, this, [requestId, reply, this] {
|
||||||
|
reply->deleteLater();
|
||||||
|
emitRequestStatus(requestId, reply);
|
||||||
});
|
});
|
||||||
return requestId;
|
return requestId;
|
||||||
}
|
}
|
||||||
|
|
@ -542,19 +478,10 @@ void SoundTouch::onWebsocketDisconnected()
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
void SoundTouch::onRestRequestError(QNetworkReply::NetworkError error)
|
|
||||||
{
|
|
||||||
Q_UNUSED(error)
|
|
||||||
|
|
||||||
QNetworkReply *reply = static_cast<QNetworkReply *>(sender());
|
|
||||||
reply->deleteLater();
|
|
||||||
|
|
||||||
qWarning(dcBose) << "Rest Error" << reply->errorString();
|
|
||||||
}
|
|
||||||
|
|
||||||
void SoundTouch::onWebsocketMessageReceived(QString message)
|
void SoundTouch::onWebsocketMessageReceived(QString message)
|
||||||
{
|
{
|
||||||
qDebug(dcBose) << "Websocket message received:" << message;
|
qDebug(dcBose) << "Websocket message received:" << message;
|
||||||
|
//TODO as soon as QWebSocket supports sub-protocols
|
||||||
}
|
}
|
||||||
|
|
||||||
QUuid SoundTouch::sendGetRequest(QString path)
|
QUuid SoundTouch::sendGetRequest(QString path)
|
||||||
|
|
@ -579,9 +506,14 @@ QUuid SoundTouch::sendGetRequest(QString path)
|
||||||
} else {
|
} else {
|
||||||
sendGetRequest(m_getRequestQueue.takeFirst());
|
sendGetRequest(m_getRequestQueue.takeFirst());
|
||||||
}
|
}
|
||||||
|
if (reply->error() != QNetworkReply::NoError) {
|
||||||
|
emit requestExecuted(requestId, false);
|
||||||
|
emit connectionChanged(false);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
emit connectionChanged(true);
|
||||||
// Check HTTP status code
|
// Check HTTP status code
|
||||||
if (status != 200 || reply->error() != QNetworkReply::NoError) {
|
if (status != 200) {
|
||||||
qCWarning(dcBose()) << "Request error:" << reply->errorString() << "request:" << reply->url().path();
|
qCWarning(dcBose()) << "Request error:" << reply->errorString() << "request:" << reply->url().path();
|
||||||
emit requestExecuted(requestId, false);
|
emit requestExecuted(requestId, false);
|
||||||
return;
|
return;
|
||||||
|
|
@ -594,8 +526,22 @@ QUuid SoundTouch::sendGetRequest(QString path)
|
||||||
return requestId;
|
return requestId;
|
||||||
}
|
}
|
||||||
|
|
||||||
void SoundTouch::emitRequestStatus(QUuid requestId, const QByteArray &data)
|
void SoundTouch::emitRequestStatus(QUuid requestId, QNetworkReply *reply)
|
||||||
{
|
{
|
||||||
|
int status = reply->attribute(QNetworkRequest::HttpStatusCodeAttribute).toInt();
|
||||||
|
// Check HTTP status code
|
||||||
|
if (reply->error() != QNetworkReply::NoError) {
|
||||||
|
emit connectionChanged(false);
|
||||||
|
emit requestExecuted(requestId, false);
|
||||||
|
qCWarning(dcBose()) << "Request error:" << reply->errorString() << "request:" << reply->url().path();
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
emit connectionChanged(true);
|
||||||
|
if (status != 200) {
|
||||||
|
emit requestExecuted(requestId, false);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
QByteArray data = reply->readAll();
|
||||||
QXmlStreamReader xml;
|
QXmlStreamReader xml;
|
||||||
xml.addData(data);
|
xml.addData(data);
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -80,7 +80,7 @@ private:
|
||||||
QString m_ipAddress;
|
QString m_ipAddress;
|
||||||
int m_port = 8090;
|
int m_port = 8090;
|
||||||
QWebSocket *m_websocket = nullptr;
|
QWebSocket *m_websocket = nullptr;
|
||||||
void emitRequestStatus(QUuid requestId, const QByteArray &data); //returns the status, -1 in case of error
|
void emitRequestStatus(QUuid requestId, QNetworkReply *reply); //returns the status, -1 in case of error
|
||||||
void parseData(QUuid requestId, const QByteArray &data);
|
void parseData(QUuid requestId, const QByteArray &data);
|
||||||
|
|
||||||
signals:
|
signals:
|
||||||
|
|
@ -103,7 +103,6 @@ private slots:
|
||||||
void onWebsocketConnected();
|
void onWebsocketConnected();
|
||||||
void onWebsocketDisconnected();
|
void onWebsocketDisconnected();
|
||||||
void onWebsocketMessageReceived(QString message);
|
void onWebsocketMessageReceived(QString message);
|
||||||
void onRestRequestError(QNetworkReply::NetworkError error);
|
|
||||||
};
|
};
|
||||||
|
|
||||||
#endif // SOUNDTOUCH_H
|
#endif // SOUNDTOUCH_H
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue