]> gitweb @ CieloNegro.org - Lucu.git/blobdiff - Network/HTTP/Lucu/Utils.hs
Many changes
[Lucu.git] / Network / HTTP / Lucu / Utils.hs
index ec4b6727f60567613549604a1c0e209d6d2a7727..a488aafbb64161feee9e67404c05f29a065236ec 100644 (file)
@@ -10,6 +10,7 @@ module Network.HTTP.Lucu.Utils
     , joinWith
     , quoteStr
     , parseWWWFormURLEncoded
+    , splitPathInfo
     , show3
     )
     where
@@ -22,6 +23,8 @@ import Data.ByteString (ByteString)
 import qualified Data.ByteString.Char8 as BS
 import Data.List hiding (last)
 import Data.Monoid.Unicode
+import Data.Text (Text)
+import Data.Text.Encoding as T
 import Network.URI
 import Prelude hiding (last)
 import Prelude.Unicode
@@ -89,6 +92,15 @@ parseWWWFormURLEncoded src
       plusToSpace '+' = ' '
       plusToSpace c   = c
 
+-- |> splitPathInfo "http://example.com/foo/bar"
+--  > ==> ["foo", "bar"]
+splitPathInfo ∷ URI → [Text]
+splitPathInfo uri
+    = let reqPathStr = uriPath uri
+          reqPath    = [unEscapeString x | x ← splitBy (≡ '/') reqPathStr, (¬) (null x)]
+      in
+        map (T.decodeUtf8 ∘ BS.pack) reqPath
+
 -- |> show3 5
 --  > ==> "005"
 show3 ∷ Integral n ⇒ n → AsciiBuilder