OSDN Git Service

Initial commit
[wordring-tm/wordring-tm.git] / proxy / tmhttp.h
1 #ifndef TMHTTP_H
2 #define TMHTTP_H
3
4 #include "httphandler.h"
5 #include "html.h"
6
7 #include <QObject>
8 #include <QThread>
9 #include <QUrl>
10
11 QT_BEGIN_NAMESPACE
12 class QNetworkAccessManager;
13 class QNetworkCookieJar;
14 class QNetworkReply;
15 QT_END_NAMESPACE
16
17 class HtmlDocument;
18 class HtmlNode;
19
20 namespace TM
21 {
22
23 class ProxyHandler;
24
25 class ProxyContext : public QObject
26 {
27         Q_OBJECT
28         friend class ProxyHandler;
29
30 public:
31         ProxyContext(QString prefix, quint16 http, quint16 socket);
32
33 private:
34         QNetworkAccessManager *m_manager;
35         QNetworkCookieJar *m_cookie;
36
37         QString m_prefix;
38         quint16 m_http;
39         quint16 m_socket;
40 };
41
42 class ProxyModule : public HttpModule
43 {
44         Q_OBJECT
45
46 public:
47         ProxyModule(QString prefix, quint16 http, quint16 socket, QObject *parent);
48         ~ProxyModule();
49
50         virtual HttpHandler* create_handler(QByteArray method, QByteArray url);
51         virtual void destroy_handler(HttpHandler *handler);
52
53 private:
54         QThread *m_thread;
55         ProxyContext *m_context;
56
57         QString m_prefix;
58         quint16 m_http;
59 };
60
61 class ProxyHandler : public HttpHandler
62 {
63         Q_OBJECT
64
65 public:
66         ProxyHandler(ProxyContext *context);
67         ~ProxyHandler();
68
69         virtual int run();
70
71 private slots:
72         void onNetworkReplyFinished();
73
74 private:
75         int redirect();
76         int response();
77
78         Html::pointer sanitize(Html::pointer p);
79         //void sanitize_attribute(Html::pointer p, QString name_);
80         QString create_href(QString href);
81         void create_paragraph(Html::pointer begin_, Html::pointer tail_);
82
83 //      void sanitize_document(HtmlDocument document);
84 //      void sanitize_node(HtmlRange &range, HtmlRange::iterator it);
85 //      void create_paragraph(HtmlRange body);
86
87         QString host() const;
88         QString prefix() const;
89
90 private:
91         ProxyContext *m_context;
92         QNetworkReply *m_reply;
93         QUrl m_targetUrl;
94 };
95
96 } // namespace TM
97
98 #endif // TMHTTP_H