@@ -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
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
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
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
185+ -- Nice user agent info
186+ ua = fromString $ "hakyll-check/" ++
187+ (intercalate "." $ map show $ versionBranch $ Paths_hakyll.version)
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