summaryrefslogtreecommitdiff
path: root/src/Hakyll/Core/ResourceProvider.hs
diff options
context:
space:
mode:
Diffstat (limited to 'src/Hakyll/Core/ResourceProvider.hs')
-rw-r--r--src/Hakyll/Core/ResourceProvider.hs46
1 files changed, 46 insertions, 0 deletions
diff --git a/src/Hakyll/Core/ResourceProvider.hs b/src/Hakyll/Core/ResourceProvider.hs
new file mode 100644
index 0000000..f18d462
--- /dev/null
+++ b/src/Hakyll/Core/ResourceProvider.hs
@@ -0,0 +1,46 @@
+--------------------------------------------------------------------------------
+-- | This module provides an wrapper API around the file system which does some
+-- caching.
+module Hakyll.Core.ResourceProvider
+ ( -- * Constructing resource providers
+ ResourceProvider
+ , newResourceProvider
+
+ -- * Querying resource properties
+ , resourceList
+ , resourceExists
+ , resourceModified
+ , resourceModificationTime
+
+ -- * Access to raw resource content
+ , resourceString
+ , resourceLBS
+
+ -- * Access to metadata and body content
+ , resourceMetadata
+ , resourceBody
+ ) where
+
+
+--------------------------------------------------------------------------------
+import Hakyll.Core.Identifier
+import Hakyll.Core.Metadata
+import Hakyll.Core.ResourceProvider.Internal
+import qualified Hakyll.Core.ResourceProvider.MetadataCache as Internal
+import Hakyll.Core.ResourceProvider.Modified
+
+
+--------------------------------------------------------------------------------
+-- | Wrapper to ensure metadata cache is invalidated if necessary
+resourceMetadata :: ResourceProvider -> Identifier a -> IO Metadata
+resourceMetadata rp r = do
+ _ <- resourceModified rp r
+ Internal.resourceMetadata rp r
+
+
+--------------------------------------------------------------------------------
+-- | Wrapper to ensure metadata cache is invalidated if necessary
+resourceBody :: ResourceProvider -> Identifier a -> IO String
+resourceBody rp r = do
+ _ <- resourceModified rp r
+ Internal.resourceBody rp r