1 | /* |
2 | SPDX-FileCopyrightText: Pranav Gade <pranavgade20@gmail.com> |
3 | |
4 | SPDX-License-Identifier: LGPL-2.1-only OR LGPL-3.0-only OR LicenseRef-KDE-Accepted-LGPL |
5 | */ |
6 | |
7 | #include "proxysetting.h" |
8 | #include "proxysetting_p.h" |
9 | |
10 | #include <QDebug> |
11 | |
12 | #if !NM_CHECK_VERSION(1, 6, 0) |
13 | #define NM_SETTING_PROXY_SETTING_NAME "proxy" |
14 | #define NM_SETTING_PROXY_BROWSER_ONLY "browser-only" |
15 | #define NM_SETTING_PROXY_METHOD "method" |
16 | #define NM_SETTING_PROXY_PAC_SCRIPT "pac-script" |
17 | #define NM_SETTING_PROXY_PAC_URL "pac-url" |
18 | #endif |
19 | |
20 | NetworkManager::ProxySettingPrivate::ProxySettingPrivate() |
21 | : name(NM_SETTING_PROXY_SETTING_NAME) |
22 | , browserOnly(false) |
23 | , method(ProxySetting::None) |
24 | { |
25 | } |
26 | |
27 | NetworkManager::ProxySetting::ProxySetting() |
28 | : Setting(Setting::Proxy) |
29 | , d_ptr(new ProxySettingPrivate()) |
30 | { |
31 | } |
32 | |
33 | NetworkManager::ProxySetting::ProxySetting(const Ptr &other) |
34 | : Setting(other) |
35 | , d_ptr(new ProxySettingPrivate()) |
36 | { |
37 | setBrowserOnly(other->browserOnly()); |
38 | setMethod(other->method()); |
39 | setPacScript(other->pacScript()); |
40 | setPacUrl(other->pacUrl()); |
41 | } |
42 | |
43 | NetworkManager::ProxySetting::~ProxySetting() |
44 | { |
45 | delete d_ptr; |
46 | } |
47 | |
48 | QString NetworkManager::ProxySetting::name() const |
49 | { |
50 | Q_D(const ProxySetting); |
51 | |
52 | return d->name; |
53 | } |
54 | |
55 | void NetworkManager::ProxySetting::setBrowserOnly(bool browserOnly) |
56 | { |
57 | Q_D(ProxySetting); |
58 | |
59 | d->browserOnly = browserOnly; |
60 | } |
61 | |
62 | bool NetworkManager::ProxySetting::browserOnly() const |
63 | { |
64 | Q_D(const ProxySetting); |
65 | |
66 | return d->browserOnly; |
67 | } |
68 | |
69 | void NetworkManager::ProxySetting::setMethod(NetworkManager::ProxySetting::Mode method) |
70 | { |
71 | Q_D(ProxySetting); |
72 | |
73 | d->method = method; |
74 | } |
75 | |
76 | NetworkManager::ProxySetting::Mode NetworkManager::ProxySetting::method() const |
77 | { |
78 | Q_D(const ProxySetting); |
79 | |
80 | return d->method; |
81 | } |
82 | |
83 | void NetworkManager::ProxySetting::setPacScript(const QString &script) |
84 | { |
85 | Q_D(ProxySetting); |
86 | |
87 | d->pacScript = script; |
88 | } |
89 | |
90 | QString NetworkManager::ProxySetting::pacScript() const |
91 | { |
92 | Q_D(const ProxySetting); |
93 | |
94 | return d->pacScript; |
95 | } |
96 | |
97 | void NetworkManager::ProxySetting::setPacUrl(const QString &url) |
98 | { |
99 | Q_D(ProxySetting); |
100 | |
101 | d->pacUrl = url; |
102 | } |
103 | |
104 | QString NetworkManager::ProxySetting::pacUrl() const |
105 | { |
106 | Q_D(const ProxySetting); |
107 | |
108 | return d->pacUrl; |
109 | } |
110 | |
111 | void NetworkManager::ProxySetting::fromMap(const QVariantMap &setting) |
112 | { |
113 | if (setting.contains(key: QLatin1String(NM_SETTING_PROXY_BROWSER_ONLY))) { |
114 | setBrowserOnly(setting.value(key: QLatin1String(NM_SETTING_PROXY_BROWSER_ONLY)).toBool()); |
115 | } |
116 | |
117 | if (setting.contains(key: QLatin1String(NM_SETTING_PROXY_METHOD))) { |
118 | setMethod((Mode)setting.value(key: QLatin1String(NM_SETTING_PROXY_METHOD)).toUInt()); |
119 | } |
120 | |
121 | if (setting.contains(key: QLatin1String(NM_SETTING_PROXY_PAC_SCRIPT))) { |
122 | setPacScript(setting.value(key: QLatin1String(NM_SETTING_PROXY_PAC_SCRIPT)).toString()); |
123 | } |
124 | |
125 | if (setting.contains(key: QLatin1String(NM_SETTING_PROXY_PAC_URL))) { |
126 | setPacUrl(setting.value(key: QLatin1String(NM_SETTING_PROXY_PAC_URL)).toString()); |
127 | } |
128 | } |
129 | |
130 | QVariantMap NetworkManager::ProxySetting::toMap() const |
131 | { |
132 | QVariantMap setting; |
133 | |
134 | setting.insert(key: QLatin1String(NM_SETTING_PROXY_BROWSER_ONLY), value: browserOnly()); |
135 | |
136 | if (method() > 0) { |
137 | setting.insert(key: QLatin1String(NM_SETTING_PROXY_METHOD), value: (int)method()); |
138 | } |
139 | |
140 | if (!pacScript().isEmpty()) { |
141 | setting.insert(key: QLatin1String(NM_SETTING_PROXY_PAC_SCRIPT), value: pacScript()); |
142 | } |
143 | |
144 | if (!pacUrl().isEmpty()) { |
145 | setting.insert(key: QLatin1String(NM_SETTING_PROXY_PAC_URL), value: pacUrl()); |
146 | } |
147 | |
148 | return setting; |
149 | } |
150 | |
151 | QDebug NetworkManager::operator<<(QDebug dbg, const NetworkManager::ProxySetting &setting) |
152 | { |
153 | dbg.nospace() << "type: " << setting.typeAsString(type: setting.type()) << '\n'; |
154 | dbg.nospace() << "initialized: " << !setting.isNull() << '\n'; |
155 | |
156 | dbg.nospace() << NM_SETTING_PROXY_BROWSER_ONLY << ": " << setting.browserOnly() << '\n'; |
157 | dbg.nospace() << NM_SETTING_PROXY_METHOD << ": " << setting.method() << '\n'; |
158 | dbg.nospace() << NM_SETTING_PROXY_PAC_SCRIPT << ": " << setting.pacScript() << '\n'; |
159 | dbg.nospace() << NM_SETTING_PROXY_PAC_URL << ": " << setting.pacUrl() << '\n'; |
160 | |
161 | return dbg.maybeSpace(); |
162 | } |
163 | |