summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
Diffstat (limited to 'Swiften/Network/HTTPConnectProxiedConnection.h')
-rw-r--r--Swiften/Network/HTTPConnectProxiedConnection.h54
1 files changed, 33 insertions, 21 deletions
diff --git a/Swiften/Network/HTTPConnectProxiedConnection.h b/Swiften/Network/HTTPConnectProxiedConnection.h
index c209dc1..a83d47c 100644
--- a/Swiften/Network/HTTPConnectProxiedConnection.h
+++ b/Swiften/Network/HTTPConnectProxiedConnection.h
@@ -5,39 +5,51 @@
*/
/*
- * Copyright (c) 2011-2012 Kevin Smith
- * Licensed under the GNU General Public License v3.
- * See Documentation/Licenses/GPLv3.txt for more information.
+ * Copyright (c) 2011-2018 Isode Limited.
+ * All rights reserved.
+ * See the COPYING file for more information.
*/
#pragma once
+#include <memory>
+
#include <Swiften/Base/API.h>
#include <Swiften/Network/ProxiedConnection.h>
namespace Swift {
- class DomainNameResolver;
- class ConnectionFactory;
- class EventLoop;
- class TimerFactory;
+ class ConnectionFactory;
+ class DomainNameResolver;
+ class HTTPTrafficFilter;
+ class TimerFactory;
+
+ class SWIFTEN_API HTTPConnectProxiedConnection : public ProxiedConnection {
+ public:
+ typedef std::shared_ptr<HTTPConnectProxiedConnection> ref;
+
+ virtual ~HTTPConnectProxiedConnection();
+
+ static ref create(DomainNameResolver* resolver, ConnectionFactory* connectionFactory, TimerFactory* timerFactory, const std::string& proxyHost, unsigned short proxyPort, const SafeString& authID, const SafeString& authPassword) {
+ return ref(new HTTPConnectProxiedConnection(resolver, connectionFactory, timerFactory, proxyHost, proxyPort, authID, authPassword));
+ }
- class SWIFTEN_API HTTPConnectProxiedConnection : public ProxiedConnection {
- public:
- typedef boost::shared_ptr<HTTPConnectProxiedConnection> ref;
+ void setHTTPTrafficFilter(std::shared_ptr<HTTPTrafficFilter> trafficFilter);
- static ref create(DomainNameResolver* resolver, ConnectionFactory* connectionFactory, TimerFactory* timerFactory, const std::string& proxyHost, int proxyPort, const SafeString& authID, const SafeString& authPassword) {
- return ref(new HTTPConnectProxiedConnection(resolver, connectionFactory, timerFactory, proxyHost, proxyPort, authID, authPassword));
- }
+ private:
+ HTTPConnectProxiedConnection(DomainNameResolver* resolver, ConnectionFactory* connectionFactory, TimerFactory* timerFactory, const std::string& proxyHost, unsigned short proxyPort, const SafeString& authID, const SafeString& authPassword);
- private:
- HTTPConnectProxiedConnection(DomainNameResolver* resolver, ConnectionFactory* connectionFactory, TimerFactory* timerFactory, const std::string& proxyHost, int proxyPort, const SafeString& authID, const SafeString& authPassword);
+ virtual void initializeProxy();
+ virtual void handleProxyInitializeData(std::shared_ptr<SafeByteArray> data);
- virtual void initializeProxy();
- virtual void handleProxyInitializeData(boost::shared_ptr<SafeByteArray> data);
+ void sendHTTPRequest(const std::string& statusLine, const std::vector<std::pair<std::string, std::string> >& headerFields);
+ void parseHTTPHeader(const std::string& data, std::string& statusLine, std::vector<std::pair<std::string, std::string> >& headerFields);
- private:
- SafeByteArray authID_;
- SafeByteArray authPassword_;
- };
+ private:
+ SafeByteArray authID_;
+ SafeByteArray authPassword_;
+ std::shared_ptr<HTTPTrafficFilter> trafficFilter_;
+ std::string httpResponseBuffer_;
+ std::vector<std::pair<std::string, std::string> > nextHTTPRequestHeaders_;
+ };
}