Partially finished HTTP stuff
This commit is contained in:
@@ -0,0 +1,26 @@
|
|||||||
|
|
||||||
|
#include "wrap-sstream.hpp"
|
||||||
|
#include "wrap-string.hpp"
|
||||||
|
|
||||||
|
static eng::string url_encode(const eng::string &value) {
|
||||||
|
eng::ostringstream escaped;
|
||||||
|
escaped.fill('0');
|
||||||
|
escaped << hex;
|
||||||
|
|
||||||
|
for (int i = 0; i < int(value.size()); i++) {
|
||||||
|
char c = value[i];
|
||||||
|
|
||||||
|
// Keep alphanumeric and other accepted characters intact
|
||||||
|
// Any other characters are percent-encoded
|
||||||
|
if (std::isalnum(c) || c == '-' || c == '_' || c == '.' || c == '~') {
|
||||||
|
escaped << c;
|
||||||
|
} else {
|
||||||
|
escaped << std::uppercase;
|
||||||
|
escaped << '%' << std::setw(2) << int((unsigned char) c);
|
||||||
|
escaped << std::nouppercase;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return escaped.str();
|
||||||
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -0,0 +1,41 @@
|
|||||||
|
/////////////////////////////////////////////////////////
|
||||||
|
//
|
||||||
|
// HTTP Implementation.
|
||||||
|
//
|
||||||
|
// This is a fairly limited implementation of HTTP.
|
||||||
|
//
|
||||||
|
// It only supports HTTP 1.1
|
||||||
|
//
|
||||||
|
// It only supports GET, POST, and HEAD.
|
||||||
|
//
|
||||||
|
/////////////////////////////////////////////////////////
|
||||||
|
|
||||||
|
#ifndef HTTP_HPP
|
||||||
|
#define HTTP_HPP
|
||||||
|
|
||||||
|
#include "eng-malloc.hpp"
|
||||||
|
#include "wrap-string.hpp"
|
||||||
|
#include "wrap-vector.hpp"
|
||||||
|
#include "luastack.hpp"
|
||||||
|
|
||||||
|
class HttpRequest : public eng::nevernew {
|
||||||
|
public:
|
||||||
|
enum Method { INVALID, GET, POST, HEAD };
|
||||||
|
|
||||||
|
public:
|
||||||
|
eng::string host_;
|
||||||
|
int port_;
|
||||||
|
Method method_;
|
||||||
|
eng::string encoded_url_;
|
||||||
|
eng::string content_type_;
|
||||||
|
};
|
||||||
|
|
||||||
|
class HttpReply : public eng::nevernew {
|
||||||
|
public:
|
||||||
|
int error_code_;
|
||||||
|
eng::string error_message_;
|
||||||
|
eng::string mime_type_;
|
||||||
|
eng::string content_;
|
||||||
|
};
|
||||||
|
|
||||||
|
#endif // HTTP_HPP
|
||||||
|
|||||||
Reference in New Issue
Block a user