This is a simple wrapper for elm/url that allows to deal with custom protocols, next to http and https.
It does not take into account the different standards for file, ftp, etc, it simply allows to define different
protocols, while still relying on the elm/url parsing methods.
This is actually only an replacement for the Url.Url type, the only difference is the internal usage of a separate Protocol type.
This is a shortcut for fromStringWithProtocol, which uses only use the ftp and file protocol.
If you want to define your own custom protocols for internal routing use fromStringWithProtocol.
fromString "file:///home/user/example.png"
--> Just { fragment = Nothing, host = "", path = "/home/user/example.png", port_ = Nothing, protocol = FILE, query = Nothing }
fromString "file://C:/home/user/example.png"
--> Just { fragment = Nothing, host = "C:", path = "/home/user/example.png", port_ = Nothing, protocol = FILE, query = Nothing }
fromString "ftp://internet.address.edu/path/file.gz"
--> Just { fragment = Nothing, host = "internet.address.edu", path = "/path/file.gz", port_ = Nothing, protocol = FTP, query = Nothing }Use this, if you want to use more protocols, such as ipfs, dweb, or something custom
fromStringWithProtocol
["ipfs", "custom"]
"ipfs://bafybeiemxf5abjwjbikoz4mc3a3dla6ual3jsgpdr4cjr3oz3evfyavhwq/wiki/Vincent_van_Gogh.html"
--> Just { fragment = Nothing, host = "bafybeiemxf5abjwjbikoz4mc3a3dla6ual3jsgpdr4cjr3oz3evfyavhwq", path = "/wiki/Vincent_van_Gogh.html", port_ = Nothing, protocol = CUSTOM "ipfs", query = Nothing }
fromStringWithProtocol
["ipfs", "custom"]
"custom://RouteTo/http://example.com"
--> Just { fragment = Nothing, host = "RouteTo", path = "/http://example.com", port_ = Nothing, protocol = CUSTOM "custom", query = Nothing }Use this to turn your Url back into a string:
{ fragment = Nothing
, host = "bafybeiemxf5abjwjbikoz4mc3a3dla6ual3jsgpdr4cjr3oz3evfyavhwq"
, path = "/wiki/Vincent_van_Gogh.html"
, port_ = Nothing
, protocol = CUSTOM "ipfs"
, query = Nothing
}
|> toString
--> "ipfs://bafybeiemxf5abjwjbikoz4mc3a3dla6ual3jsgpdr4cjr3oz3evfyavhwq/wiki/Vincent_van_Gogh.html"Use this function to wrap your custom protocol into Url.Http, so that you can run your parsers from the Url.Parser module.
To don't interfere with the original
Url.Protocoltype, this type is defined in uppercase.