File indexing completed on 2024-05-12 05:35:30

0001 /*
0002     This file is part of KDE.
0003 
0004     SPDX-FileCopyrightText: 2009 Eckhart Wörner <ewoerner@kde.org>
0005     SPDX-FileCopyrightText: 2010 Frederik Gladhorn <gladhorn@kde.org>
0006 
0007     SPDX-License-Identifier: LGPL-2.1-only OR LGPL-3.0-only OR LicenseRef-KDE-Accepted-LGPL
0008 
0009 */
0010 
0011 #pragma once
0012 
0013 #include <attica/platformdependent.h>
0014 
0015 #include <QHash>
0016 
0017 #include <KSharedConfig>
0018 
0019 namespace Attica
0020 {
0021 class KdePlatformDependent : public QObject, public Attica::PlatformDependent
0022 {
0023     Q_OBJECT
0024     Q_INTERFACES(Attica::PlatformDependent)
0025     Q_PLUGIN_METADATA(IID "org.kde.attica-kde")
0026 
0027 public:
0028     KdePlatformDependent();
0029     ~KdePlatformDependent() override;
0030     QList<QUrl> getDefaultProviderFiles() const override;
0031     void addDefaultProviderFile(const QUrl &url) override;
0032     void removeDefaultProviderFile(const QUrl &url) override;
0033     void enableProvider(const QUrl &baseUrl, bool enabled) const override;
0034     bool isEnabled(const QUrl &baseUrl) const override;
0035 
0036     QNetworkReply *post(const QNetworkRequest &request, const QByteArray &data) override;
0037     QNetworkReply *post(const QNetworkRequest &request, QIODevice *data) override;
0038     QNetworkReply *get(const QNetworkRequest &request) override;
0039     bool saveCredentials(const QUrl &baseUrl, const QString &user, const QString &password) override;
0040     bool hasCredentials(const QUrl &baseUrl) const override;
0041     bool loadCredentials(const QUrl &baseUrl, QString &user, QString &password) override;
0042     bool askForCredentials(const QUrl &baseUrl, QString &user, QString &password) override;
0043     QNetworkAccessManager *nam() override;
0044 
0045 private:
0046     QNetworkRequest addOAuthToRequest(const QNetworkRequest &request);
0047     QNetworkRequest removeAuthFromRequest(const QNetworkRequest &request);
0048     QString getAccessToken(const QUrl &baseUrl) const;
0049 
0050     KSharedConfigPtr m_config;
0051     QNetworkAccessManager *m_accessManager{nullptr};
0052     QHash<QString, QPair<QString, QString>> m_passwords;
0053 };
0054 
0055 }