AusweisApp2
Lade ...
Suche ...
Keine Treffer
HttpRequest.h
gehe zur Dokumentation dieser Datei
1
7#pragma once
8
9#include "HttpResponse.h"
10
11#include <QByteArray>
12#include <QMap>
13#include <QObject>
14#include <QPointer>
15#include <QTcpSocket>
16#include <QUrl>
17
18#include <http_parser.h>
19
20#include <memory>
21
22
23class test_HttpRequest;
24
25
26namespace governikus
27{
28
30 : public QObject
31{
32 Q_OBJECT
33 friend class HttpServer;
34 friend class ::test_HttpRequest;
35
36 private:
37 [[nodiscard]] static int onMessageBegin(http_parser* pParser);
38 [[nodiscard]] static int onMessageComplete(http_parser* pParser);
39 [[nodiscard]] static int onHeadersComplete(http_parser* pParser);
40 [[nodiscard]] static int onHeaderField(http_parser* pParser, const char* const pPos, size_t pLength);
41 [[nodiscard]] static int onHeaderValue(http_parser* pParser, const char* const pPos, size_t pLength);
42 [[nodiscard]] static int onBody(http_parser* pParser, const char* const pPos, size_t pLength);
43 [[nodiscard]] static int onUrl(http_parser* pParser, const char* const pPos, size_t pLength);
44
45 static inline void add(QByteArray& pDest, const char* const pPos, size_t pLength)
46 {
47 pDest += QByteArray(pPos, static_cast<int>(pLength));
48 }
49
50
51 QByteArray mUrl;
52 QMap<QByteArray, QByteArray> mHeader;
53 QByteArray mBody;
54 QPointer<QTcpSocket> mSocket;
55 http_parser mParser;
56 http_parser_settings mParserSettings;
57
58 bool mFinished;
59 QByteArray mCurrentHeaderField;
60 QByteArray mCurrentHeaderValue;
61
62 void insertHeader();
63
64 public:
65 HttpRequest(QTcpSocket* pSocket, QObject* pParent = nullptr);
66 ~HttpRequest() override;
67
68 [[nodiscard]] bool isConnected() const;
69
70 [[nodiscard]] QByteArray getMethod() const;
71 [[nodiscard]] http_method getHttpMethod() const;
72 [[nodiscard]] bool isUpgrade() const;
73 [[nodiscard]] QByteArray getHeader(const QByteArray& pKey) const;
74 [[nodiscard]] const QMap<QByteArray, QByteArray>& getHeader() const;
75 [[nodiscard]] QUrl getUrl() const;
76 [[nodiscard]] const QByteArray& getBody() const;
77 [[nodiscard]] quint16 getPeerPort() const;
78 [[nodiscard]] quint16 getLocalPort() const;
80
81 bool send(const HttpResponse& pResponse);
82 bool send(const QByteArray& pResponse);
83
84 QTcpSocket* take();
85
86 private Q_SLOTS:
87 void onReadyRead();
88
89 Q_SIGNALS:
91 void fireSocketStateChanged(QAbstractSocket::SocketState pSocketState);
92 void fireSocketBuffer(const QByteArray& pBuffer);
93};
94
95} // namespace governikus
Definition: HttpRequest.h:31
void triggerSocketBuffer()
Definition: HttpRequest.cpp:128
QTcpSocket * take()
Definition: HttpRequest.cpp:47
bool isConnected() const
Definition: HttpRequest.cpp:68
void fireMessageComplete(HttpRequest *pSelf)
bool send(const HttpResponse &pResponse)
Definition: HttpRequest.cpp:134
quint16 getPeerPort() const
Definition: HttpRequest.cpp:116
QUrl getUrl() const
Definition: HttpRequest.cpp:104
quint16 getLocalPort() const
Definition: HttpRequest.cpp:122
void fireSocketStateChanged(QAbstractSocket::SocketState pSocketState)
const QMap< QByteArray, QByteArray > & getHeader() const
Definition: HttpRequest.cpp:98
const QByteArray & getBody() const
Definition: HttpRequest.cpp:110
~HttpRequest() override
Definition: HttpRequest.cpp:59
http_method getHttpMethod() const
Definition: HttpRequest.cpp:80
bool isUpgrade() const
Definition: HttpRequest.cpp:86
void fireSocketBuffer(const QByteArray &pBuffer)
QByteArray getMethod() const
Definition: HttpRequest.cpp:74
Definition: HttpResponse.h:17
Definition: HttpServer.h:21
http_method
Definition: http_parser.h:208
Implementation of GeneralAuthenticate response APDUs.
Definition: CommandApdu.h:16
Definition: http_parser.h:328
Definition: http_parser.h:296