diff options
| author | Tom Smeding <tom@tomsmeding.com> | 2026-05-08 19:26:10 +0200 |
|---|---|---|
| committer | Tom Smeding <tom@tomsmeding.com> | 2026-05-08 19:26:10 +0200 |
| commit | 30d4ca02ea147089af994ea7d5f7941a4bbe94a7 (patch) | |
| tree | 9fd9086c74976f7851a7622756a20dcb6af91e18 /mini-http/Network/HTTP/Server/Mini/URI.hs | |
| parent | ba9d7504080fb4e9adfb2d33290190e06d2f8773 (diff) | |
Rename mini-http to mini-http-server
And move Parser to Internal.Parser for test suite
Diffstat (limited to 'mini-http/Network/HTTP/Server/Mini/URI.hs')
| -rw-r--r-- | mini-http/Network/HTTP/Server/Mini/URI.hs | 44 |
1 files changed, 0 insertions, 44 deletions
diff --git a/mini-http/Network/HTTP/Server/Mini/URI.hs b/mini-http/Network/HTTP/Server/Mini/URI.hs deleted file mode 100644 index 13d7c35..0000000 --- a/mini-http/Network/HTTP/Server/Mini/URI.hs +++ /dev/null @@ -1,44 +0,0 @@ -{-# LANGUAGE ViewPatterns #-} -module Network.HTTP.Server.Mini.URI where - -import Data.ByteString (ByteString) -import Data.ByteString qualified as BS - -import Network.HTTP.Server.Mini.Util - - --- | (path components, query string) --- --- TODO: percent-decode -parseURI :: ByteString -> ([ByteString], [(ByteString, ByteString)]) -parseURI = \bs -> - case BS.uncons bs of - Just ((== ord8 '/') -> True, bs1) -> goPath id bs1 - _ -> ([], []) - where - goPath f bs - | BS.null bs = (f [], []) - | otherwise = - let (comp, bs1) = BS.span (\c -> c /= ord8 '/' && c /= ord8 '?') bs - in case BS.uncons bs1 of - Just ((== ord8 '/') -> True, bs2) -> - goPath (f . (comp:)) bs2 - Just ((== ord8 '?') -> True, bs2) -> - (f [comp], goQuery bs2) - _ -> (f [comp], []) - - goQuery bs - | BS.null bs = [] - | Just ((== ord8 '&') -> True, bs1) <- BS.uncons bs = goQuery bs1 - | otherwise = - let (key, bs1) = BS.span (\c -> c /= ord8 '=' && c /= ord8 '&') bs - in case BS.uncons bs1 of - Just ((== ord8 '=') -> True, bs2) -> - let (val, bs3) = BS.span (\c -> c /= ord8 '&') bs2 - in case BS.uncons bs3 of - Just (_, bs4) -> (key, val) : goQuery bs4 - Nothing -> [(key, val)] - Just ((== ord8 '&') -> True, bs2) -> - (key, BS.empty) : goQuery bs2 - _ -> - [(key, BS.empty)] |
