+#include "request.h"
#include <msp/strings/format.h>
#include <msp/strings/regex.h>
#include <msp/strings/utils.h>
-#include "request.h"
#include "utils.h"
using namespace std;
Request Request::parse(const string &str)
{
- unsigned lf = str.find('\n');
+ string::size_type lf = str.find('\n');
+ if(lf==0)
+ throw invalid_argument("Request::parse");
vector<string> parts = split(str.substr(0, lf-(str[lf-1]=='\r')), ' ', 2);
if(parts.size()<3)
throw invalid_argument("Request::parse");
string path = urlencode(url.path);
if(path.empty())
path = "/";
- if(!url.query.empty())
- {
- path += '?';
- path += url.query;
- }
+ append(path, "?", url.query);
Request result("GET", path);
result.set_header("Host", url.host);