Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- void split_string(std::vector<std::string>* container, const char* data, const char* delim, size_t data_length, size_t delim_length) {
- std::string buffer;
- while (*data) {
- if (memcmp(data, delim, delim_length) == 0) {
- if (buffer.empty() == false) {
- container->push_back(buffer);
- buffer.clear();
- }
- size_t temp = delim_length;
- while (temp-- && *data++);
- } else {
- buffer += *data++;
- }
- }
- if (buffer.empty() == false) {
- container->push_back(buffer);
- }
- }
- void parse_http_request(std::string* head, std::map<std::string,std::string>* args, const char* request, size_t request_len) {
- std::vector<std::string> lines;
- std::vector<std::string> buffer;
- split_string(&lines, request, "\r\n", request_len, 2);
- head->assign(lines[0]);
- lines.erase(lines.begin(), lines.begin()+1);
- for (std::vector<std::string>::iterator itr = lines.begin(); itr != lines.end(); itr++) {
- buffer.clear();
- split_string(&buffer, itr->c_str(), ": ", itr->size(), 2);
- args->insert(std::make_pair(buffer[0],buffer[1]));
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement