| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485 |
- package errorhelpers
- import (
- "fmt"
- "errors"
- "git.mmnx.de/Moe/usermanager"
- "git.mmnx.de/Moe/templatehelpers"
- "github.com/kataras/iris"
- )
- const (
- ERR_LVL_NOTIFICATION = 0
- ERR_LVL_INFORMATION = 1
- ERR_LVL_WARNING = 2
- ERR_LVL_ERROR = 3
- ERR_LVL_FATAL = 4
- )
- type Error struct {
- err error
- errLvl int
- }
- func(err Error) getErrLvl() int {
- return err.errLvl
- }
- func(err Error) getError() error {
- return err.err
- }
- func MakeError(e interface{}) Error {
- var err error
- var logLvl int
- // test for input type
- if v, isError := e.(error); isError {
- err = v
- } else if v, isString := e.(string); isString {
- err = errors.New(v)
- } else {
- fmt.Print("Error Type not implemented:")
- DebugVar(e)
- }
- switch err.Error() {
- case usermanager.ERR_USER_NOT_FOUND, usermanager.ERR_PASSWORD_MISMATCH, usermanager.ERR_USERNAME_TAKEN:
- logLvl = ERR_LVL_WARNING
- default:
- logLvl = ERR_LVL_ERROR
- }
- return Error{err, logLvl}
- }
- func DebugVar(v interface{}) {
- fmt.Printf("%#v\n", v)
- }
- func HandleError(e interface{}, ctx *iris.Context, alt []string) {
- if e == nil { // if no error do nothing
- if len(alt) > 0 {
- templatehelpers.ShowNotification(alt, ctx)
- }
- return
- }
- // TODO: alternative for success (if err == nil)
- // ONLY if alternative's not empty!
- err := MakeError(e) // make an Error object
- switch err.getErrLvl() {
- case ERR_LVL_NOTIFICATION:
- templatehelpers.ShowNotification([]string{err.getError().Error()}, ctx)
- case ERR_LVL_INFORMATION:
- templatehelpers.ShowNotification([]string{err.getError().Error()}, ctx) // TODO: information custom color
- case ERR_LVL_WARNING:
- templatehelpers.ShowError([]string{err.getError().Error()}, ctx)
- case ERR_LVL_ERROR:
- templatehelpers.ShowError([]string{err.getError().Error()}, ctx)
- default:
- fmt.Print("Not implemented yet: ")
- DebugVar(err)
- }
- }
|