1
0
mirror of https://github.com/aclindsa/moneygo.git synced 2024-10-30 15:50:04 -04:00
moneygo/internal/handlers/errors.go

54 lines
1021 B
Go
Raw Normal View History

package handlers
2015-06-25 22:36:58 -04:00
import (
"encoding/json"
"fmt"
2015-06-25 22:36:58 -04:00
"log"
"net/http"
2017-10-05 21:08:17 -04:00
"strings"
2015-06-25 22:36:58 -04:00
)
type Error struct {
ErrorId int
ErrorString string
}
func (e *Error) Error() string {
return fmt.Sprintf("Error %d: %s", e.ErrorId, e.ErrorString)
}
2017-10-05 21:08:17 -04:00
func (e *Error) Read(json_str string) error {
dec := json.NewDecoder(strings.NewReader(json_str))
return dec.Decode(e)
}
func (e *Error) Write(w http.ResponseWriter) error {
enc := json.NewEncoder(w)
return enc.Encode(e)
}
2015-06-25 22:36:58 -04:00
var error_codes = map[int]string{
1: "Not Signed In",
2: "Unauthorized Access",
3: "Invalid Request",
4: "User Exists",
// 5: "Connection Failed", //reserved for client-side error
6: "Import Error",
7: "In Use Error",
2015-06-25 22:36:58 -04:00
999: "Internal Error",
}
func WriteError(w http.ResponseWriter, error_code int) {
msg, ok := error_codes[error_code]
if !ok {
log.Printf("Error: WriteError received error code of %d", error_code)
msg = error_codes[999]
}
e := Error{error_code, msg}
2017-10-05 21:08:17 -04:00
err := e.Write(w)
2015-06-25 22:36:58 -04:00
if err != nil {
log.Fatal(err)
}
}