AusweisApp2
HttpRequest.h
gehe zur Dokumentation dieser Datei
1 
7 #pragma once
8 
9 #include "HttpResponse.h"
10 
11 #include <http_parser.h>
12 #include <QByteArray>
13 #include <QMap>
14 #include <QObject>
15 #include <QScopedPointer>
16 #include <QTcpSocket>
17 #include <QUrl>
18 
19 class test_WebserviceActivationHandler;
20 class test_WebserviceActivationContext;
21 
22 namespace governikus
23 {
24 
26  : public QObject
27 {
28  Q_OBJECT
29 
30  private:
31  friend class ::test_WebserviceActivationHandler;
32  friend class ::test_WebserviceActivationContext;
33  friend class HttpServer;
34 
35  static int onMessageBegin(http_parser* pParser);
36  static int onMessageComplete(http_parser* pParser);
37  static int onHeadersComplete(http_parser* pParser);
38  static int onHeaderField(http_parser* pParser, const char* const pPos, size_t pLength);
39  static int onHeaderValue(http_parser* pParser, const char* const pPos, size_t pLength);
40  static int onBody(http_parser* pParser, const char* const pPos, size_t pLength);
41  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  QScopedPointer<QTcpSocket, QScopedPointerDeleteLater> mSocket;
53  http_parser mParser;
54  http_parser_settings mParserSettings;
55 
56  bool mSocketDisconnected;
57  bool mFinished;
58  QByteArray mCurrentHeaderField;
59  QByteArray mCurrentHeaderValue;
60 
61  void insertHeader();
62 
63  public:
64  HttpRequest(QTcpSocket* pSocket, QObject* pParent = nullptr);
65  virtual ~HttpRequest();
66 
67  bool isConnected() const;
68 
69  QByteArray getMethod() const;
70  bool isUpgrade() const;
71  QByteArray getHeader(const QByteArray& pKey) const;
72  const QMap<QByteArray, QByteArray>& getHeader() const;
73  QUrl getUrl() const;
74  const QByteArray& getBody() const;
75 
76  bool send(const HttpResponse& pResponse);
77 
78  QTcpSocket* take();
79 
80  private Q_SLOTS:
81  void onReadyRead();
82  void onSocketDisconnected();
83 
84  Q_SIGNALS:
86 };
87 
88 } // namespace governikus
Definition: HttpRequest.h:27
QTcpSocket * take()
Definition: HttpRequest.cpp:48
bool isConnected() const
Definition: HttpRequest.cpp:72
void fireMessageComplete(HttpRequest *pSelf)
bool send(const HttpResponse &pResponse)
Definition: HttpRequest.cpp:114
HttpRequest(QTcpSocket *pSocket, QObject *pParent=nullptr)
Definition: HttpRequest.cpp:15
QUrl getUrl() const
Definition: HttpRequest.cpp:102
const QMap< QByteArray, QByteArray > & getHeader() const
Definition: HttpRequest.cpp:96
const QByteArray & getBody() const
Definition: HttpRequest.cpp:108
bool isUpgrade() const
Definition: HttpRequest.cpp:84
virtual ~HttpRequest()
Definition: HttpRequest.cpp:63
QByteArray getMethod() const
Definition: HttpRequest.cpp:78
Definition: HttpResponse.h:17
Definition: HttpServer.h:22
Implementation of ActivationContext for Intent based activation on Android systems.
Definition: ActivationContext.h:15
Definition: http_parser.h:324
Definition: http_parser.h:293