]> git.tdb.fi Git - libs/net.git/blobdiff - source/http/version.cpp
Prepare for assimilation into mspnet
[libs/net.git] / source / http / version.cpp
diff --git a/source/http/version.cpp b/source/http/version.cpp
new file mode 100644 (file)
index 0000000..f22b46e
--- /dev/null
@@ -0,0 +1,25 @@
+#include <msp/strings/formatter.h>
+#include <msp/strings/lexicalcast.h>
+#include <msp/strings/regex.h>
+#include "version.h"
+
+using namespace std;
+
+namespace Msp {
+namespace Http {
+
+Version parse_version(const std::string &ver)
+{
+       if(RegMatch match = Regex("^HTTP/([0-9]+).([0-9]+)$").match(ver))
+               return lexical_cast<unsigned>(match[1].str)<<4 | lexical_cast<unsigned>(match[2].str);
+       else
+               throw invalid_argument("parse_version");
+}
+
+string version_str(Version ver)
+{
+       return format("HTTP/%u.%u", (ver>>4)&0xF, ver&0xF);
+}
+
+} // namespace Http
+} // namespace Msp