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 };