From 3c4d0b9ce73a0d0bb0d04b6d2fd707138abc4c67 Mon Sep 17 00:00:00 2001 From: kh1 Date: Fri, 25 Nov 2011 14:24:07 +0100 Subject: Introduce our own proxy factory class. Change-Id: I4d08dd32dff7899962bf5e0ccd60a85b385033a3 Reviewed-by: Tim Jenssen Reviewed-by: Niels Weber --- .../libinstaller/packagemanagerproxyfactory.cpp | 77 ++++++++++++++++++++++ .../libinstaller/packagemanagerproxyfactory.h | 55 ++++++++++++++++ 2 files changed, 132 insertions(+) create mode 100644 installerbuilder/libinstaller/packagemanagerproxyfactory.cpp create mode 100644 installerbuilder/libinstaller/packagemanagerproxyfactory.h diff --git a/installerbuilder/libinstaller/packagemanagerproxyfactory.cpp b/installerbuilder/libinstaller/packagemanagerproxyfactory.cpp new file mode 100644 index 000000000..87caf2c50 --- /dev/null +++ b/installerbuilder/libinstaller/packagemanagerproxyfactory.cpp @@ -0,0 +1,77 @@ +/************************************************************************** +** +** This file is part of Installer Framework +** +** Copyright (c) 2011 Nokia Corporation and/or its subsidiary(-ies). +** +** Contact: Nokia Corporation (info@qt.nokia.com) +** +** +** GNU Lesser General Public License Usage +** +** This file may be used under the terms of the GNU Lesser General Public +** License version 2.1 as published by the Free Software Foundation and +** appearing in the file LICENSE.LGPL included in the packaging of this file. +** Please review the following information to ensure the GNU Lesser General +** Public License version 2.1 requirements will be met: +** http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html. +** +** In addition, as a special exception, Nokia gives you certain additional +** rights. These rights are described in the Nokia Qt LGPL Exception +** version 1.1, included in the file LGPL_EXCEPTION.txt in this package. +** +** Other Usage +** +** Alternatively, this file may be used in accordance with the terms and +** conditions contained in a signed written agreement between you and Nokia. +** +** If you have questions regarding the use of this file, please contact +** Nokia at info@qt.nokia.com. +** +**************************************************************************/ +#include "packagemanagerproxyfactory.h" + +#include "packagemanagercore.h" +#include "settings.h" + +namespace QInstaller { + +PackageManagerProxyFactory::PackageManagerProxyFactory(const PackageManagerCore *const core) + : m_core(core) +{ +} + +PackageManagerProxyFactory *PackageManagerProxyFactory::clone() const +{ + return new PackageManagerProxyFactory(m_core); +} + +QList PackageManagerProxyFactory::queryProxy(const QNetworkProxyQuery &query) +{ + const Settings &settings = m_core->settings(); + if (settings.proxyType() == Settings::SystemProxy) { +#if defined(Q_OS_UNIX) && !defined(Q_OS_MAC) + QUrl proxyUrl = QUrl::fromUserInput(QString::fromUtf8(qgetenv("http_proxy"))); + if (proxyUrl.isValid()) { + return list << QNetworkProxy(QNetworkProxy::HttpProxy, proxyUrl.host(), proxyUrl.port(), + proxyUrl.userName(), proxyUrl.password()); + } +#endif + return QNetworkProxyFactory::systemProxyForQuery(query); + } + + QList list; + if ((settings.proxyType() == Settings::NoProxy)) + return list << QNetworkProxy(QNetworkProxy::NoProxy); + + if (query.queryType() == QNetworkProxyQuery::UrlRequest) { + if (query.url().scheme() == QLatin1String("ftp")) + return list << settings.ftpProxy(); + + if (query.url().scheme() == QLatin1String("http")) + return list << settings.httpProxy(); + } + return list << QNetworkProxy(QNetworkProxy::DefaultProxy); +} + +} // QInstaller diff --git a/installerbuilder/libinstaller/packagemanagerproxyfactory.h b/installerbuilder/libinstaller/packagemanagerproxyfactory.h new file mode 100644 index 000000000..3cafebc6c --- /dev/null +++ b/installerbuilder/libinstaller/packagemanagerproxyfactory.h @@ -0,0 +1,55 @@ +/************************************************************************** +** +** This file is part of Installer Framework +** +** Copyright (c) 2011 Nokia Corporation and/or its subsidiary(-ies). +** +** Contact: Nokia Corporation (info@qt.nokia.com) +** +** +** GNU Lesser General Public License Usage +** +** This file may be used under the terms of the GNU Lesser General Public +** License version 2.1 as published by the Free Software Foundation and +** appearing in the file LICENSE.LGPL included in the packaging of this file. +** Please review the following information to ensure the GNU Lesser General +** Public License version 2.1 requirements will be met: +** http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html. +** +** In addition, as a special exception, Nokia gives you certain additional +** rights. These rights are described in the Nokia Qt LGPL Exception +** version 1.1, included in the file LGPL_EXCEPTION.txt in this package. +** +** Other Usage +** +** Alternatively, this file may be used in accordance with the terms and +** conditions contained in a signed written agreement between you and Nokia. +** +** If you have questions regarding the use of this file, please contact +** Nokia at info@qt.nokia.com. +** +**************************************************************************/ +#ifndef PACKAGEMANAGERPROXYFACTORY_H +#define PACKAGEMANAGERPROXYFACTORY_H + +#include "kdupdaterfiledownloaderfactory.h" + +namespace QInstaller { + +class PackageManagerCore; + +class PackageManagerProxyFactory : public KDUpdater::FileDownloaderProxyFactory +{ +public: + PackageManagerProxyFactory(const PackageManagerCore *const core); + + PackageManagerProxyFactory *clone() const; + QList queryProxy(const QNetworkProxyQuery &query = QNetworkProxyQuery()); + +private: + const PackageManagerCore *const m_core; +}; + +} // QInstaller + +#endif // PACKAGEMANAGERPROXYFACTORY_H -- cgit v1.2.3