summaryrefslogtreecommitdiffstats
path: root/src/oauth/qoauthurischemereplyhandler.h
blob: 6cdbbb1f11a3b6f62b7ed3fc9351bb1484b54faa (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
// Copyright (C) 2024 The Qt Company Ltd.
// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GPL-3.0-only

#ifndef QOAUTHURISCHEMEREPLYHANDLER_H
#define QOAUTHURISCHEMEREPLYHANDLER_H

#include <QtNetworkAuth/qoauthglobal.h>
#include <QtNetworkAuth/qoauthoobreplyhandler.h>

#include <QtCore/qurl.h>

QT_BEGIN_NAMESPACE

class QOAuthUriSchemeReplyHandlerPrivate;
class Q_OAUTH_EXPORT QOAuthUriSchemeReplyHandler : public QOAuthOobReplyHandler
{
    Q_OBJECT
    Q_PROPERTY(QUrl redirectUrl READ redirectUrl WRITE setRedirectUrl NOTIFY redirectUrlChanged FINAL)
public:
    Q_IMPLICIT QOAuthUriSchemeReplyHandler() : QOAuthUriSchemeReplyHandler(nullptr) {}
    explicit QOAuthUriSchemeReplyHandler(QObject *parent);
    explicit QOAuthUriSchemeReplyHandler(const QUrl &redirectUrl, QObject *parent = nullptr);
    ~QOAuthUriSchemeReplyHandler() override;

    QString callback() const override;

    void setRedirectUrl(const QUrl &url);
    QUrl redirectUrl() const;

    bool listen();
    void close();
    bool isListening() const noexcept;

Q_SIGNALS:
    void redirectUrlChanged();

private:
    Q_DISABLE_COPY(QOAuthUriSchemeReplyHandler)
    Q_DECLARE_PRIVATE(QOAuthUriSchemeReplyHandler)
    // Private slot for providing a callback slot for QDesktopServices::setUrlHandler
    Q_PRIVATE_SLOT(d_func(), void _q_handleRedirectUrl(const QUrl &url))
};

QT_END_NAMESPACE

#endif // QOAUTHURISCHEMEREPLYHANDLER_H