File indexing completed on 2026-05-17 12:33:23

0001 /*
0002    SPDX-FileCopyrightText: 2023-2024 Laurent Montel <montel.org>
0003 
0004    SPDX-License-Identifier: LGPL-2.0-or-later
0005 */
0006 
0007 #pragma once
0008 
0009 #include <QObject>
0010 class QOAuth2AuthorizationCodeFlow;
0011 class GitHubAuthenticationJob : public QObject
0012 {
0013     Q_OBJECT
0014 public:
0015     struct GitHubInfo {
0016         QString url;
0017         QString token;
0018         QString refreshToken;
0019         QString clientId;
0020 
0021         [[nodiscard]] bool isValid() const;
0022     };
0023     explicit GitHubAuthenticationJob(QObject *parent = nullptr);
0024     ~GitHubAuthenticationJob() override;
0025 
0026     void start();
0027 
0028     [[nodiscard]] GitHubInfo gitHubInfo() const;
0029     void setGitHubInfo(const GitHubInfo &newGitHubInfo);
0030 
0031 Q_SIGNALS:
0032     void authenticateDone();
0033 
0034 private:
0035     void doRequest();
0036     GitHubInfo mGitHubInfo;
0037     QOAuth2AuthorizationCodeFlow *const mOAuth2;
0038 };