]> git.tdb.fi Git - libs/net.git/blobdiff - source/http/request.cpp
Use string::size_type to store string offsets
[libs/net.git] / source / http / request.cpp
index c948755ae78281cb1c36378de491a1cd0c948cd7..54b0beeaa9cb4f7e908f995a2d0d328bc1bf91a0 100644 (file)
@@ -1,4 +1,4 @@
-#include <msp/strings/formatter.h>
+#include <msp/strings/format.h>
 #include <msp/strings/regex.h>
 #include <msp/strings/utils.h>
 #include "request.h"
@@ -12,7 +12,10 @@ namespace Http {
 Request::Request(const string &m, const string &p):
        method(m),
        path(p)
-{ }
+{
+       if(path.find(' ')!=string::npos)
+               throw invalid_argument("Request::Request");
+}
 
 string Request::str() const
 {
@@ -24,7 +27,7 @@ string Request::str() const
 
 Request Request::parse(const string &str)
 {
-       unsigned lf = str.find('\n');
+       string::size_type lf = str.find('\n');
        vector<string> parts = split(str.substr(0, lf-(str[lf-1]=='\r')), ' ', 2);
        if(parts.size()<3)
                throw invalid_argument("Request::parse");
@@ -45,7 +48,7 @@ Request Request::from_url(const string &str)
        if(url.scheme!="http")
                throw invalid_argument("Request::from_url");
 
-       string path = url.path;
+       string path = urlencode(url.path);
        if(path.empty())
                path = "/";
        if(!url.query.empty())