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