diff options
Diffstat (limited to 'api/login.go')
-rw-r--r-- | api/login.go | 61 |
1 files changed, 0 insertions, 61 deletions
diff --git a/api/login.go b/api/login.go deleted file mode 100644 index ef43304..0000000 --- a/api/login.go +++ /dev/null @@ -1,61 +0,0 @@ -package api - -import ( - "encoding/json" - "net/http" - - "github.com/go-playground/validator/v10" - redqdb "sinanmohd.com/redq/db" -) - -type loginAPI struct { - db *redqdb.SafeDB - validate *validator.Validate - req *RequestLogin - resp *ResponseLogin -} - -type RequestLogin struct { - Account *redqdb.Account `validate:"required"` -} - -type ResponseLogin struct { - Account *redqdb.Account -} - -func newLogin(db *redqdb.SafeDB) *loginAPI { - a := &loginAPI{} - a.db = db - a.validate = validator.New(validator.WithRequiredStructEnabled()) - - return a -} - -func (a *loginAPI) ServeHTTP(rw http.ResponseWriter, r *http.Request) { - a.req = &RequestLogin{} - a.resp = &ResponseLogin{} - - err := unmarshal(r.Body, a.req) - if err == nil { - err = a.validate.Struct(a.req) - } - if err != nil { - handleError(err, rw, http.StatusUnprocessableEntity) - return - } - - err = a.req.Account.Login(a.db) - if err != nil { - handleError(err, rw, http.StatusUnauthorized) - return - } - a.resp.Account = a.req.Account - - json, err := json.Marshal(a.resp) - if err != nil { - handleError(err, rw, http.StatusInternalServerError) - return - } - - rw.Write(json) -} |