X-Git-Url: http://git.cielonegro.org/gitweb.cgi?a=blobdiff_plain;f=Network%2FHTTP%2FLucu%2FStaticFile.hs;h=7d2ff79ac260a843673e40b2064208f5819d42b0;hb=db4a546d0d462cb94639b1f273bf0b78bccc960c;hp=5b5eb9734e3a68441516f36a86ada99269ea7888;hpb=1ead053df6a792edafa9d714c4c038a8a9c3ad16;p=Lucu.git diff --git a/Network/HTTP/Lucu/StaticFile.hs b/Network/HTTP/Lucu/StaticFile.hs index 5b5eb97..7d2ff79 100644 --- a/Network/HTTP/Lucu/StaticFile.hs +++ b/Network/HTTP/Lucu/StaticFile.hs @@ -15,14 +15,15 @@ import Control.Monad.Unicode import Control.Monad.Trans import Data.ByteString (ByteString) import qualified Data.ByteString.Lazy.Char8 as LBS +import Data.Convertible.Base +import Data.Convertible.Instances.Text () +import Data.Monoid.Unicode import Data.String -import qualified Data.Text as T import qualified Data.Text.Encoding as T import Network.HTTP.Lucu.Abortion import Network.HTTP.Lucu.Config -import Network.HTTP.Lucu.MIMEType hiding (mimeType) +import Network.HTTP.Lucu.MIMEType import Network.HTTP.Lucu.MIMEType.Guess -import Network.HTTP.Lucu.MIMEType.TH import Network.HTTP.Lucu.Resource import Network.HTTP.Lucu.Resource.Internal import Network.HTTP.Lucu.Response @@ -35,7 +36,7 @@ import System.FilePath -- @fpath@ on the filesystem. staticFile ∷ FilePath → Resource staticFile path - = emptyResource { + = (∅) { resGet = Just $ handleStaticFile True path , resHead = Just $ handleStaticFile False path } @@ -71,18 +72,18 @@ handleStaticFile sendContent path $ liftIO (LBS.readFile path) ≫= putChunks -- | @'staticDir' dir@ is a 'Resource' which maps all files in @dir@ --- and its subdirectories on the filesystem to the --- 'Network.HTTP.Lucu.Resource.Tree.ResTree'. +-- and its subdirectories on the filesystem to the resource tree. Thus +-- having 'Network.HTTP.Lucu.nonGreedy' 'staticDir' in a tree makes no +-- sense. -- -- Note that 'staticDir' currently doesn't have a directory-listing -- capability. Requesting the content of a directory will end up being -- replied with /403 Forbidden/. staticDir ∷ FilePath → Resource staticDir path - = emptyResource { - resIsGreedy = True - , resGet = Just $ handleStaticDir True path - , resHead = Just $ handleStaticDir False path + = (∅) { + resGet = Just $ handleStaticDir True path + , resHead = Just $ handleStaticDir False path } -- TODO: implement directory listing. @@ -94,7 +95,7 @@ handleStaticDir sendContent basePath handleStaticFile sendContent path where dec8 ∷ ByteString → String - dec8 = T.unpack ∘ T.decodeUtf8 + dec8 = cs ∘ T.decodeUtf8 securityCheck ∷ (Eq s, Show s, IsString s, Monad m) ⇒ [s] → m () securityCheck pathElems