/*
- * Copyright 2013 Facebook, Inc.
+ * Copyright 2014 Facebook, Inc.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* limitations under the License.
*/
-#include "folly/Uri.h"
+#include <folly/Uri.h>
#include <ctype.h>
#include <boost/regex.hpp>
} else {
static const boost::regex authorityRegex(
"(?:([^@:]*)(?::([^@]*))?@)?" // username, password
- "(\\[[^\\]]*\\]|[^\\[:]*)" // host (IP-literal, dotted-IPv4, or
- // named host)
+ "(\\[[^\\]]*\\]|[^\\[:]*)" // host (IP-literal (e.g. '['+IPv6+']',
+ // dotted-IPv4, or named host)
"(?::(\\d*))?"); // port
auto authority = authorityAndPathMatch[1];
return result;
}
+fbstring Uri::hostname() const {
+ if (host_.size() > 0 && host_[0] == '[') {
+ // If it starts with '[', then it should end with ']', this is ensured by
+ // regex
+ return host_.substr(1, host_.size() - 2);
+ }
+ return host_;
+}
+
} // namespace folly