import Test.HUnit (Assertion, assertEqual)
import Test.Framework (Test, testGroup)
import Test.Framework.Providers.HUnit (testCase)
-import Text.Regex.Posix
+import Text.Regex.Posix ((=~))
-- Distinguish between URLs (Strings) and URIs as provided by the
-- Network.URI module.
parse_result = uriAuthority uri
+make_https :: URL -> URL
+make_https url =
+ case parse_result of
+ Nothing -> url -- Shrug?
+ Just uri ->
+ if http uri then
+ show $ uri { uriScheme = "https:" }
+ else
+ url -- Leave non-http URLs alone.
+ where
+ parse_result = parseURIReference url
+
+
-- | Does this URI use an HTTPS-compatible port?
https_port :: URI -> Bool
https_port uri =
let reverse_components = reverse components in
case reverse_components of
[] -> Nothing
- (x:xs) -> Just x
+ (x:_) -> Just x
where
parse_result = parseURIReference url
where
parse_result = parseURIReference relative_url
-
+-- | Like 'make_absolute_url', except returns its input instead of
+-- 'Nothing' if the absolution fails.
+try_make_absolute_url :: URL -> URL
+try_make_absolute_url url =
+ case make_absolute_url url of
+ Nothing -> url
+ Just abs_url -> abs_url
-- | A List of LWN URLs to use during testing.
lwn_urls :: [URL]