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 
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:
85  void fireMessageComplete(HttpRequest* pSelf);
86 };
87 
88 } // namespace governikus
http_parser_settings::on_message_begin
http_cb on_message_begin
Definition: http_parser.h:325
http_parser_settings::on_message_complete
http_cb on_message_complete
Definition: http_parser.h:332
http_method_str
const char * http_method_str(enum http_method m)
Definition: http_parser.cpp:2131
http_parser_settings::on_header_field
http_data_cb on_header_field
Definition: http_parser.h:328
governikus::HttpRequest::getMethod
QByteArray getMethod() const
Definition: HttpRequest.cpp:78
http_parser
Definition: http_parser.h:293
HttpRequest.h
http_parser::http_errno
unsigned int http_errno
Definition: http_parser.h:310
http_parser_settings::on_headers_complete
http_cb on_headers_complete
Definition: http_parser.h:330
governikus::HttpServer
Definition: HttpServer.h:22
governikus::HttpRequest::send
bool send(const HttpResponse &pResponse)
Definition: HttpRequest.cpp:114
governikus::HttpRequest::isUpgrade
bool isUpgrade() const
Definition: HttpRequest.cpp:84
test_WebserviceActivationContext
Definition: test_WebserviceActivationContext.cpp:20
governikus::HttpRequest::getBody
const QByteArray & getBody() const
Definition: HttpRequest.cpp:108
http_parser_settings::on_body
http_data_cb on_body
Definition: http_parser.h:331
http_errno
http_errno
Definition: http_parser.h:283
http_errno_name
const char * http_errno_name(enum http_errno err)
Definition: http_parser.cpp:2165
governikus::HttpRequest
Definition: HttpRequest.h:27
http_parser_settings
Definition: http_parser.h:324
http_errno_description
const char * http_errno_description(enum http_errno err)
Definition: http_parser.cpp:2171
http_parser_settings::on_url
http_data_cb on_url
Definition: http_parser.h:326
test_WebserviceActivationHandler
Definition: test_WebserviceActivationHandler.cpp:21
CAST_OBJ
#define CAST_OBJ(parser)
Definition: HttpRequest.cpp:13
http_parser.h
governikus
Implementation of ActivationContext for Intent based activation on Android systems.
Definition: ActivationContext.h:15
governikus::HttpRequest::~HttpRequest
virtual ~HttpRequest()
Definition: HttpRequest.cpp:63
governikus::HttpRequest::fireMessageComplete
void fireMessageComplete(HttpRequest *pSelf)
Definition: moc_HttpRequest.cpp:155
governikus::HttpRequest::getUrl
QUrl getUrl() const
Definition: HttpRequest.cpp:102
http_parser_settings::on_header_value
http_data_cb on_header_value
Definition: http_parser.h:329
HttpResponse.h
http_parser::data
void * data
Definition: http_parser.h:320
http_parser::upgrade
unsigned int upgrade
Definition: http_parser.h:317
governikus::HttpRequest::getHeader
const QMap< QByteArray, QByteArray > & getHeader() const
Definition: HttpRequest.cpp:96
governikus::HttpResponse::getMessage
QByteArray getMessage() const
Definition: HttpResponse.cpp:108
http_parser_init
void http_parser_init(http_parser *parser, enum http_parser_type t)
Definition: http_parser.cpp:2148
governikus::HttpRequest::HttpRequest
HttpRequest(QTcpSocket *pSocket, QObject *pParent=nullptr)
Definition: HttpRequest.cpp:15
governikus::HttpRequest::take
QTcpSocket * take()
Definition: HttpRequest.cpp:48
http_parser::method
unsigned int method
Definition: http_parser.h:309
http_parser_execute
size_t http_parser_execute(http_parser *parser, const http_parser_settings *settings, const char *data, size_t len)
Definition: http_parser.cpp:638
HTTP_REQUEST
@ HTTP_REQUEST
Definition: http_parser.h:215
governikus::HttpRequest::isConnected
bool isConnected() const
Definition: HttpRequest.cpp:72
governikus::HttpResponse
Definition: HttpResponse.h:17
http_method
http_method
Definition: http_parser.h:208