diff --git a/cgi.d b/cgi.d index a4d2bb1..66a9be5 100644 --- a/cgi.d +++ b/cgi.d @@ -2408,6 +2408,9 @@ struct Uri { if(idx > 0 && uri[idx] == ':') { scheme = uri[0 .. idx]; idx++; + } else { + // we need to rewind; it found a / but no :, so the whole thing is prolly a path... + idx = 0; } if(idx + 2 < uri.length && uri[idx .. idx + 2] == "//") { @@ -2545,6 +2548,8 @@ struct Uri { unittest { auto uri = Uri("test.html"); assert(uri.path == "test.html"); + uri = Uri("path/1/lol"); + assert(uri.path == "path/1/lol"); uri = Uri("http://me@example.com"); assert(uri.scheme == "http"); assert(uri.userinfo == "me"); diff --git a/http2.d b/http2.d index 8a7d39c..852da5e 100644 --- a/http2.d +++ b/http2.d @@ -365,6 +365,9 @@ struct Uri { if(idx > 0 && uri[idx] == ':') { scheme = uri[0 .. idx]; idx++; + } else { + // we need to rewind; it found a / but no :, so the whole thing is prolly a path... + idx = 0; } if(idx + 2 < uri.length && uri[idx .. idx + 2] == "//") { @@ -1641,7 +1644,13 @@ class HttpApiClient() { if(uri[0] == '/') uri = uri[1 .. $]; +import std.stdio; writeln(uri); +writeln(urlBase); + auto u = Uri(uri).basedOn(Uri(urlBase)); + + writeln(u.toString()); + auto req = httpClient.navigateTo(u, requestMethod); if(oauth2Token.length) @@ -1736,6 +1745,7 @@ class HttpApiClient() { result ~= "="; result ~= encodeComponent(part[1]); } + return result; }