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