File indexing completed on 2024-04-14 03:57:37

0001 /*
0002     SPDX-FileCopyrightText: Pranav Gade <pranavgade20@gmail.com>
0003 
0004     SPDX-License-Identifier: LGPL-2.1-only OR LGPL-3.0-only OR LicenseRef-KDE-Accepted-LGPL
0005 */
0006 
0007 #include "proxysetting.h"
0008 #include "proxysetting_p.h"
0009 
0010 #include <QDebug>
0011 
0012 #if !NM_CHECK_VERSION(1, 6, 0)
0013 #define NM_SETTING_PROXY_SETTING_NAME "proxy"
0014 #define NM_SETTING_PROXY_BROWSER_ONLY "browser-only"
0015 #define NM_SETTING_PROXY_METHOD "method"
0016 #define NM_SETTING_PROXY_PAC_SCRIPT "pac-script"
0017 #define NM_SETTING_PROXY_PAC_URL "pac-url"
0018 #endif
0019 
0020 NetworkManager::ProxySettingPrivate::ProxySettingPrivate()
0021     : name(NM_SETTING_PROXY_SETTING_NAME)
0022     , browserOnly(false)
0023     , method(ProxySetting::None)
0024 {
0025 }
0026 
0027 NetworkManager::ProxySetting::ProxySetting()
0028     : Setting(Setting::Proxy)
0029     , d_ptr(new ProxySettingPrivate())
0030 {
0031 }
0032 
0033 NetworkManager::ProxySetting::ProxySetting(const Ptr &other)
0034     : Setting(other)
0035     , d_ptr(new ProxySettingPrivate())
0036 {
0037     setBrowserOnly(other->browserOnly());
0038     setMethod(other->method());
0039     setPacScript(other->pacScript());
0040     setPacUrl(other->pacUrl());
0041 }
0042 
0043 NetworkManager::ProxySetting::~ProxySetting()
0044 {
0045     delete d_ptr;
0046 }
0047 
0048 QString NetworkManager::ProxySetting::name() const
0049 {
0050     Q_D(const ProxySetting);
0051 
0052     return d->name;
0053 }
0054 
0055 void NetworkManager::ProxySetting::setBrowserOnly(bool browserOnly)
0056 {
0057     Q_D(ProxySetting);
0058 
0059     d->browserOnly = browserOnly;
0060 }
0061 
0062 bool NetworkManager::ProxySetting::browserOnly() const
0063 {
0064     Q_D(const ProxySetting);
0065 
0066     return d->browserOnly;
0067 }
0068 
0069 void NetworkManager::ProxySetting::setMethod(NetworkManager::ProxySetting::Mode method)
0070 {
0071     Q_D(ProxySetting);
0072 
0073     d->method = method;
0074 }
0075 
0076 NetworkManager::ProxySetting::Mode NetworkManager::ProxySetting::method() const
0077 {
0078     Q_D(const ProxySetting);
0079 
0080     return d->method;
0081 }
0082 
0083 void NetworkManager::ProxySetting::setPacScript(const QString &script)
0084 {
0085     Q_D(ProxySetting);
0086 
0087     d->pacScript = script;
0088 }
0089 
0090 QString NetworkManager::ProxySetting::pacScript() const
0091 {
0092     Q_D(const ProxySetting);
0093 
0094     return d->pacScript;
0095 }
0096 
0097 void NetworkManager::ProxySetting::setPacUrl(const QString &url)
0098 {
0099     Q_D(ProxySetting);
0100 
0101     d->pacUrl = url;
0102 }
0103 
0104 QString NetworkManager::ProxySetting::pacUrl() const
0105 {
0106     Q_D(const ProxySetting);
0107 
0108     return d->pacUrl;
0109 }
0110 
0111 void NetworkManager::ProxySetting::fromMap(const QVariantMap &setting)
0112 {
0113     if (setting.contains(QLatin1String(NM_SETTING_PROXY_BROWSER_ONLY))) {
0114         setBrowserOnly(setting.value(QLatin1String(NM_SETTING_PROXY_BROWSER_ONLY)).toBool());
0115     }
0116 
0117     if (setting.contains(QLatin1String(NM_SETTING_PROXY_METHOD))) {
0118         setMethod((Mode)setting.value(QLatin1String(NM_SETTING_PROXY_METHOD)).toUInt());
0119     }
0120 
0121     if (setting.contains(QLatin1String(NM_SETTING_PROXY_PAC_SCRIPT))) {
0122         setPacScript(setting.value(QLatin1String(NM_SETTING_PROXY_PAC_SCRIPT)).toString());
0123     }
0124 
0125     if (setting.contains(QLatin1String(NM_SETTING_PROXY_PAC_URL))) {
0126         setPacUrl(setting.value(QLatin1String(NM_SETTING_PROXY_PAC_URL)).toString());
0127     }
0128 }
0129 
0130 QVariantMap NetworkManager::ProxySetting::toMap() const
0131 {
0132     QVariantMap setting;
0133 
0134     setting.insert(QLatin1String(NM_SETTING_PROXY_BROWSER_ONLY), browserOnly());
0135 
0136     if (method() > 0) {
0137         setting.insert(QLatin1String(NM_SETTING_PROXY_METHOD), (int)method());
0138     }
0139 
0140     if (!pacScript().isEmpty()) {
0141         setting.insert(QLatin1String(NM_SETTING_PROXY_PAC_SCRIPT), pacScript());
0142     }
0143 
0144     if (!pacUrl().isEmpty()) {
0145         setting.insert(QLatin1String(NM_SETTING_PROXY_PAC_URL), pacUrl());
0146     }
0147 
0148     return setting;
0149 }
0150 
0151 QDebug NetworkManager::operator<<(QDebug dbg, const NetworkManager::ProxySetting &setting)
0152 {
0153     dbg.nospace() << "type: " << setting.typeAsString(setting.type()) << '\n';
0154     dbg.nospace() << "initialized: " << !setting.isNull() << '\n';
0155 
0156     dbg.nospace() << NM_SETTING_PROXY_BROWSER_ONLY << ": " << setting.browserOnly() << '\n';
0157     dbg.nospace() << NM_SETTING_PROXY_METHOD << ": " << setting.method() << '\n';
0158     dbg.nospace() << NM_SETTING_PROXY_PAC_SCRIPT << ": " << setting.pacScript() << '\n';
0159     dbg.nospace() << NM_SETTING_PROXY_PAC_URL << ": " << setting.pacUrl() << '\n';
0160 
0161     return dbg.maybeSpace();
0162 }