File indexing completed on 2024-12-08 03:37:14
0001 /* 0002 This file is part of KDE. 0003 0004 SPDX-FileCopyrightText: 2009 Eckhart Wörner <ewoerner@kde.org> 0005 SPDX-FileCopyrightText: 2011 Laszlo Papp <djszapi@archlinux.us> 0006 SPDX-FileCopyrightText: 2012 Jeff Mitchell <mitchell@kde.org> 0007 0008 SPDX-License-Identifier: LGPL-2.1-only OR LGPL-3.0-only OR LicenseRef-KDE-Accepted-LGPL 0009 */ 0010 0011 #include "qtplatformdependent_p.h" 0012 0013 #include <QDebug> 0014 #include <QStringList> 0015 #include <QUrl> 0016 0017 using namespace Attica; 0018 0019 QtPlatformDependent::QtPlatformDependent() 0020 { 0021 m_threadNamHash[QThread::currentThread()] = new QNetworkAccessManager(); 0022 m_ourNamSet.insert(QThread::currentThread()); 0023 } 0024 0025 QtPlatformDependent::~QtPlatformDependent() 0026 { 0027 QThread *currThread = QThread::currentThread(); 0028 if (m_threadNamHash.contains(currThread)) { 0029 if (m_ourNamSet.contains(currThread)) { 0030 delete m_threadNamHash[currThread]; 0031 } 0032 m_threadNamHash.remove(currThread); 0033 m_ourNamSet.remove(currThread); 0034 } 0035 } 0036 0037 void QtPlatformDependent::setNam(QNetworkAccessManager *nam) 0038 { 0039 if (!nam) { 0040 return; 0041 } 0042 0043 QMutexLocker l(&m_accessMutex); 0044 QThread *currThread = QThread::currentThread(); 0045 QNetworkAccessManager *oldNam = nullptr; 0046 if (m_threadNamHash.contains(currThread) && m_ourNamSet.contains(currThread)) { 0047 oldNam = m_threadNamHash[currThread]; 0048 } 0049 0050 if (oldNam == nam) { 0051 // If we're being passed back our own NAM, assume they want to 0052 // ensure that we don't delete it out from under them 0053 m_ourNamSet.remove(currThread); 0054 return; 0055 } 0056 0057 m_threadNamHash[currThread] = nam; 0058 m_ourNamSet.remove(currThread); 0059 0060 if (oldNam) { 0061 delete oldNam; 0062 } 0063 } 0064 0065 QNetworkAccessManager *QtPlatformDependent::nam() 0066 { 0067 QMutexLocker l(&m_accessMutex); 0068 QThread *currThread = QThread::currentThread(); 0069 if (!m_threadNamHash.contains(currThread)) { 0070 QNetworkAccessManager *newNam = new QNetworkAccessManager(); 0071 m_threadNamHash[currThread] = newNam; 0072 m_ourNamSet.insert(currThread); 0073 return newNam; 0074 } 0075 0076 return m_threadNamHash[currThread]; 0077 } 0078 0079 // TODO actually save and restore providers! 0080 QList<QUrl> Attica::QtPlatformDependent::getDefaultProviderFiles() const 0081 { 0082 // Return the defaultiest default provider (since that's what our documentation says we'll do) 0083 return QList<QUrl>{QUrl(QStringLiteral("https://autoconfig.kde.org/ocs/providers.xml"))}; 0084 } 0085 0086 void QtPlatformDependent::addDefaultProviderFile(const QUrl &) 0087 { 0088 qWarning() << "attica-qt does not support default providers yet"; 0089 } 0090 0091 void QtPlatformDependent::removeDefaultProviderFile(const QUrl &) 0092 { 0093 } 0094 0095 void QtPlatformDependent::enableProvider(const QUrl &baseUrl, bool enabled) const 0096 { 0097 Q_UNUSED(baseUrl) 0098 Q_UNUSED(enabled) 0099 qWarning() << "attica-qt does not support disabling of providers yet"; 0100 } 0101 0102 bool QtPlatformDependent::isEnabled(const QUrl &baseUrl) const 0103 { 0104 Q_UNUSED(baseUrl) 0105 return true; 0106 } 0107 0108 QNetworkReply *QtPlatformDependent::post(const QNetworkRequest &request, const QByteArray &data) 0109 { 0110 return nam()->post(request, data); 0111 } 0112 0113 QNetworkReply *QtPlatformDependent::post(const QNetworkRequest &request, QIODevice *data) 0114 { 0115 return nam()->post(request, data); 0116 } 0117 0118 QNetworkReply *QtPlatformDependent::put(const QNetworkRequest &request, const QByteArray &data) 0119 { 0120 return nam()->put(request, data); 0121 } 0122 0123 QNetworkReply *QtPlatformDependent::put(const QNetworkRequest &request, QIODevice *data) 0124 { 0125 return nam()->put(request, data); 0126 } 0127 0128 QNetworkReply *QtPlatformDependent::get(const QNetworkRequest &request) 0129 { 0130 return nam()->get(request); 0131 } 0132 0133 QNetworkReply *QtPlatformDependent::deleteResource(const QNetworkRequest &request) 0134 { 0135 return nam()->deleteResource(request); 0136 } 0137 0138 bool QtPlatformDependent::hasCredentials(const QUrl &baseUrl) const 0139 { 0140 return m_passwords.contains(baseUrl.toString()); 0141 } 0142 0143 bool QtPlatformDependent::saveCredentials(const QUrl &baseUrl, const QString &user, const QString &password) 0144 { 0145 m_passwords[baseUrl.toString()] = QPair<QString, QString>(user, password); 0146 return true; 0147 } 0148 0149 bool QtPlatformDependent::loadCredentials(const QUrl &baseUrl, QString &user, QString &password) 0150 { 0151 if (!hasCredentials(baseUrl)) { 0152 return false; 0153 } 0154 QPair<QString, QString> userPass = m_passwords.value(baseUrl.toString()); 0155 user = userPass.first; 0156 password = userPass.second; 0157 return true; 0158 } 0159 0160 bool Attica::QtPlatformDependent::askForCredentials(const QUrl &baseUrl, QString &user, QString &password) 0161 { 0162 Q_UNUSED(baseUrl) 0163 Q_UNUSED(user) 0164 Q_UNUSED(password) 0165 return false; 0166 }