proxyinfo.cpp
Go to the documentation of this file.00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021 #include "proxyinfo.h"
00022 #include "settings_general.h"
00023 #include <KUrl>
00024 #include <QByteArray>
00025
00026
00027
00028 proxyinfo proxyinfo::internal_instance;
00029
00030 proxyinfo::proxyinfo()
00031 {
00032 #ifdef LIBPROXY_FOUND
00033 libproxy_factory = px_proxy_factory_new();
00034 #endif
00035 }
00036
00037 proxyinfo::~proxyinfo()
00038 {
00039 #ifdef LIBPROXY_FOUND
00040 px_proxy_factory_free(libproxy_factory);
00041 #endif
00042 }
00043
00044 QStringList proxyinfo::proxyserver(const QString & url)
00045 {
00046 return proxyinfo::internal_instance.internal_proxyserver(url);
00047 }
00048
00049 #ifdef LIBPROXY_FOUND
00050 QStringList proxyinfo::internal_proxyserver(const QString & url) const
00051 {
00052 if (settings_general::proxyConfiguration() ==
00053 settings_general::EnumProxyConfiguration::automatic) {
00054 QStringList returnValue;
00055
00056 QByteArray c_encoded_url = KUrl(url).toEncoded();
00057
00058 char **proxies = px_proxy_factory_get_proxies(proxyinfo::libproxy_factory,
00059 c_encoded_url.data());
00060
00061 for (int i=0; proxies[i]; ++i) {
00062 returnValue.append(proxies[i]);
00063 };
00064 if (returnValue.size() < 1) {
00065
00066 returnValue.append("direct://");
00067 };
00068
00069 for (int i=0; proxies[i]; ++i) {
00070 free(proxies[i]);
00071 };
00072 free(proxies);
00073 return returnValue;
00074 } else {
00075 return manual_proxyserver();
00076 };
00077 }
00078 #else
00079 QStringList proxyinfo::internal_proxyserver(const QString &) const
00080 {
00081 return manual_proxyserver();
00082 }
00083 #endif
00084
00085 QStringList proxyinfo::manual_proxyserver() const
00086 {
00087 QStringList returnValue;
00088 QString temp_server = settings_general::proxyServer();
00089 if (temp_server.isEmpty()) {
00090 returnValue.append("direct://");
00091 } else {
00092 returnValue.append(temp_server);
00093 };
00094 return returnValue;
00095 }