#ifndef HTTP_PROXY_H__
#define HTTP_PROXY_H__

#include <sstream>
#include <thread>
#include <boost/asio.hpp>
#include <boost/array.hpp>

#include "HTTPServer.h"

namespace i2p
{
namespace proxy
{
	class HTTPProxyConnection : public i2p::util::HTTPConnection
	{
		public:
			HTTPProxyConnection (boost::asio::ip::tcp::socket * socket): HTTPConnection(socket) { };

		protected:
			void RunRequest();
			void parseHeaders(const std::string& h, std::vector<header>& hm);
			void ExtractRequest(request &m_Request);
	};

	class HTTPProxy : public i2p::util::HTTPServer
	{
		public:
			HTTPProxy (int port): HTTPServer(port) {};

		private:
			void CreateConnection(boost::asio::ip::tcp::socket * m_NewSocket)
			{
				new HTTPProxyConnection(m_NewSocket);
			}
	};
}
}

#endif