{-# LANGUAGE CPP #-}
module Network.URI.Messages (trans, Errors(..)) where
import Data.List (stripPrefix)
import Data.Maybe (fromMaybe)
import Control.Exception (Exception)
trans :: [[Char]] -> Errors -> [Char]
trans [[Char]]
_ (RawXML [Char]
markup) = [Char]
markup
([Char]
"en":[[Char]]
_) `trans` UnsupportedScheme [Char]
scheme = [Char]
"Unsupported protocol " [Char] -> [Char] -> [Char]
forall a. [a] -> [a] -> [a]
++ [Char]
scheme
([Char]
"en":[[Char]]
_) `trans` UnsupportedMIME [Char]
mime = [Char]
"Unsupported filetype " [Char] -> [Char] -> [Char]
forall a. [a] -> [a] -> [a]
++ [Char]
mime
([Char]
"en":[[Char]]
_) `trans` RequiresInstall [Char]
mime [Char]
appsMarkup =
[Char]
"<h1>Please install a compatible app to open <code>" [Char] -> [Char] -> [Char]
forall a. [a] -> [a] -> [a]
++ [Char]
linkType [Char] -> [Char] -> [Char]
forall a. [a] -> [a] -> [a]
++
[Char]
"</code> links</h1>\n" [Char] -> [Char] -> [Char]
forall a. [a] -> [a] -> [a]
++ [Char]
appsMarkup
where linkType :: [Char]
linkType = [Char] -> Maybe [Char] -> [Char]
forall a. a -> Maybe a -> a
fromMaybe [Char]
mime (Maybe [Char] -> [Char]) -> Maybe [Char] -> [Char]
forall a b. (a -> b) -> a -> b
$ [Char] -> [Char] -> Maybe [Char]
forall a. Eq a => [a] -> [a] -> Maybe [a]
stripPrefix [Char]
"x-scheme-handler/" [Char]
mime
([Char]
"en":[[Char]]
_) `trans` OpenedWith [Char]
app = [Char]
"Opened in " [Char] -> [Char] -> [Char]
forall a. [a] -> [a] -> [a]
++ [Char]
app
([Char]
"en":[[Char]]
_) `trans` ReadFailed [Char]
msg = [Char]
"Failed to read file: " [Char] -> [Char] -> [Char]
forall a. [a] -> [a] -> [a]
++ [Char]
msg
([Char]
"en":[[Char]]
_) `trans` MalformedResponse [Char]
why = [Char]
"Invalid response! " [Char] -> [Char] -> [Char]
forall a. [a] -> [a] -> [a]
++ [Char]
why
([Char]
"en":[[Char]]
_) `trans` Errors
ExcessiveRedirects = [Char]
"Too many redirects!"
([Char]
"en":[[Char]]
_) `trans` GeminiError Char
'1' Char
'1' [Char]
label =
[Char]
"<form><label>" [Char] -> [Char] -> [Char]
forall a. [a] -> [a] -> [a]
++ [Char]
label [Char] -> [Char] -> [Char]
forall a. [a] -> [a] -> [a]
++ [Char]
"<input type=password></form>"
([Char]
"en":[[Char]]
_) `trans` GeminiError Char
'1' Char
_ [Char]
label = [Char]
"<form><label>" [Char] -> [Char] -> [Char]
forall a. [a] -> [a] -> [a]
++ [Char]
label [Char] -> [Char] -> [Char]
forall a. [a] -> [a] -> [a]
++ [Char]
"<input></form>"
([Char]
"en":[[Char]]
_) `trans` GeminiError Char
'4' Char
'1' [Char]
_ = [Char]
"Site unavailable!"
([Char]
"en":[[Char]]
_) `trans` GeminiError Char
'4' Char
'2' [Char]
_ = [Char]
"Program error!"
([Char]
"en":[[Char]]
_) `trans` GeminiError Char
'4' Char
'3' [Char]
_ = [Char]
"Proxy error!"
([Char]
"en":[[Char]]
_) `trans` GeminiError Char
'4' Char
'4' [Char]
timeout =
[Char]
"Site busy! Please reload after at least " [Char] -> [Char] -> [Char]
forall a. [a] -> [a] -> [a]
++ [Char]
timeout [Char] -> [Char] -> [Char]
forall a. [a] -> [a] -> [a]
++ [Char]
" seconds"
([Char]
"en":[[Char]]
_) `trans` GeminiError Char
'5' Char
'1' [Char]
_ = [Char]
"Page not found! Try the <a href='/'>homepage</a>."
([Char]
"en":[[Char]]
_) `trans` GeminiError Char
'5' Char
'2' [Char]
_ = [Char]
"Page deleted! Try the <a href='/'>homepage</a>."
([Char]
"en":[[Char]]
_) `trans` GeminiError Char
'5' Char
'3' [Char]
_ = [Char]
"Contacted wrong server!"
([Char]
"en":[[Char]]
_) `trans` GeminiError Char
'5' Char
'9' [Char]
_ = [Char]
"Malformed request, my bad!"
([Char]
"en":[[Char]]
_) `trans` GeminiError Char
'6' Char
'1' [Char]
_ = [Char]
"<form><label>Authentication required" [Char] -> [Char] -> [Char]
forall a. [a] -> [a] -> [a]
++
[Char]
"<-argo-authenticate error='Unauthorized account!'></-argo-authenticate></form>"
([Char]
"en":[[Char]]
_) `trans` GeminiError Char
'6' Char
'2' [Char]
_ = [Char]
"<form><label>Authentication required" [Char] -> [Char] -> [Char]
forall a. [a] -> [a] -> [a]
++
[Char]
"<-argo-authenticate error='Invalid account!'></-argo-authenticate></form>"
([Char]
"en":[[Char]]
_) `trans` GeminiError Char
'6' Char
_ [Char]
_ = [Char]
"<form><label>Authentication required" [Char] -> [Char] -> [Char]
forall a. [a] -> [a] -> [a]
++
[Char]
"<-argo-authenticate></-argo-authenticate></form>"
([Char]
"en":[[Char]]
_) `trans` GeminiError Char
_ Char
_ [Char]
error = [Char]
error
([Char]
"en":[[Char]]
_) `trans` HTTPStatus Int
400 [Char]
_ = [Char]
"I sent a bad request, according to this site."
([Char]
"en":[[Char]]
_) `trans` HTTPStatus Int
401 [Char]
_ = [Char]
"Authentication required!"
([Char]
"en":[[Char]]
_) `trans` HTTPStatus Int
402 [Char]
_ = [Char]
"Payment required!"
([Char]
"en":[[Char]]
_) `trans` HTTPStatus Int
403 [Char]
_ = [Char]
"Access denied!"
([Char]
"en":[[Char]]
_) `trans` HTTPStatus Int
404 [Char]
_ = [Char]
"Page not found! Try the <a href='/'>homepage</a>."
([Char]
"en":[[Char]]
_) `trans` HTTPStatus Int
405 [Char]
_ = [Char]
"Bad webform for this destination webaddress! " [Char] -> [Char] -> [Char]
forall a. [a] -> [a] -> [a]
++
[Char]
"<em>Method not allowed</em>."
([Char]
"en":[[Char]]
_) `trans` HTTPStatus Int
406 [Char]
_ = [Char]
"No representation available for given criteria!"
([Char]
"en":[[Char]]
_) `trans` HTTPStatus Int
407 [Char]
_ = [Char]
"Authentication into proxyserver required!"
([Char]
"en":[[Char]]
_) `trans` HTTPStatus Int
408 [Char]
_ = [Char]
"The site took too long to connect! <em>(HTTP 408)</em>"
([Char]
"en":[[Char]]
_) `trans` HTTPStatus Int
409 [Char]
_ = [Char]
"Request is based on outdated state!"
([Char]
"en":[[Char]]
_) `trans` HTTPStatus Int
410 [Char]
_ = [Char]
"Page deleted! Try the <a href='/'>homepage</a>."
([Char]
"en":[[Char]]
_) `trans` HTTPStatus Int
411 [Char]
_ = [Char]
"I sent a bad request, according to this site." [Char] -> [Char] -> [Char]
forall a. [a] -> [a] -> [a]
++
[Char]
"<em>(Missing <code>Content-Length</code> header)</em>"
([Char]
"en":[[Char]]
_) `trans` HTTPStatus Int
412 [Char]
_ = [Char]
"Webpage doesn't meet our preconditions."
([Char]
"en":[[Char]]
_) `trans` HTTPStatus Int
413 [Char]
_ = [Char]
"Payload too large, please upload a smaller file!"
([Char]
"en":[[Char]]
_) `trans` HTTPStatus Int
414 [Char]
_ = [Char]
"Web address is too long for the site!"
([Char]
"en":[[Char]]
_) `trans` HTTPStatus Int
415 [Char]
_ = [Char]
"No representation available for supported filetypes!"
([Char]
"en":[[Char]]
_) `trans` HTTPStatus Int
416 [Char]
_ = [Char]
"Invalid byte-range of requested resource!"
([Char]
"en":[[Char]]
_) `trans` HTTPStatus Int
417 [Char]
_ = [Char]
"Site cannot satisfy our stated expectations!"
([Char]
"en":[[Char]]
_) `trans` HTTPStatus Int
418 [Char]
_ = [[Char]] -> [Char]
unlines [
[Char]
"<p>I'm a little teapot<br/>",
[Char]
"Short and stout<br/>",
[Char]
"Here is my handle<br/>",
[Char]
"And here is my spout.</p>>",
[Char]
"<p>When I get all steamed up<br/>",
[Char]
"Hear me shout<br/>",
[Char]
"<q>Tip me over<br/>",
[Char]
"And pour me out!</q></p>"
]
([Char]
"en":[[Char]]
_) `trans` HTTPStatus Int
421 [Char]
_ = [Char]
"Contacted wrong server!"
([Char]
"en":[[Char]]
_) `trans` HTTPStatus Int
422 [Char]
_ = [Char]
"Invalid <strong>WebDAV</strong> request!"
([Char]
"en":[[Char]]
_) `trans` HTTPStatus Int
423 [Char]
_ = [Char]
"<strong>WebDAV</strong> resource is locked!"
([Char]
"en":[[Char]]
_) `trans` HTTPStatus Int
424 [Char]
_ = [Char]
"Failed due to previous failure!"
([Char]
"en":[[Char]]
_) `trans` HTTPStatus Int
425 [Char]
_ = [Char]
"Site requires stronger security on our request!"
([Char]
"en":[[Char]]
_) `trans` HTTPStatus Int
426 [Char]
_ = [Char]
"Site requires newer networking-protocols!"
([Char]
"en":[[Char]]
_) `trans` HTTPStatus Int
428 [Char]
_ = [Char]
"Site requires additional protection to avoid loosing changes!"
([Char]
"en":[[Char]]
_) `trans` HTTPStatus Int
429 [Char]
_ = [Char]
"We sent this site too many requests for it to cope with!"
([Char]
"en":[[Char]]
_) `trans` HTTPStatus Int
431 [Char]
_ = [Char]
"I sent more auxiliary data than this site can cope with!"
([Char]
"en":[[Char]]
_) `trans` HTTPStatus Int
451 [Char]
_ = [Char]
"Requested page cannot legally be provided!"
([Char]
"en":[[Char]]
_) `trans` HTTPStatus Int
500 [Char]
_ = [Char]
"The site experienced an error generating this webpage. " [Char] -> [Char] -> [Char]
forall a. [a] -> [a] -> [a]
++
[Char]
"<em>The webmasters have probably already been automatically notified.</em>"
([Char]
"en":[[Char]]
_) `trans` HTTPStatus Int
501 [Char]
_ =
[Char]
"Bad webform for this destination webaddress! <em>Method not implemented</em>."
([Char]
"en":[[Char]]
_) `trans` HTTPStatus Int
502 [Char]
_ = [Char]
"Proxyserver got a malformed response!"
([Char]
"en":[[Char]]
_) `trans` HTTPStatus Int
503 [Char]
_ = [Char]
"The site is not available right now!"
([Char]
"en":[[Char]]
_) `trans` HTTPStatus Int
504 [Char]
_ = [Char]
"The site took too long to respond! <em>(Behind proxy)</em>"
([Char]
"en":[[Char]]
_) `trans` HTTPStatus Int
505 [Char]
_ = [Char]
"The site does not speak the language as me! " [Char] -> [Char] -> [Char]
forall a. [a] -> [a] -> [a]
++
[Char]
"<em>(Unsupported HTTP version)</em>"
([Char]
"en":[[Char]]
_) `trans` HTTPStatus Int
506 [Char]
_ = [Char]
"The site is misconfigured!"
([Char]
"en":[[Char]]
_) `trans` HTTPStatus Int
507 [Char]
_ = [Char]
"Insufficient <strong>WebDAV</strong> storage!"
([Char]
"en":[[Char]]
_) `trans` HTTPStatus Int
508 [Char]
_ = [Char]
"<strong>WebDAV</strong> loop detected!"
([Char]
"en":[[Char]]
_) `trans` HTTPStatus Int
510 [Char]
_ = [Char]
"Further request extensions required!"
([Char]
"en":[[Char]]
_) `trans` HTTPStatus Int
511 [Char]
_ = [Char]
"Authentication into network required!"
([Char]
"en":[[Char]]
_) `trans` HTTPStatus Int
_ [Char]
error = [Char]
error
([Char]
"en":[[Char]]
_) `trans` OtherException [Char]
error = [Char]
"Internal Exception <pre><code>" [Char] -> [Char] -> [Char]
forall a. [a] -> [a] -> [a]
++ [Char]
error [Char] -> [Char] -> [Char]
forall a. [a] -> [a] -> [a]
++ [Char]
"</code></pre>"
([Char]
"en":[[Char]]
_) `trans` InvalidUrl [Char]
url [Char]
message =
[Char]
"Invalid web address <code>" [Char] -> [Char] -> [Char]
forall a. [a] -> [a] -> [a]
++ [Char]
url [Char] -> [Char] -> [Char]
forall a. [a] -> [a] -> [a]
++ [Char]
"</code>: <em>" [Char] -> [Char] -> [Char]
forall a. [a] -> [a] -> [a]
++ [Char]
message [Char] -> [Char] -> [Char]
forall a. [a] -> [a] -> [a]
++ [Char]
"</em>"
([Char]
"en":[[Char]]
_) `trans` ProxyError [Char]
msg Int
code Int
code' [Char]
msg' = [[Char]] -> [Char]
unlines [
[Char]
"<h1>Proxy failed to forward request!<h1>",
[Char]
"<p>" [Char] -> [Char] -> [Char]
forall a. [a] -> [a] -> [a]
++ Int -> [Char]
forall a. Show a => a -> [Char]
show Int
code [Char] -> [Char] -> [Char]
forall a. [a] -> [a] -> [a]
++ [Char]
" " [Char] -> [Char] -> [Char]
forall a. [a] -> [a] -> [a]
++ [Char]
msg [Char] -> [Char] -> [Char]
forall a. [a] -> [a] -> [a]
++ [Char]
"</p>",
[Char]
"<p>" [Char] -> [Char] -> [Char]
forall a. [a] -> [a] -> [a]
++ Int -> [Char]
forall a. Show a => a -> [Char]
show Int
code' [Char] -> [Char] -> [Char]
forall a. [a] -> [a] -> [a]
++ [Char]
" " [Char] -> [Char] -> [Char]
forall a. [a] -> [a] -> [a]
++ [Char]
msg' [Char] -> [Char] -> [Char]
forall a. [a] -> [a] -> [a]
++ [Char]
"</p>"
]
([Char]
"en":[[Char]]
_) `trans` InvalidRequest [Char]
why =
[Char]
"Attempted to send invalid auxiliary data: <em>" [Char] -> [Char] -> [Char]
forall a. [a] -> [a] -> [a]
++ [Char]
why [Char] -> [Char] -> [Char]
forall a. [a] -> [a] -> [a]
++ [Char]
"</em>"
([Char]
"en":[[Char]]
_) `trans` Errors
InsecureUnestablished =
[Char]
"Attempted to send or recieve data before establishing secure connection!"
([Char]
"en":[[Char]]
_) `trans` InsecureCertificate [Char]
why = [[Char]] -> [Char]
unlines [
[Char]
"<h1>The site failed to prove it is who it says it is!</h1>",
[Char]
"<p>" [Char] -> [Char] -> [Char]
forall a. [a] -> [a] -> [a]
++ [Char]
why [Char] -> [Char] -> [Char]
forall a. [a] -> [a] -> [a]
++ [Char]
"</p>",
[Char]
"<p><a href=action:history/back>Leave Insecure Site</a> | ",
[Char]
"<a href=action:novalidate>Accept Imposter Risk & Continue</a></p>"
]
([Char]
"en":[[Char]]
_) `trans` InsecureTerminated [Char]
why = [Char]
"Secure session disconnected! <em>" [Char] -> [Char] -> [Char]
forall a. [a] -> [a] -> [a]
++ [Char]
why [Char] -> [Char] -> [Char]
forall a. [a] -> [a] -> [a]
++ [Char]
"</em>"
trans ([Char]
"en":[[Char]]
_) Errors
InsecureCertificateUnknownCA = [Char]
"The authority vouching for it is unknown to me!"
trans ([Char]
"en":[[Char]]
_) Errors
InsecureCertificateUnknown =
[Char]
"The cryptographic certificate it has sent us to prove its identity instead " [Char] -> [Char] -> [Char]
forall a. [a] -> [a] -> [a]
++
[Char]
"belongs to someone else!"
trans ([Char]
"en":[[Char]]
_) Errors
InsecureCertificateRevoked =
[Char]
"The cryptographic certificate it has sent us to prove its identity has been revoked!"
trans ([Char]
"en":[[Char]]
_) Errors
InsecureCertificateExpired =
[Char]
"The cryptographic certificate it has sent us to prove its identity has expired!"
trans ([Char]
"en":[[Char]]
_) Errors
InsecureCertificateUnsupported =
[Char]
"It has sent us a cryptographic certificate to prove its identity I failed to make sense of."
([Char]
"en":[[Char]]
_) `trans` HandshakePacketUnparsed [Char]
why = [Char]
"Invalid security packet: <em>" [Char] -> [Char] -> [Char]
forall a. [a] -> [a] -> [a]
++ [Char]
why [Char] -> [Char] -> [Char]
forall a. [a] -> [a] -> [a]
++ [Char]
"</em>"
([Char]
"en":[[Char]]
_) `trans` HandshakePacketUnexpected [Char]
a [Char]
b = [[Char]] -> [Char]
unlines [
[Char]
"<p>Invalid security packet: <em>" [Char] -> [Char] -> [Char]
forall a. [a] -> [a] -> [a]
++ [Char]
a [Char] -> [Char] -> [Char]
forall a. [a] -> [a] -> [a]
++ [Char]
"</em></p>",
[Char]
"<p>" [Char] -> [Char] -> [Char]
forall a. [a] -> [a] -> [a]
++ [Char]
b [Char] -> [Char] -> [Char]
forall a. [a] -> [a] -> [a]
++ [Char]
"</p>"
]
([Char]
"en":[[Char]]
_) `trans` HandshakePacketInvalid [Char]
why = [Char]
"Invalid security packet: <em>" [Char] -> [Char] -> [Char]
forall a. [a] -> [a] -> [a]
++ [Char]
why [Char] -> [Char] -> [Char]
forall a. [a] -> [a] -> [a]
++ [Char]
"</em>"
trans ([Char]
"en":[[Char]]
_) Errors
HandshakeEOF = [Char]
"Secure session disconnected!"
([Char]
"en":[[Char]]
_) `trans` HandshakePolicy [Char]
why = [Char]
"Invalid handshake policy: <em>" [Char] -> [Char] -> [Char]
forall a. [a] -> [a] -> [a]
++ [Char]
why [Char] -> [Char] -> [Char]
forall a. [a] -> [a] -> [a]
++ [Char]
"</em>"
([Char]
"en":[[Char]]
_) `trans` HandshakeMisc [Char]
why =
[Char]
"Failed to establish secure connection! <em>" [Char] -> [Char] -> [Char]
forall a. [a] -> [a] -> [a]
++ [Char]
why [Char] -> [Char] -> [Char]
forall a. [a] -> [a] -> [a]
++ [Char]
"</em>"
trans ([Char]
"en":[[Char]]
_) Errors
HandshakeError = [Char]
"Failed to negotiate security parameters!"
trans ([Char]
"en":[[Char]]
_) Errors
HandshakeClosed = [Char]
"Secure session disconnected!"
([Char]
"en":[[Char]]
_) `trans` FailedConnect [Char]
why = [Char]
"Failed to open connection to the site: <em>" [Char] -> [Char] -> [Char]
forall a. [a] -> [a] -> [a]
++ [Char]
why [Char] -> [Char] -> [Char]
forall a. [a] -> [a] -> [a]
++ [Char]
"</em>"
trans ([Char]
"en":[[Char]]
_) Errors
TimeoutConnection = [Char]
"The site took too long to connect!"
trans ([Char]
"en":[[Char]]
_) Errors
TimeoutResponse = [Char]
"The site took too long to respond!"
trans ([Char]
_:[[Char]]
locales) Errors
err = [[Char]] -> Errors -> [Char]
trans [[Char]]
locales Errors
err
trans [] Errors
err = Errors -> [Char]
forall a. Show a => a -> [Char]
show Errors
err
data Errors = UnsupportedScheme String | UnsupportedMIME String | RequiresInstall String String
| OpenedWith String | ReadFailed String | RawXML String | MalformedResponse String
| ExcessiveRedirects | HTTPStatus Int String | GeminiError Char Char String
| OtherException String | InvalidUrl String String | ProxyError String Int Int String
| InvalidRequest String
| InsecureUnestablished | InsecureCertificate String | InsecureTerminated String
| InsecureCertificateUnknownCA | InsecureCertificateUnknown | InsecureCertificateRevoked
| InsecureCertificateExpired | InsecureCertificateUnsupported
| HandshakePacketUnparsed String | HandshakePacketUnexpected String String
| HandshakePacketInvalid String
| HandshakeEOF | HandshakePolicy String | HandshakeMisc String | HandshakeError | HandshakeClosed
| FailedConnect String | TimeoutConnection | TimeoutResponse deriving (Int -> Errors -> [Char] -> [Char]
[Errors] -> [Char] -> [Char]
Errors -> [Char]
(Int -> Errors -> [Char] -> [Char])
-> (Errors -> [Char])
-> ([Errors] -> [Char] -> [Char])
-> Show Errors
forall a.
(Int -> a -> [Char] -> [Char])
-> (a -> [Char]) -> ([a] -> [Char] -> [Char]) -> Show a
showList :: [Errors] -> [Char] -> [Char]
$cshowList :: [Errors] -> [Char] -> [Char]
show :: Errors -> [Char]
$cshow :: Errors -> [Char]
showsPrec :: Int -> Errors -> [Char] -> [Char]
$cshowsPrec :: Int -> Errors -> [Char] -> [Char]
Show)
instance Exception Errors