@@ -23,6 +23,7 @@ import Control.Concurrent (MVar, readMVar, modifyMVar_, newMVar)
23import Data.Map (Map)
23import Data.Map (Map)
24import qualified Data.Map as M
24import qualified Data.Map as M
26+import Data.Time (UTCTime)
26import qualified Crypto.Hash.MD5 as MD5
27import qualified Crypto.Hash.MD5 as MD5
27import qualified Data.ByteString as B
28import qualified Data.ByteString as B
28import qualified Data.ByteString.Lazy as LB
29import qualified Data.ByteString.Lazy as LB
@@ -34,13 +35,15 @@ import Hakyll.Core.Resource
35data ResourceProvider = ResourceProvider
36data ResourceProvider = ResourceProvider
36 { -- | A list of all resources this provider is able to provide
37 { -- | A list of all resources this provider is able to provide
37− resourceList :: [Resource]
38+ resourceList :: [Resource]
38 , -- | Retrieve a certain resource as string
39 , -- | Retrieve a certain resource as string
39− resourceString :: Resource -> IO String
40+ resourceString :: Resource -> IO String
40 , -- | Retrieve a certain resource as lazy bytestring
41 , -- | 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
42 , -- | Cache keeping track of modified items
45 , -- | Cache keeping track of modified items
43− resourceModifiedCache :: MVar (Map Resource Bool)
46+ resourceModifiedCache :: MVar (Map Resource Bool)
46-- | Create a resource provider
49-- | Create a resource provider
@@ -48,8 +51,9 @@ data ResourceProvider = ResourceProvider
48makeResourceProvider :: [Resource] -- ^ Resource list
51makeResourceProvider :: [Resource] -- ^ Resource list
49 -> (Resource -> IO String) -- ^ String reader
52 -> (Resource -> IO String) -- ^ String reader
50 -> (Resource -> IO LB.ByteString) -- ^ ByteString reader
53 -> (Resource -> IO LB.ByteString) -- ^ ByteString reader
54+ -> (Resource -> IO UTCTime) -- ^ Time checker
51 -> IO ResourceProvider -- ^ Resulting provider
55 -> 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
54-- | Check if a given identifier has a resource
58-- | Check if a given identifier has a resource