Example #1
0
void ApiComponent::getPlaylistFromReply(QNetworkReply *reply)
{
    QDomDocument domDocument;
    domDocument.setContent(reply->readAll());

    QDomElement responseElement = domDocument.firstChildElement(); //! <response list = true>
    QDomNode itemNode = responseElement.firstChildElement(); //! <audio>

    Playlist playlist;

    while(!itemNode.isNull())
    {
        PlaylistItem data;
        QString const artist = itemNode.toElement().elementsByTagName("artist").item(0).toElement().text();
        QString const title = itemNode.toElement().elementsByTagName("title").item(0).toElement().text();
        QString const duration = itemNode.toElement().elementsByTagName("duration").item(0).toElement().text();
        QString const url = itemNode.toElement().elementsByTagName("url").item(0).toElement().text();

        if (!artist.isEmpty() && !title.isEmpty() && !duration.isEmpty() && !url.isEmpty())
        {
            data[Artist] = artist;
            data[Title] = title;
            data[Duration] = duration;
            data[Url] = url;

            playlist.push_back(data);
        }

        itemNode = itemNode.nextSibling();
    }

    reply->deleteLater();

    emit playlistReceived(playlist);
}