@@ -53,6 +53,22 @@ def load(cls, value):
53
53
raise Exception (f"No proxy type is found for { value } " )
54
54
55
55
56
+ class _ProxyTypeDescriptor :
57
+ def __init__ (self , name , p_type ):
58
+ self .name = name
59
+ self .p_type = p_type
60
+
61
+ def __get__ (self , obj , cls ):
62
+ return getattr (obj , self .name )
63
+
64
+ def __set__ (self , obj , value ):
65
+ if self .name == "autodetect" and not isinstance (value , bool ):
66
+ raise ValueError ("Autodetect proxy value needs to be a boolean" )
67
+ getattr (obj , "_verify_proxy_type_compatibility" )(self .p_type )
68
+ setattr (obj , "proxyType" , self .p_type )
69
+ setattr (obj , self .name , value )
70
+
71
+
56
72
class Proxy :
57
73
"""Proxy contains information about proxy type and necessary proxy
58
74
settings."""
@@ -69,6 +85,157 @@ class Proxy:
69
85
socksPassword = ""
70
86
socksVersion = None
71
87
88
+ # create descriptor type objects
89
+ auto_detect = _ProxyTypeDescriptor ("autodetect" , ProxyType .AUTODETECT )
90
+ """Gets and Sets `auto_detect`
91
+
92
+ Usage
93
+ -----
94
+ - Get
95
+ - `self.auto_detect`
96
+ - Set
97
+ - `self.auto_detect` = `value`
98
+
99
+ Parameters
100
+ ----------
101
+ `value`: `str`
102
+ """
103
+
104
+ ftp_proxy = _ProxyTypeDescriptor ("ftpProxy" , ProxyType .MANUAL )
105
+ """Gets and Sets `ftp_proxy`
106
+
107
+ Usage
108
+ -----
109
+ - Get
110
+ - `self.ftp_proxy`
111
+ - Set
112
+ - `self.ftp_proxy` = `value`
113
+
114
+ Parameters
115
+ ----------
116
+ `value`: `str`
117
+ """
118
+
119
+ http_proxy = _ProxyTypeDescriptor ("httpProxy" , ProxyType .MANUAL )
120
+ """Gets and Sets `http_proxy`
121
+
122
+ Usage
123
+ -----
124
+ - Get
125
+ - `self.http_proxy`
126
+ - Set
127
+ - `self.http_proxy` = `value`
128
+
129
+ Parameters
130
+ ----------
131
+ `value`: `str`
132
+ """
133
+
134
+ no_proxy = _ProxyTypeDescriptor ("noProxy" , ProxyType .MANUAL )
135
+ """Gets and Sets `no_proxy`
136
+
137
+ Usage
138
+ -----
139
+ - Get
140
+ - `self.no_proxy`
141
+ - Set
142
+ - `self.no_proxy` = `value`
143
+
144
+ Parameters
145
+ ----------
146
+ `value`: `str`
147
+ """
148
+
149
+ proxy_autoconfig_url = _ProxyTypeDescriptor ("proxyAutoconfigUrl" , ProxyType .PAC )
150
+ """Gets and Sets `proxy_autoconfig_url`
151
+
152
+ Usage
153
+ -----
154
+ - Get
155
+ - `self.proxy_autoconfig_url`
156
+ - Set
157
+ - `self.proxy_autoconfig_url` = `value`
158
+
159
+ Parameter
160
+ ---------
161
+ `value`: `str`
162
+ """
163
+
164
+ ssl_proxy = _ProxyTypeDescriptor ("sslProxy" , ProxyType .MANUAL )
165
+ """Gets and Sets `ssl_proxy`
166
+
167
+ Usage
168
+ -----
169
+ - Get
170
+ - `self.ssl_proxy`
171
+ - Set
172
+ - `self.ssl_proxy` = `value`
173
+
174
+ Parameter
175
+ ---------
176
+ `value`: `str`
177
+ """
178
+
179
+ socks_proxy = _ProxyTypeDescriptor ("socksProxy" , ProxyType .MANUAL )
180
+ """Gets and Sets `socks_proxy`
181
+
182
+ Usage
183
+ -----
184
+ - Get
185
+ - `self.sock_proxy`
186
+ - Set
187
+ - `self.socks_proxy` = `value`
188
+
189
+ Parameter
190
+ ---------
191
+ `value`: `str`
192
+ """
193
+
194
+ socks_username = _ProxyTypeDescriptor ("socksUsername" , ProxyType .MANUAL )
195
+ """Gets and Sets `socks_password`
196
+
197
+ Usage
198
+ -----
199
+ - Get
200
+ - `self.socks_password`
201
+ - Set
202
+ - `self.socks_password` = `value`
203
+
204
+ Parameter
205
+ ---------
206
+ `value`: `str`
207
+ """
208
+
209
+ socks_password = _ProxyTypeDescriptor ("socksPassword" , ProxyType .MANUAL )
210
+ """Gets and Sets `socks_password`
211
+
212
+ Usage
213
+ -----
214
+ - Get
215
+ - `self.socks_password`
216
+ - Set
217
+ - `self.socks_password` = `value`
218
+
219
+ Parameter
220
+ ---------
221
+ `value`: `str`
222
+ """
223
+
224
+ socks_version = _ProxyTypeDescriptor ("socksVersion" , ProxyType .MANUAL )
225
+ """Gets and Sets `socks_version`
226
+
227
+ Usage
228
+ -----
229
+ - Get
230
+ - `self.socks_version`
231
+ - Set
232
+ - `self.socks_version` = `value`
233
+
234
+ Parameter
235
+ ---------
236
+ `value`: `str`
237
+ """
238
+
72
239
def __init__ (self , raw = None ):
73
240
"""Creates a new Proxy.
74
241
@@ -114,170 +281,6 @@ def proxy_type(self, value) -> None:
114
281
self ._verify_proxy_type_compatibility (value )
115
282
self .proxyType = value
116
283
117
- @property
118
- def auto_detect (self ):
119
- """Returns autodetect setting."""
120
- return self .autodetect
121
-
122
- @auto_detect .setter
123
- def auto_detect (self , value ) -> None :
124
- """Sets autodetect setting.
125
-
126
- :Args:
127
- - value: The autodetect value.
128
- """
129
- if isinstance (value , bool ):
130
- if self .autodetect is not value :
131
- self ._verify_proxy_type_compatibility (ProxyType .AUTODETECT )
132
- self .proxyType = ProxyType .AUTODETECT
133
- self .autodetect = value
134
- else :
135
- raise ValueError ("Autodetect proxy value needs to be a boolean" )
136
-
137
- @property
138
- def ftp_proxy (self ):
139
- """Returns ftp proxy setting."""
140
- return self .ftpProxy
141
-
142
- @ftp_proxy .setter
143
- def ftp_proxy (self , value ) -> None :
144
- """Sets ftp proxy setting.
145
-
146
- :Args:
147
- - value: The ftp proxy value.
148
- """
149
- self ._verify_proxy_type_compatibility (ProxyType .MANUAL )
150
- self .proxyType = ProxyType .MANUAL
151
- self .ftpProxy = value
152
-
153
- @property
154
- def http_proxy (self ):
155
- """Returns http proxy setting."""
156
- return self .httpProxy
157
-
158
- @http_proxy .setter
159
- def http_proxy (self , value ) -> None :
160
- """Sets http proxy setting.
161
-
162
- :Args:
163
- - value: The http proxy value.
164
- """
165
- self ._verify_proxy_type_compatibility (ProxyType .MANUAL )
166
- self .proxyType = ProxyType .MANUAL
167
- self .httpProxy = value
168
-
169
- @property
170
- def no_proxy (self ):
171
- """Returns noproxy setting."""
172
- return self .noProxy
173
-
174
- @no_proxy .setter
175
- def no_proxy (self , value ) -> None :
176
- """Sets noproxy setting.
177
-
178
- :Args:
179
- - value: The noproxy value.
180
- """
181
- self ._verify_proxy_type_compatibility (ProxyType .MANUAL )
182
- self .proxyType = ProxyType .MANUAL
183
- self .noProxy = value
184
-
185
- @property
186
- def proxy_autoconfig_url (self ):
187
- """Returns proxy autoconfig url setting."""
188
- return self .proxyAutoconfigUrl
189
-
190
- @proxy_autoconfig_url .setter
191
- def proxy_autoconfig_url (self , value ) -> None :
192
- """Sets proxy autoconfig url setting.
193
-
194
- :Args:
195
- - value: The proxy autoconfig url value.
196
- """
197
- self ._verify_proxy_type_compatibility (ProxyType .PAC )
198
- self .proxyType = ProxyType .PAC
199
- self .proxyAutoconfigUrl = value
200
-
201
- @property
202
- def ssl_proxy (self ):
203
- """Returns https proxy setting."""
204
- return self .sslProxy
205
-
206
- @ssl_proxy .setter
207
- def ssl_proxy (self , value ) -> None :
208
- """Sets https proxy setting.
209
-
210
- :Args:
211
- - value: The https proxy value.
212
- """
213
- self ._verify_proxy_type_compatibility (ProxyType .MANUAL )
214
- self .proxyType = ProxyType .MANUAL
215
- self .sslProxy = value
216
-
217
- @property
218
- def socks_proxy (self ):
219
- """Returns socks proxy setting."""
220
- return self .socksProxy
221
-
222
- @socks_proxy .setter
223
- def socks_proxy (self , value ) -> None :
224
- """Sets socks proxy setting.
225
-
226
- :Args:
227
- - value: The socks proxy value.
228
- """
229
- self ._verify_proxy_type_compatibility (ProxyType .MANUAL )
230
- self .proxyType = ProxyType .MANUAL
231
- self .socksProxy = value
232
-
233
- @property
234
- def socks_username (self ):
235
- """Returns socks proxy username setting."""
236
- return self .socksUsername
237
-
238
- @socks_username .setter
239
- def socks_username (self , value ) -> None :
240
- """Sets socks proxy username setting.
241
-
242
- :Args:
243
- - value: The socks proxy username value.
244
- """
245
- self ._verify_proxy_type_compatibility (ProxyType .MANUAL )
246
- self .proxyType = ProxyType .MANUAL
247
- self .socksUsername = value
248
-
249
- @property
250
- def socks_password (self ):
251
- """Returns socks proxy password setting."""
252
- return self .socksPassword
253
-
254
- @socks_password .setter
255
- def socks_password (self , value ) -> None :
256
- """Sets socks proxy password setting.
257
-
258
- :Args:
259
- - value: The socks proxy password value.
260
- """
261
- self ._verify_proxy_type_compatibility (ProxyType .MANUAL )
262
- self .proxyType = ProxyType .MANUAL
263
- self .socksPassword = value
264
-
265
- @property
266
- def socks_version (self ):
267
- """Returns socks proxy version setting."""
268
- return self .socksVersion
269
-
270
- @socks_version .setter
271
- def socks_version (self , value ) -> None :
272
- """Sets socks proxy version setting.
273
-
274
- :Args:
275
- - value: The socks proxy version value.
276
- """
277
- self ._verify_proxy_type_compatibility (ProxyType .MANUAL )
278
- self .proxyType = ProxyType .MANUAL
279
- self .socksVersion = value
280
-
281
284
def _verify_proxy_type_compatibility (self , compatible_proxy ):
282
285
if self .proxyType not in (ProxyType .UNSPECIFIED , compatible_proxy ):
283
286
raise Exception (
@@ -286,24 +289,20 @@ def _verify_proxy_type_compatibility(self, compatible_proxy):
286
289
287
290
def to_capabilities (self ):
288
291
proxy_caps = {"proxyType" : self .proxyType ["string" ].lower ()}
289
- if self .autodetect :
290
- proxy_caps ["autodetect" ] = self .autodetect
291
- if self .ftpProxy :
292
- proxy_caps ["ftpProxy" ] = self .ftpProxy
293
- if self .httpProxy :
294
- proxy_caps ["httpProxy" ] = self .httpProxy
295
- if self .proxyAutoconfigUrl :
296
- proxy_caps ["proxyAutoconfigUrl" ] = self .proxyAutoconfigUrl
297
- if self .sslProxy :
298
- proxy_caps ["sslProxy" ] = self .sslProxy
299
- if self .noProxy :
300
- proxy_caps ["noProxy" ] = self .noProxy
301
- if self .socksProxy :
302
- proxy_caps ["socksProxy" ] = self .socksProxy
303
- if self .socksUsername :
304
- proxy_caps ["socksUsername" ] = self .socksUsername
305
- if self .socksPassword :
306
- proxy_caps ["socksPassword" ] = self .socksPassword
307
- if self .socksVersion :
308
- proxy_caps ["socksVersion" ] = self .socksVersion
292
+ proxies = [
293
+ "autodetect" ,
294
+ "ftpProxy" ,
295
+ "httpProxy" ,
296
+ "proxyAutoconfigUrl" ,
297
+ "sslProxy" ,
298
+ "noProxy" ,
299
+ "socksProxy" ,
300
+ "socksUsername" ,
301
+ "socksPassword" ,
302
+ "socksVersion" ,
303
+ ]
304
+ for proxy in proxies :
305
+ attr_value = getattr (self , proxy )
306
+ if attr_value :
307
+ proxy_caps [proxy ] = attr_value
309
308
return proxy_caps
0 commit comments