mirror of https://github.com/PurpleI2P/i2pd.git
EinMByte
9 years ago
6 changed files with 138 additions and 0 deletions
@ -0,0 +1,60 @@
@@ -0,0 +1,60 @@
|
||||
#include "HTTP.h" |
||||
#include <boost/algorithm/string.hpp> |
||||
#include <sstream> |
||||
|
||||
namespace i2p { |
||||
namespace util { |
||||
namespace http { |
||||
|
||||
void Request::parseRequestLine(const std::string& line) |
||||
{ |
||||
std::stringstream ss(line); |
||||
ss >> method; |
||||
ss >> uri; |
||||
} |
||||
|
||||
void Request::parseHeaderLine(const std::string& line) |
||||
{ |
||||
const std::size_t pos = line.find_first_of(':'); |
||||
headers[boost::trim_copy(line.substr(0, pos))] = boost::trim_copy(line.substr(pos + 1)); |
||||
} |
||||
|
||||
Request::Request(const std::string& data) |
||||
{ |
||||
std::stringstream ss(data); |
||||
std::string line; |
||||
std::getline(ss, line); |
||||
parseRequestLine(line); |
||||
|
||||
while(std::getline(ss, line)) |
||||
parseHeaderLine(line); |
||||
} |
||||
|
||||
std::string Request::getMethod() const |
||||
{ |
||||
return method; |
||||
} |
||||
|
||||
std::string Request::getUri() const |
||||
{ |
||||
return uri; |
||||
} |
||||
|
||||
std::string Request::getHost() const |
||||
{ |
||||
return host; |
||||
} |
||||
|
||||
int Request::getPort() const |
||||
{ |
||||
return port; |
||||
} |
||||
|
||||
std::string Request::getHeader(const std::string& name) const |
||||
{ |
||||
return headers.at(name); |
||||
} |
||||
|
||||
} |
||||
} |
||||
} |
@ -0,0 +1,42 @@
@@ -0,0 +1,42 @@
|
||||
#ifndef _HTTP_H__ |
||||
#define _HTTP_H__ |
||||
|
||||
#include <string> |
||||
#include <map> |
||||
|
||||
namespace i2p { |
||||
namespace util { |
||||
namespace http { |
||||
|
||||
class Request { |
||||
void parseRequestLine(const std::string& line); |
||||
void parseHeaderLine(const std::string& line); |
||||
public: |
||||
Request(const std::string& data); |
||||
|
||||
std::string getMethod() const; |
||||
|
||||
std::string getUri() const; |
||||
|
||||
std::string getHost() const; |
||||
|
||||
int getPort() const; |
||||
|
||||
/**
|
||||
* @throw std::out_of_range if no such header exists |
||||
*/ |
||||
std::string getHeader(const std::string& name) const; |
||||
|
||||
private: |
||||
std::string method; |
||||
std::string uri; |
||||
std::string host; |
||||
int port; |
||||
std::map<std::string, std::string> headers; |
||||
}; |
||||
|
||||
} |
||||
} |
||||
} |
||||
|
||||
#endif // _HTTP_H__
|
Loading…
Reference in new issue