mirror of
https://github.com/TheAnachronism/docspell.git
synced 2025-06-23 10:58:26 +00:00
125 lines
3.4 KiB
Elm
125 lines
3.4 KiB
Elm
{-
|
|
Copyright 2020 Eike K. & Contributors
|
|
|
|
SPDX-License-Identifier: AGPL-3.0-or-later
|
|
-}
|
|
|
|
|
|
module Messages.Comp.HttpError exposing
|
|
( de
|
|
, gb
|
|
, fr
|
|
)
|
|
|
|
import Http
|
|
|
|
|
|
gb : Http.Error -> String
|
|
gb err =
|
|
let
|
|
texts =
|
|
{ badUrl = \url -> "There is something wrong with this url: " ++ url
|
|
, timeout = "There was a network timeout."
|
|
, networkError = "There was a network error."
|
|
, invalidResponseStatus =
|
|
\status ->
|
|
"There was an invalid response status: " ++ String.fromInt status ++ "."
|
|
, invalidInput = "Invalid input when processing the request."
|
|
, notFound = "The requested resource doesn't exist."
|
|
, invalidBody = \str -> "There was an error decoding the response: " ++ str
|
|
, accessDenied = "Access denied"
|
|
}
|
|
in
|
|
errorToString texts err
|
|
|
|
|
|
de : Http.Error -> String
|
|
de err =
|
|
let
|
|
texts =
|
|
{ badUrl = \url -> "Die URL ist falsch: " ++ url
|
|
, timeout = "Es gab einen Netzwerk-Timeout."
|
|
, networkError = "Es gab einen Netzwerk-Fehler."
|
|
, invalidResponseStatus =
|
|
\status ->
|
|
"Ein ungültiger Antwort-Code: " ++ String.fromInt status ++ "."
|
|
, invalidInput = "Die Daten im Request waren ungültig."
|
|
, notFound = "Die angegebene Ressource wurde nicht gefunden."
|
|
, invalidBody = \str -> "Es gab einen Fehler beim Dekodieren der Antwort: " ++ str
|
|
, accessDenied = "Zugriff verweigert"
|
|
}
|
|
in
|
|
errorToString texts err
|
|
|
|
|
|
fr : Http.Error -> String
|
|
fr err =
|
|
let
|
|
texts =
|
|
{ badUrl = \url -> "Erreur avec l'url: " ++ url
|
|
, timeout = "Délais d'attente réseau (timeout) expiré."
|
|
, networkError = "Erreur de réseau"
|
|
, invalidResponseStatus =
|
|
\status ->
|
|
"Status de réponse invalide: " ++ String.fromInt status ++ "."
|
|
, invalidInput = "Entrée invalide pour traiter la requête"
|
|
, notFound = "La ressource demandée n'existe pas."
|
|
, invalidBody = \str -> "Erreur en décodant la réponse: " ++ str
|
|
, accessDenied = "Accès refusé"
|
|
}
|
|
in
|
|
errorToString texts err
|
|
|
|
|
|
-- Error Utilities
|
|
|
|
|
|
type alias Texts =
|
|
{ badUrl : String -> String
|
|
, timeout : String
|
|
, networkError : String
|
|
, invalidResponseStatus : Int -> String
|
|
, invalidInput : String
|
|
, notFound : String
|
|
, invalidBody : String -> String
|
|
, accessDenied : String
|
|
}
|
|
|
|
|
|
errorToStringStatus : Texts -> Http.Error -> (Int -> String) -> String
|
|
errorToStringStatus texts error statusString =
|
|
case error of
|
|
Http.BadUrl url ->
|
|
texts.badUrl url
|
|
|
|
Http.Timeout ->
|
|
texts.timeout
|
|
|
|
Http.NetworkError ->
|
|
texts.networkError
|
|
|
|
Http.BadStatus status ->
|
|
statusString status
|
|
|
|
Http.BadBody str ->
|
|
texts.invalidBody str
|
|
|
|
|
|
errorToString : Texts -> Http.Error -> String
|
|
errorToString texts error =
|
|
let
|
|
f sc =
|
|
if sc == 404 then
|
|
texts.notFound
|
|
|
|
else if sc == 403 then
|
|
texts.accessDenied
|
|
|
|
else if sc >= 400 && sc < 500 then
|
|
texts.invalidInput
|
|
|
|
else
|
|
texts.invalidResponseStatus sc
|
|
in
|
|
errorToStringStatus texts error f
|