--- /dev/null
+import { URISchemeHandler, URIComponents, URIOptions } from "../uri";
+
+const handler:URISchemeHandler = {
+ scheme : "http",
+
+ domainHost : true,
+
+ parse : function (components:URIComponents, options:URIOptions):URIComponents {
+ //report missing host
+ if (!components.host) {
+ components.error = components.error || "HTTP URIs must have a host.";
+ }
+
+ return components;
+ },
+
+ serialize : function (components:URIComponents, options:URIOptions):URIComponents {
+ //normalize the default port
+ if (components.port === (String(components.scheme).toLowerCase() !== "https" ? 80 : 443) || components.port === "") {
+ components.port = undefined;
+ }
+
+ //normalize the empty path
+ if (!components.path) {
+ components.path = "/";
+ }
+
+ //NOTE: We do not parse query strings for HTTP URIs
+ //as WWW Form Url Encoded query strings are part of the HTML4+ spec,
+ //and not the HTTP spec.
+
+ return components;
+ }
+};
+
+export default handler;
\ No newline at end of file