OSDN Git Service

ソケットの終了処理追加。
[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 <QMutex>
10 #include <QUrl>
11
12 QT_BEGIN_NAMESPACE
13 class QNetworkAccessManager;
14 class QNetworkCookieJar;
15 class QNetworkReply;
16 QT_END_NAMESPACE
17
18 class Settings;
19 class HtmlDocument;
20 class HtmlNode;
21
22 namespace TM
23 {
24
25 class ProxyHandler;
26
27 class ProxyContext : public QObject
28 {
29         Q_OBJECT
30
31 public:
32         ProxyContext(Settings *settings, quint16 http, quint16 socket);
33
34         QNetworkAccessManager* network_access_manager();
35         quint16 http_port() const;
36         quint16 socket_port() const;
37         QString prefix() const;
38         QString jscode() const;
39
40 private:
41         Settings *m_settings;
42
43         QNetworkAccessManager *m_manager;
44         QNetworkCookieJar *m_cookie;
45
46         quint16 m_http_port;
47         quint16 m_socket_port;
48         QString m_prefix;
49         QString m_jscode;
50 };
51
52 class ProxyModule : public HttpModule
53 {
54         Q_OBJECT
55
56 public:
57         ProxyModule(Settings *settings, quint16 http, quint16 socket, QObject *parent);
58         ~ProxyModule();
59
60         virtual HttpHandler* create_handler(QByteArray method, QByteArray url);
61         virtual void destroy_handler(HttpHandler *handler);
62
63 private:
64         QThread *m_thread;
65         ProxyContext *m_context;
66 };
67
68 class ProxyHandler : public HttpHandler
69 {
70         Q_OBJECT
71
72 public:
73         ProxyHandler(ProxyContext *context);
74         ~ProxyHandler();
75
76         virtual int run();
77
78 private slots:
79         void onNetworkReplyFinished();
80
81 private:
82         int redirect();
83         int response();
84
85         Html::pointer sanitize(Html::pointer p);
86         //void sanitize_attribute(Html::pointer p, QString name_);
87         QString create_href(QString href);
88         void create_paragraph(Html::pointer begin_, Html::pointer tail_);
89
90 //      void sanitize_document(HtmlDocument document);
91 //      void sanitize_node(HtmlRange &range, HtmlRange::iterator it);
92 //      void create_paragraph(HtmlRange body);
93
94         QString host() const;
95         QString prefix() const;
96
97 private:
98         ProxyContext *m_context;
99         QNetworkReply *m_reply;
100         QUrl m_targetUrl;
101 };
102
103 } // namespace TM
104
105 #endif // TMHTTP_H