10 static const QString
XML_HEAD =
"<?xml version=\"1.0\"?>\n<SOAP-ENV:Envelope xmlns:SOAP-ENV=\"http://schemas.xmlsoap.org/soap/envelope/\" SOAP-ENV:encodingStyle=\"http://schemas.xmlsoap.org/soap/encoding/\">\n<SOAP-ENV:Body>\n";
11 static const QString
XML_FOOT =
"</SOAP-ENV:Body>\n</SOAP-ENV:Envelope>\n";
12 static const QStringList
FRIENS_NAMES = {
"friendlyname",
"friendlyName",
"FriendlyName",
"FriendlyName"};
13 static const QStringList
AVT_NAMES = {
"avtransport",
"AVTransport"};
38 : m_isConnected(false),
51 const QStringList &list = data.split(
"\r\n");
54 QStringList data_list;
55 if(str.contains(
"LOCATION:"))
57 data_list = str.remove(
"LOCATION: http://").split(
":");
59 else if(str.contains(
"Location:"))
61 data_list = str.remove(
"Location: http://").split(
":");
63 else if(str.contains(
"location:"))
65 data_list = str.remove(
"location: http://").split(
":");
68 if(data_list.count() >= 2)
71 const QStringList &info_list = data_list[1].split(
TTK_SEPARATOR);
73 if(info_list.count() >= 2)
156 return d->m_serverIP;
162 return d->m_friendlyName;
168 return d->connectServer();
174 return d->m_isConnected;
188 QString play_url = url;
190 body +=
"<u:SetAVTransportURI xmlns:u=\"urn:schemas-upnp-org:service:AVTransport:1\">\n";
191 body +=
"<InstanceID>0</InstanceID>\n";
192 body +=
"<CurrentURI>" + play_url.replace(
" ",
"%20") +
"</CurrentURI>\n";
193 body +=
"</u:SetAVTransportURI>\n";
195 const QString &request =
QDlnaHelper::MakeRequest(
"POST", d->m_controlURL, body.length(),
"urn:schemas-upnp-org:service:AVTransport:1#SetAVTransportURI", d->m_serverIP,d->m_serverPort) + body;
205 body +=
"<u:Play xmlns:u=\"urn:schemas-upnp-org:service:AVTransport:1\"><InstanceID>"+ QString::number(instance) +
"</InstanceID><Speed>1</Speed></u:Play>\n";
207 const QString &request =
QDlnaHelper::MakeRequest(
"POST", d->m_controlURL, body.length(),
"urn:schemas-upnp-org:service:AVTransport:1#Play", d->m_serverIP, d->m_serverPort) + body;
216 body +=
"<u:Stop xmlns:u=\"urn:schemas-upnp-org:service:AVTransport:1\"><InstanceID>" + QString::number(instance) +
"</InstanceID></u:Stop>\n";
218 const QString &request =
QDlnaHelper::MakeRequest(
"POST", d->m_controlURL, body.length(),
"urn:schemas-upnp-org:service:AVTransport:1#Stop", d->m_serverIP, d->m_serverPort) + body;
227 body +=
"<u:Pause xmlns:u=\"urn:schemas-upnp-org:service:AVTransport:1\"><InstanceID>" + QString::number(instance) +
"</InstanceID></u:Pause>\n";
229 const QString &request =
QDlnaHelper::MakeRequest(
"POST", d->m_controlURL, body.length(),
"urn:schemas-upnp-org:service:AVTransport:1#Pause", d->m_serverIP, d->m_serverPort) + body;
237 const QString &body =
XML_HEAD +
"<m:GetPositionInfo xmlns:m=\"urn:schemas-upnp-org:service:AVTransport:1\"><InstanceID xmlns:dt=\"urn:schemas-microsoft-com:datatypes\" dt:dt=\"ui4\">0</InstanceID></m:GetPositionInfo>" +
XML_FOOT +
"\n";
238 const QString &request =
QDlnaHelper::MakeRequest(
"POST", d->m_controlURL, body.length(),
"urn:schemas-upnp-org:service:AVTransport:1#GetPositionInfo", d->m_serverIP, d->m_serverPort) + body;
245 const QStringList &data_list = value.split(
TTK_DOT);
246 if(data_list.count() >= 2)
248 const QStringList &info_list = data_list[1].split(
":");
249 if(info_list.count() >= 2)
251 const int mins = info_list[0].toInt();
252 const int secs = info_list[1].toInt();
253 return mins * 60 + secs;
QString uploadFileToPlay(const QString &url)
QString stopPlay(int instance)
QMap< QString, QDlnaService > m_services
QString MakeRequest(const QString &methord, const QString &url, int length, const QString &soapAction, const QString &ip, const QString &port)
QString pause(int instance)
The class of the dlna client.
QString removeHttpHeader(const QString &data)
QString tryToPlayFile(const QString &url)
static const QStringList AVT_NAMES
QString makeSocketGetReply(const QString &ip, const QString &port, const QString &data)
QString tagNameToLower(const QString &data) const
The class of the dlna xml.
QString readTagNameValue(const QString &tagName) const
#define TTK_INFO_STREAM(msg)
static const QString XML_FOOT
int totalSeconds(const QString &value)
The class of the dlna service.
static const QStringList FRIENS_NAMES
void initialize(const QString &data)
The class of the dlna client private.
static const QString XML_HEAD
int GetResponseCode(const QString &data)
QDlnaService readServiceTag(const QString &type, const QString &tagName) const
QString startPlay(int instance)
#define TTK_INIT_PRIVATE(Class)
The class of the ttk private base.
static constexpr const char * AVTRANSPORT
QDlnaClient(const QString &data)
bool fromString(const QString &data)