func (r *Resource) PUT(c *ctx.Context, rw http.ResponseWriter, req *http.Request) error { vars := mux.Vars(req) id := vars["id"] db := c.Vars["db"].(*pg.Session) // decode request data var form = &struct { Name string `json:"name"` }{} err := json.NewDecoder(req.Body).Decode(form) if err != nil { log.Errorf("Could not parse request data: %s", err) return ctx.BadRequest(rw, c.T("mediatype.api.could_not_parse_request")) } // get media type from database var entity pg.Entity entity, err = db.FindOne(&Model{}, "id = $1", id) if err != nil { log.Errorf("Could not query media type id %s: %v", id, err) return ctx.BadRequest(rw, c.T("mediatype.api.could_not_query_media_type")) } mediatype := entity.(*Model) // update the media type mediatype.Name = form.Name err = db.Update(mediatype) if err != nil { log.Errorf("Could not edit media type %s: %v", form.Name, err) return ctx.BadRequest(rw, c.T("mediatype.api.could_not_edit_media_type")) } return ctx.OK(rw, mediatype) }
func (r *Resource) PUT(c *ctx.Context, rw http.ResponseWriter, req *http.Request) error { vars := mux.Vars(req) id := vars["id"] db := c.Vars["db"].(*pg.Session) // decode request data var form = &struct { Name string `json:"name"` }{} err := json.NewDecoder(req.Body).Decode(form) if err != nil { log.Errorf("Could not parse request data: %s", err) return ctx.BadRequest(rw, c.T("group.api.could_not_parse_request_data")) } // get group from database var grp pg.Entity grp, err = db.FindOne(&Model{}, "id = $1", id) if err != nil { log.Errorf("Could not query group id %s: %v", id, err) return ctx.BadRequest(rw, c.T("group.api.could_not_query_group")) } // update the group grp.(*Model).Name = form.Name err = db.Update(grp) if err != nil { log.Errorf("Could not edit group %s: %v", form.Name, err) return ctx.BadRequest(rw, c.T("group.api.could_not_edit_group")) } return ctx.OK(rw, grp) }
func (r *Begin) POST(c *ctx.Context, rw http.ResponseWriter, req *http.Request) error { db := c.Vars["db"].(*pg.Session) // decode request data var form struct { Email string `json:"email"` } err := json.NewDecoder(req.Body).Decode(&form) if err != nil { return ctx.BadRequest(rw, c.T("reset.begin.could_not_query")) } // validate email address if ok := regexp.MustCompile(cfg.Email.Regex).MatchString(form.Email); !ok { return ctx.BadRequest(rw, c.T("reset.begin.invalid_email_address")) } // get user from database var u *user.Model u, err = user.GetByEmail(db, form.Email) if err != nil { return ctx.BadRequest(rw, c.T("reset.begin.user_not_found")) } go sendEmail(c, u) return ctx.OK(rw, c.T("reset.begin.email_sent")) }
func Response(c *ctx.Context, rw http.ResponseWriter, token *jwt.Token) error { tokenString, err := ctx.SignToken(token) if err != nil { return ctx.InternalServerError(rw, c.T("user.token.problem_signing_token")) } return ctx.OK(rw, map[string]string{"token": tokenString}) }
func (r *Collection) GET(c *ctx.Context, rw http.ResponseWriter, req *http.Request) error { db := c.Vars["db"].(*pg.Session) mediatypes, err := db.FindAll(&Model{}, "") if err != nil { log.Errorf("Query error: %v", err) return ctx.BadRequest(rw, c.T("mediatype.api.could_not_query_media_type")) } return ctx.OK(rw, mediatypes) }
func (r *Resource) PUT(c *ctx.Context, rw http.ResponseWriter, req *http.Request) error { db := c.Vars["db"].(*pg.Session) vars := mux.Vars(req) id := vars["id"] // decode request data var form = &MediaForm{} err := json.NewDecoder(req.Body).Decode(form) if err != nil { log.Errorf("Could not parse request data: %s", err) return ctx.BadRequest(rw, c.T("media.mediaitemresource.could_not_parse_request_data")) } // get location from database loc, err := location.GetById(db, form.LocationId) if err != nil { log.Errorf("Could not locate the requested location: %s", err) return ctx.BadRequest(rw, c.T("media.mediaitemresource.could_not_locate_requested_location")) } // get media type from database mediatype, err := mediatype.GetById(db, form.MediatypeId) if err != nil { log.Errorf("Could not locate the requested media type: %s", err) return ctx.BadRequest(rw, c.T("media.mediaitemresource.could_not_locate_requested_media_type")) } // move the uploaded file to the right place var dstPath string dstPath, err = mediaupload.MoveFile(loc, mediatype, form.Path) if err != nil { log.Errorf("Could not process the uploaded file: %s", err) return ctx.InternalServerError(rw, c.T("media.mediaitemresource.could_not_process_uploaded_file")) } // get media from database entity, err := db.FindOne(&Model{}, "id = $1", id) if err != nil { log.Errorf("Could not query media id %s: %v", id, err) return ctx.BadRequest(rw, c.T("media.mediaitemresource.could_not_query_media")) } media := entity.(*Model) // update the media media.Name = form.Name media.LocationId = form.LocationId media.MediatypeId = form.MediatypeId media.Path = dstPath media.EncodeData(loc, mediatype) err = db.Update(media) if err != nil { log.Errorf("Could not edit media %s: %v", form.Name, err) return ctx.BadRequest(rw, c.T("media.mediaitemresource.could_not_edit_media")) } return ctx.OK(rw, media) }
func (lc *Collection) GET(c *ctx.Context, rw http.ResponseWriter, req *http.Request) error { db := c.Vars["db"].(*pg.Session) locations, err := db.FindAll(&Model{}, "") if err != nil { log.Errorf("Could not query locations: %v", err) return ctx.BadRequest(rw, c.T("location.api.could_not_query_locations")) } return ctx.OK(rw, locations) }
func (r *Collection) GET(c *ctx.Context, rw http.ResponseWriter, req *http.Request) error { db := c.Vars["db"].(*pg.Session) medias, err := db.FindAll(&Model{}, "") if err != nil { log.Errorf("Query error: %v", err) return ctx.BadRequest(rw, c.T("media.mediaresource.query_error")) } return ctx.OK(rw, medias) }
func (r *Resource) GET(c *ctx.Context, rw http.ResponseWriter, req *http.Request) error { vars := mux.Vars(req) id := vars["id"] db := c.Vars["db"].(*pg.Session) grp, err := db.FindOne(&Model{}, "id = $1", id) if err != nil { log.Errorf("Could not query group id %s: %v", id, err) return ctx.BadRequest(rw, c.T("group.api.could_not_query_group")) } return ctx.OK(rw, grp) }
func (r *Resource) GET(c *ctx.Context, rw http.ResponseWriter, req *http.Request) error { db := c.Vars["db"].(*pg.Session) vars := mux.Vars(req) id := vars["id"] media, err := db.FindOne(&Model{}, "id = $1", id) if err != nil { log.Errorf("Could not query media id %s: %v", id, err) return ctx.BadRequest(rw, c.T("media.mediaitemresource.could_not_query_media")) } return ctx.OK(rw, media) }
func (r *Complete) POST(c *ctx.Context, rw http.ResponseWriter, req *http.Request) error { db := c.Vars["db"].(*pg.Session) // decode request data var form struct { Password string `json:"password"` PasswordAgain string `json:"passwordAgain"` ValidKey ValidKey `json:"validKey"` } err := json.NewDecoder(req.Body).Decode(&form) if err != nil { return ctx.BadRequest(rw, c.T("reset.complete.unable_to_change")) } // validate the passwords if form.Password != form.PasswordAgain { return ctx.BadRequest(rw, c.T("reset.complete.mismatch")) } // validate the key again resetToken, err := getToken(db, form.ValidKey.Key) if err != nil || !resetToken.Valid() { return ctx.BadRequest(rw, c.T("reset.token.invalid_key")) } // get user from db u, err := user.GetById(db, resetToken.UserId) if err != nil { return ctx.InternalServerError(rw, c.T("reset.complete.user_not_found")) } // encode user password err = u.Password.Encode(form.Password) if err != nil { return ctx.InternalServerError(rw, c.T("reset.complete.could_not_change_password")) } // change user data in database err = user.Update(db, u) if err != nil { return ctx.InternalServerError(rw, c.T("reset.complete.could_not_change_password")) } // invalidate token err = updateToken(db, resetToken) if err != nil { log.Errorf("Unable to invalidate token: %s", err) } return ctx.OK(rw, u) }
func (r *Profile) GET(c *ctx.Context, rw http.ResponseWriter, req *http.Request) error { db := c.Vars["db"].(*pg.Session) // get user id from current token userId, found := c.Token.Claims["uid"] if !found { return ctx.BadRequest(rw, c.T("user.me.could_not_extract")) } // query user data user, err := GetById(db, int64(userId.(float64))) if err != nil { log.Errorf("Could not query user: %v", err) return ctx.InternalServerError(rw, c.T("user.me.could_not_query")) } // return user data return ctx.OK(rw, user) }
func (r *ValidateKey) POST(c *ctx.Context, rw http.ResponseWriter, req *http.Request) error { db := c.Vars["db"].(*pg.Session) // decode request data var form struct { Key string `json:"key"` } err := json.NewDecoder(req.Body).Decode(&form) if err != nil { return ctx.BadRequest(rw, c.T("reset.validate.unable_to_validate_key")) } resetToken, err := getToken(db, form.Key) if err != nil || !resetToken.Valid() { return ctx.BadRequest(rw, c.T("reset.validate.invalid_key")) } return ctx.OK(rw, ValidKey{resetToken.UserId, form.Key}) }
func (lr *Resource) PUT(c *ctx.Context, rw http.ResponseWriter, req *http.Request) error { vars := mux.Vars(req) id := vars["id"] db := c.Vars["db"].(*pg.Session) // decode request data var form = &struct { Name string `json:"name"` StaticURL string `json:"staticURL"` StaticPath string `json:"staticPath"` }{} err := json.NewDecoder(req.Body).Decode(form) if err != nil { log.Errorf("Could not parse request data: %s", err) return ctx.BadRequest(rw, c.T("location.api.could_not_parse_request_data")) } // get location from database var entity pg.Entity entity, err = db.FindOne(&Model{}, "id = $1", id) if err != nil { log.Errorf("Could not query location id %s: %v", id, err) return ctx.BadRequest(rw, c.T("location.api.could_not_query_location")) } location := entity.(*Model) // update the location location.Name = form.Name location.StaticURL = form.StaticURL location.StaticPath = form.StaticPath err = db.Update(location) if err != nil { log.Errorf("Could not edit location %s: %v", form.Name, err) return ctx.BadRequest(rw, c.T("location.api.could_not_edit_location")) } return ctx.OK(rw, location) }
func (r *Profile) PUT(c *ctx.Context, rw http.ResponseWriter, req *http.Request) error { db := c.Vars["db"].(*pg.Session) // decode request data var form struct { Id null.Int `json:"id"` Email string `json:"email"` JsonData UserJsonData `json:"jsonData,omitempty"` } err := json.NewDecoder(req.Body).Decode(&form) if err != nil { return ctx.BadRequest(rw, c.T("user.me.could_not_decode_profile_data")) } // query user data u, err := GetById(db, form.Id.Int64) if err != nil { log.Errorf("Could not query user: %v", err) return ctx.InternalServerError(rw, c.T("user.me.could_not_query")) } // get the json data from user jsonData, err := u.DecodeJsonData() if err != nil { return ctx.BadRequest(rw, c.T("user.me.could_not_decode_json_data")) } // update the user u.Email = form.Email jsonData.FirstName = form.JsonData.FirstName jsonData.LastName = form.JsonData.LastName u.JsonData.Encode(jsonData) Update(db, u) // return user data return ctx.OK(rw, u) }