Mercurial > gemma
changeset 855:d464b777d98f
Merged
author | Sascha Wilde <wilde@intevation.de> |
---|---|
date | Fri, 28 Sep 2018 13:57:15 +0200 |
parents | 83c271cb2344 (diff) fb39ec3b95a8 (current diff) |
children | ce0d50b1d126 |
files | |
diffstat | 2 files changed, 15 insertions(+), 39 deletions(-) [+] |
line wrap: on
line diff
--- a/pkg/controllers/system.go Fri Sep 28 13:55:44 2018 +0200 +++ b/pkg/controllers/system.go Fri Sep 28 13:57:15 2018 +0200 @@ -111,6 +111,10 @@ attr := mux.Vars(req)["attr"] c := input.(*models.Colour) + if !c.IsValid() { + err = JSONError{http.StatusBadRequest, "error: invalid colours"} + return + } var res sql.Result res, err = db.ExecContext(
--- a/pkg/models/system.go Fri Sep 28 13:55:44 2018 +0200 +++ b/pkg/models/system.go Fri Sep 28 13:57:15 2018 +0200 @@ -1,49 +1,21 @@ package models -import ( - "database/sql/driver" - "encoding/json" - "errors" - "fmt" -) - type ( - AlphaValue float64 - Colour struct { - R byte `json:"r"` - G byte `json:"g"` - B byte `json:"b"` - A AlphaValue `json:"a"` + R int `json:"r"` + G int `json:"g"` + B int `json:"b"` + A float32 `json:"a"` } ) -var errInvalidAlphaValue = errors.New("Invalid alpha value.") - -func (a *AlphaValue) UnmarshalJSON(data []byte) error { - var f float64 - if err := json.Unmarshal(data, &f); err != nil { - return err - } - if f < 0 || f > 1 { - return errInvalidAlphaValue - } - *a = AlphaValue(f) - return nil +func isByteRange(i int) bool { + return i >= 0 && i < 256 } -func (a AlphaValue) Value() (driver.Value, error) { - return float64(a), nil +func (c Colour) IsValid() bool { + return isByteRange(c.R) && + isByteRange(c.G) && + isByteRange(c.B) && + c.A >= 0 && c.A <= 1 } - -func (a *AlphaValue) Scan(src interface{}) error { - switch v := src.(type) { - case int64: - *a = AlphaValue(v) - case float64: - *a = AlphaValue(v) - default: - return fmt.Errorf("Unexpected type %T", src) - } - return nil -}