on master help sign in
Send user agent in ./site check
f4f8375Jasper Van der Jeugt
src/Hakyll/Check.hs+12−3
@@ -16,11 +16,12 @@ import Control.Monad.RWS (RWST, runRWST)
16import Control.Monad.State (get, modify)
16import Control.Monad.State (get, modify)
17import Control.Monad.Trans (liftIO)
17import Control.Monad.Trans (liftIO)
18import Control.Monad.Writer (tell)
18import Control.Monad.Writer (tell)
19−import Data.List (isPrefixOf)
19+import Data.List (intercalate, isPrefixOf)
20import Data.Monoid (Monoid (..))
20import Data.Monoid (Monoid (..))
21import Data.Set (Set)
21import Data.Set (Set)
22import qualified Data.Set as S
22import qualified Data.Set as S
23import Data.Typeable (cast)
23import Data.Typeable (cast)
24+import GHC.Exts (fromString)
24import qualified Network.HTTP.Conduit as Http
25import qualified Network.HTTP.Conduit as Http
25import qualified Network.HTTP.Types as Http
26import qualified Network.HTTP.Types as Http
26import System.Directory (doesDirectoryExist, doesFileExist)
27import System.Directory (doesDirectoryExist, doesFileExist)
@@ -30,11 +31,13 @@ import qualified Text.HTML.TagSoup as TS
30
31
31
32
32--------------------------------------------------------------------------------
33--------------------------------------------------------------------------------
34+import Data.Version (versionBranch)
33import Hakyll.Core.Configuration
35import Hakyll.Core.Configuration
34import Hakyll.Core.Logger (Logger, Verbosity)
36import Hakyll.Core.Logger (Logger, Verbosity)
35import qualified Hakyll.Core.Logger as Logger
37import qualified Hakyll.Core.Logger as Logger
36import Hakyll.Core.Util.File
38import Hakyll.Core.Util.File
37import Hakyll.Web.Html
39import Hakyll.Web.Html
40+import qualified Paths_hakyll as Paths_hakyll
38
41
39
42
40--------------------------------------------------------------------------------
43--------------------------------------------------------------------------------
@@ -172,11 +175,17 @@ checkExternalUrl url = do
172 modify $ S.insert url
175 modify $ S.insert url
173 if isOk then ok url else faulty url
176 if isOk then ok url else faulty url
174 where
177 where
178+ -- Add additional request info
175 settings r = r
179 settings r = r
176− { Http.method = "HEAD"
180+ { Http.method = "HEAD"
177− , Http.redirectCount = 10
181+ , Http.redirectCount = 10
182+ , Http.requestHeaders = ("User-Agent", ua) : Http.requestHeaders r
178 }
183 }
179
184
185+ -- Nice user agent info
186+ ua = fromString $ "hakyll-check/" ++
187+ (intercalate "." $ map show $ versionBranch $ Paths_hakyll.version)
188+
180 -- Catch all the things except UserInterrupt
189 -- Catch all the things except UserInterrupt
181 failure logger (SomeException e) = case cast e of
190 failure logger (SomeException e) = case cast e of
182 Just UserInterrupt -> throw UserInterrupt
191 Just UserInterrupt -> throw UserInterrupt