File indexing completed on 2025-02-02 05:08:36

0001 // SPDX-FileCopyrightText: 2023 Carl Schwan <carlschwan@kde.org>
0002 // SPDX-License-Identifier: LGPL-2.0-or-later
0003 
0004 #pragma once
0005 
0006 #include "ispdb/serverconfiguration.h"
0007 
0008 #include <KMime/HeaderParsing>
0009 #include <QObject>
0010 
0011 class QNetworkAccessManager;
0012 class QNetworkReply;
0013 
0014 class IspdbService : public QObject
0015 {
0016     Q_OBJECT
0017 
0018 public:
0019     explicit IspdbService(QObject *parent = nullptr);
0020     void start(const KMime::Types::AddrSpec &addrSpec);
0021 
0022 Q_SIGNALS:
0023     void finished(const EmailProvider &emailProvider, const QString &messageInfo);
0024     void notConfigFound();
0025     void requestedConfigFromUrl(const QUrl &url);
0026 
0027 private:
0028     enum SearchServerType {
0029         IspAutoConfig = 0, ///< http://autoconfig.example.com/mail/config-v1.1.xml
0030         IspWellKnow, ///< http://example.com/.well-known/autoconfig/mail/config-v1.1.xml
0031         DataBase ///< https://autoconfig.thunderbird.net/v1.1/example.com */
0032     };
0033     void requestConfig(const KMime::Types::AddrSpec &addrSpec, const SearchServerType searchServerType);
0034     void handleReply(QNetworkReply *const reply, const KMime::Types::AddrSpec &addrSpec, const SearchServerType searchServerType);
0035 
0036     QNetworkAccessManager *const mNetworkAccessManager;
0037 };