@@ -23,6 +23,7 @@ import Control.Concurrent (MVar, readMVar, modifyMVar_, newMVar)
2323import Data.Map (Map)
2424import qualified Data.Map as M
2525
26+import Data.Time (UTCTime)
2627import qualified Crypto.Hash.MD5 as MD5
2728import qualified Data.ByteString as B
2829import qualified Data.ByteString.Lazy as LB
@@ -34,13 +35,15 @@ import Hakyll.Core.Resource
3435--
3536data ResourceProvider = ResourceProvider
3637 { -- | A list of all resources this provider is able to provide
37− resourceList :: [Resource]
38+ resourceList :: [Resource]
3839 , -- | Retrieve a certain resource as string
39− resourceString :: Resource -> IO String
40+ resourceString :: Resource -> IO String
4041 , -- | Retrieve a certain resource as lazy bytestring
41− resourceLBS :: Resource -> IO LB.ByteString
42+ resourceLBS :: Resource -> IO LB.ByteString
43+ , -- | Check when a resource was last modified
44+ resourceModificationTime :: Resource -> IO UTCTime
4245 , -- | Cache keeping track of modified items
43− resourceModifiedCache :: MVar (Map Resource Bool)
46+ resourceModifiedCache :: MVar (Map Resource Bool)
4447 }
4548
4649-- | Create a resource provider
@@ -48,8 +51,9 @@ data ResourceProvider = ResourceProvider
4851makeResourceProvider :: [Resource] -- ^ Resource list
4952 -> (Resource -> IO String) -- ^ String reader
5053 -> (Resource -> IO LB.ByteString) -- ^ ByteString reader
54+ -> (Resource -> IO UTCTime) -- ^ Time checker
5155 -> IO ResourceProvider -- ^ Resulting provider
52−makeResourceProvider l s b = ResourceProvider l s b <$> newMVar M.empty
56+makeResourceProvider l s b t = ResourceProvider l s b t <$> newMVar M.empty
5357
5458-- | Check if a given identifier has a resource
5559--