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();
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user