web-routes-0.27.6: Library for maintaining correctness and composability of URLs within an application.

Portabilityportable
Stabilityexperimental
Maintainerpartners@seereason.com
Safe HaskellNone

Web.Routes.Base

Description

Conversions between raw pathinfos and decoded path segments.

Synopsis

Documentation

encodePathInfo :: [Text] -> [(Text, Maybe Text)] -> TextSource

Encodes a list of path segments into a valid URL fragment.

This function takes the following three steps:

  • UTF-8 encodes the characters.
  • Performs percent encoding on all unreserved characters, as well as :@=+$,
  • Intercalates with a slash.

For example:

 encodePathInfo [\"foo\", \"bar\", \"baz\"]

"foo/bar/baz"

 encodePathInfo [\"foo bar\", \"baz\/bin\"]

"foo%20bar/baz%2Fbin"

 encodePathInfo [\"שלום\"]

"%D7%A9%D7%9C%D7%95%D7%9D"

decodePathInfo :: ByteString -> [Text]Source

Performs the inverse operation of encodePathInfo.

In particular, this function:

  • Splits a string at each occurence of a forward slash.
  • Percent-decodes the individual pieces.
  • UTF-8 decodes the resulting data.

This utilizes decodeString from the utf8-string library, and thus all UTF-8 decoding errors are handled as per that library.

In general, you will want to strip the leading slash from a pathinfo before passing it to this function. For example:

 decodePathInfo \"\"

[]

 decodePathInfo \"\/\"
""

Note that while function accepts a Text value, it is expected that Text will only contain the subset of characters which are allowed to appear in a URL.