aboutsummaryrefslogtreecommitdiff
path: root/src/protocols/geminiclient.hpp
diff options
context:
space:
mode:
authorFelix (xq) Queißner <git@mq32.de>2020-06-22 21:10:04 +0200
committerFelix (xq) Queißner <git@mq32.de>2020-06-22 21:10:04 +0200
commit75ec461eeaa851cb5c53f4cfffc434e3e529ed1d (patch)
tree3944737340718ca3675381aa06636045d397e780 /src/protocols/geminiclient.hpp
parent8dbfb0890560fd1cd698d06fa05ac868c4db8576 (diff)
downloadkristall-75ec461eeaa851cb5c53f4cfffc434e3e529ed1d.tar.gz
Restructures the project source and cleans up a bit
Diffstat (limited to 'src/protocols/geminiclient.hpp')
-rw-r--r--src/protocols/geminiclient.hpp55
1 files changed, 55 insertions, 0 deletions
diff --git a/src/protocols/geminiclient.hpp b/src/protocols/geminiclient.hpp
new file mode 100644
index 0000000..85c4f76
--- /dev/null
+++ b/src/protocols/geminiclient.hpp
@@ -0,0 +1,55 @@
+#ifndef GEMINICLIENT_HPP
+#define GEMINICLIENT_HPP
+
+#include <QObject>
+#include <QMimeType>
+#include <QSslSocket>
+#include <QUrl>
+
+#include "protocolhandler.hpp"
+
+class GeminiClient : public ProtocolHandler
+{
+private:
+ Q_OBJECT
+public:
+ explicit GeminiClient();
+
+ ~GeminiClient() override;
+
+ bool supportsScheme(QString const & scheme) const override;
+
+ bool startRequest(QUrl const & url, RequestOptions options) override;
+
+ bool isInProgress() const override;
+
+ bool cancelRequest() override;
+
+ bool enableClientCertificate(CryptoIdentity const & ident) override;
+ void disableClientCertificate() override;
+
+private slots:
+ void socketEncrypted();
+
+ void socketReadyRead();
+
+ void socketDisconnected();
+
+ void sslErrors(const QList<QSslError> &errors);
+
+ void socketError(QAbstractSocket::SocketError socketError);
+
+private:
+ bool is_receiving_body;
+ bool suppress_socket_tls_error;
+ bool is_error_state;
+
+ QUrl target_url;
+ QSslSocket socket;
+ QByteArray buffer;
+ QByteArray body;
+ QString mime_type;
+ RequestOptions options;
+};
+
+#endif // GEMINICLIENT_HPP