aboutsummaryrefslogtreecommitdiff
path: root/src/qmmpui/playlisttask_p.h
diff options
context:
space:
mode:
authortrialuser02 <trialuser02@90c681e8-e032-0410-971d-27865f9a5e38>2020-11-01 16:41:14 +0000
committertrialuser02 <trialuser02@90c681e8-e032-0410-971d-27865f9a5e38>2020-11-01 16:41:14 +0000
commit1f4d75c6f9f5b45b8b55c1dabf8c0aa3322395fc (patch)
tree84f011bc6baa863ebc96181ff227b560e6144452 /src/qmmpui/playlisttask_p.h
parentd849b4462100259fa8765f92e445b747a350d764 (diff)
downloadqmmp-1f4d75c6f9f5b45b8b55c1dabf8c0aa3322395fc.tar.gz
qmmp-1f4d75c6f9f5b45b8b55c1dabf8c0aa3322395fc.tar.bz2
qmmp-1f4d75c6f9f5b45b8b55c1dabf8c0aa3322395fc.zip
library: Library::addTrack implementation
git-svn-id: http://svn.code.sf.net/p/qmmp-dev/code/trunk/qmmp@9544 90c681e8-e032-0410-971d-27865f9a5e38
Diffstat (limited to 'src/qmmpui/playlisttask_p.h')
0 files changed, 0 insertions, 0 deletions
ss='lines'>
/***************************************************************************
 *   Copyright (C) 2012 by Ilya Kotov                                      *
 *   forkotov02@hotmail.ru                                                 *
 *                                                                         *
 *   This program is free software; you can redistribute it and/or modify  *
 *   it under the terms of the GNU General Public License as published by  *
 *   the Free Software Foundation; either version 2 of the License, or     *
 *   (at your option) any later version.                                   *
 *                                                                         *
 *   This program is distributed in the hope that it will be useful,       *
 *   but WITHOUT ANY WARRANTY; without even the implied warranty of        *
 *   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the         *
 *   GNU General Public License for more details.                          *
 *                                                                         *
 *   You should have received a copy of the GNU General Public License     *
 *   along with this program; if not, write to the                         *
 *   Free Software Foundation, Inc.,                                       *
 *   51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.         *
 ***************************************************************************/

#include <QNetworkAccessManager>
#include <QNetworkProxy>
#include <QNetworkReply>
#include <qmmp/qmmp.h>
#include <qmmp/qmmpsettings.h>
#include <qmmpui/playlistparser.h>
#include "playlistdownloader.h"

PlayListDownloader::PlayListDownloader(QObject *parent) : QObject(parent)
{
    m_getReply = 0;
    m_ua = QString("qmmp/%1").arg(Qmmp::strVersion()).toAscii();
    m_manager = new QNetworkAccessManager(this);
    connect(m_manager, SIGNAL(finished (QNetworkReply *)), SLOT(readResponse(QNetworkReply *)));
    //load global proxy settings
    QmmpSettings *gs = QmmpSettings::instance();
    if (gs->isProxyEnabled())
    {
        QNetworkProxy proxy(QNetworkProxy::HttpProxy, gs->proxy().host(),  gs->proxy().port());
        if(gs->useProxyAuth())
        {
            proxy.setUser(gs->proxy().userName());
            proxy.setPassword(gs->proxy().password());
        }
        m_manager->setProxy(proxy);
    }
}

void PlayListDownloader::start(const QUrl &url)
{
    if(!PlayListParser::findByUrl(url)) //is it playlist?
    {
        emit done(QStringList() << url.toString()); //just send initial URL
        return;
    }
    m_url = url;
    QNetworkRequest r;
    r.setUrl(url);
    r.setRawHeader("User-Agent", m_ua);
    m_getReply = m_manager->get(r);
    m_redirect_url.clear();
}

void PlayListDownloader::readResponse(QNetworkReply *reply)
{
    if(reply != m_getReply)
    {
        reply->deleteLater();
        return;
    }

    if(reply->error() != QNetworkReply::NoError)
    {
        emit error(reply->errorString() + " (" + reply->error() + ")");
        reply->deleteLater();
        return;
    }

    QUrl url = reply->attribute(QNetworkRequest::RedirectionTargetAttribute).toUrl();
    if(!url.isEmpty() && url != m_redirect_url)
    {
        m_redirect_url = url;
        qDebug("PlayListDownloader: redirect to %s", qPrintable(url.toString()));