@@ -16,11 +16,12 @@ import Control.Monad.RWS (RWST, runRWST)
1616import Control.Monad.State (get, modify)
1717import Control.Monad.Trans (liftIO)
1818import Control.Monad.Writer (tell)
19−import Data.List (isPrefixOf)
19+import Data.List (intercalate, isPrefixOf)
2020import Data.Monoid (Monoid (..))
2121import Data.Set (Set)
2222import qualified Data.Set as S
2323import Data.Typeable (cast)
24+import GHC.Exts (fromString)
2425import qualified Network.HTTP.Conduit as Http
2526import qualified Network.HTTP.Types as Http
2627import System.Directory (doesDirectoryExist, doesFileExist)
@@ -30,11 +31,13 @@ import qualified Text.HTML.TagSoup as TS
3031
3132
3233--------------------------------------------------------------------------------
34+import Data.Version (versionBranch)
3335import Hakyll.Core.Configuration
3436import Hakyll.Core.Logger (Logger, Verbosity)
3537import qualified Hakyll.Core.Logger as Logger
3638import Hakyll.Core.Util.File
3739import Hakyll.Web.Html
40+import qualified Paths_hakyll as Paths_hakyll
3841
3942
4043--------------------------------------------------------------------------------
@@ -172,11 +175,17 @@ checkExternalUrl url = do
172175 modify $ S.insert url
173176 if isOk then ok url else faulty url
174177 where
178+ -- Add additional request info
175179 settings r = r
176− { Http.method = "HEAD"
177− , Http.redirectCount = 10
180+ { Http.method = "HEAD"
181+ , Http.redirectCount = 10
182+ , Http.requestHeaders = ("User-Agent", ua) : Http.requestHeaders r
178183 }
179184
185+ -- Nice user agent info
186+ ua = fromString $ "hakyll-check/" ++
187+ (intercalate "." $ map show $ versionBranch $ Paths_hakyll.version)
188+
180189 -- Catch all the things except UserInterrupt
181190 failure logger (SomeException e) = case cast e of
182191 Just UserInterrupt -> throw UserInterrupt