diff options
Diffstat (limited to 'src/Hakyll/Check.hs')
-rw-r--r-- | src/Hakyll/Check.hs | 10 |
1 files changed, 8 insertions, 2 deletions
diff --git a/src/Hakyll/Check.hs b/src/Hakyll/Check.hs index 48bb655..68ece18 100644 --- a/src/Hakyll/Check.hs +++ b/src/Hakyll/Check.hs @@ -198,12 +198,14 @@ checkExternalUrl url = do else do isOk <- liftIO $ handle (failure logger) $ Http.withManager $ \mgr -> do - request <- Http.parseUrl url + request <- Http.parseUrl $ urlToCheck url response <- Http.http (settings request) mgr let code = Http.statusCode (Http.responseStatus response) return $ code >= 200 && code < 300 - modify $ S.insert url + modify $ if schemeRelative url + then S.insert (urlToCheck url) . S.insert url + else S.insert url if isOk then ok url else faulty url where -- Add additional request info @@ -221,6 +223,10 @@ checkExternalUrl url = do failure logger (SomeException e) = case cast e of Just UserInterrupt -> throw UserInterrupt _ -> Logger.error logger (show e) >> return False + + -- Check scheme-relative links + schemeRelative = isPrefixOf "//" + urlToCheck uri = if schemeRelative uri then "http:" ++ uri else uri #else checkExternalUrl _ = return () #endif |