]> git.netwichtig.de Git - user/henk/code/inspircd.git/blob - src/modules/httpclient.h
109bfa6660c990a194ab3f5b58b7a83f3656727a
[user/henk/code/inspircd.git] / src / modules / httpclient.h
1 /*       +------------------------------------+\r *       | Inspire Internet Relay Chat Daemon |\r *       +------------------------------------+\r *\r *  InspIRCd: (C) 2002-2007 InspIRCd Development Team\r * See: http://www.inspircd.org/wiki/index.php/Credits\r *\r * This program is free but copyrighted software; see\r *            the file COPYING for details.\r *\r * ---------------------------------------------------\r */\r\r#include "base.h"\r\r#ifndef HTTPCLIENT_H__\r#define HTTPCLIENT_H__\r\r#include <string>\r#include <map>\r\rtypedef std::map<std::string,std::string> HeaderMap;\r\rconst char* HTTP_CLIENT_RESPONSE = "HTTPCLIENT_RESPONSE";\rconst char* HTTP_CLIENT_REQUEST = "HTTPCLIENT_REQUEST";\r\r/** This class represents an outgoing HTTP request\r */\rclass HTTPClientRequest : public Request\r{\r protected:\r std::string url;\r       InspIRCd *Instance;\r    Module *src;\r   HeaderMap Headers;\r public:\r    HTTPClientRequest(InspIRCd *Instance, Module *src, Module* target, const std::string &url)\r             : Request(src, target, HTTP_CLIENT_REQUEST), url(url), Instance(Instance), src(src)\r    {\r              Headers["User-Agent"] = "InspIRCd (m_http_client.so)";\r         Headers["Connection"] = "Close";\r               Headers["Accept"] = "*/*";\r     }\r\r     HTTPClientRequest() : Request(NULL, NULL, HTTP_CLIENT_REQUEST)\r {\r      }\r\r     const std::string &GetURL()\r    {\r              return url;\r    }\r\r     void AddHeader(std::string &header, std::string &data)\r {\r              Headers[header] = data;\r        }\r      \r       void DeleteHeader(std::string &header)\r {\r              Headers.erase(header);\r }\r\r     HeaderMap GetHeaders()\r {\r              return Headers;\r        }\r};\r\rclass HTTPClientResponse : public Request\r{\r protected:\r  friend class HTTPSocket;\r       \r       std::string url;\r       std::string data;\r      int response;\r  std::string responsestr;\r       HeaderMap Headers;\r public:\r    HTTPClientResponse(Module* src, Module* target, std::string &url, int response, std::string responsestr)\r               : Request(src, target, HTTP_CLIENT_RESPONSE), url(url), response(response), responsestr(responsestr)\r   {\r      }\r\r     HTTPClientResponse() : Request(NULL, NULL, HTTP_CLIENT_RESPONSE)\r       {\r      }\r\r     void SetData(const std::string &ndata)\r {\r              data = ndata;\r  }\r      \r       void AddHeader(const std::string &header, const std::string &data)\r     {\r              Headers[header] = data;\r        }\r      \r       const std::string &GetURL()\r    {\r              return url;\r    }\r      \r       const std::string &GetData()\r   {\r              return data;\r   }\r      \r       int GetResponse(std::string &str)\r      {\r              str = responsestr;\r             return response;\r       }\r      \r       std::string GetHeader(const std::string &header)\r       {\r              HeaderMap::iterator i = Headers.find(header);\r          \r               if (i != Headers.end())\r                        return i->second;\r              else\r                   return "";\r     }\r};\r\r#endif\r