func (r *Resource) POST(c *ctx.Context, rw http.ResponseWriter, req *http.Request) error { reader, err := req.MultipartReader() if err != nil { return ctx.BadRequest(rw, c.T("media.uploadresource.could_not_upload_file")) } var tempFile *os.File for { part, err := reader.NextPart() if err == io.EOF { break } tempFile, err = ioutil.TempFile(os.TempDir(), "spa") if err != nil { return ctx.InternalServerError(rw, c.T("media.uploadresource.could_not_create_temp_file")) } defer tempFile.Close() _, err = io.Copy(tempFile, part) if err != nil { break } } return ctx.Created(rw, tempFile.Name()) }
func (r *Collection) POST(c *ctx.Context, rw http.ResponseWriter, req *http.Request) error { 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")) } // create new mediatype mediatype := &Model{ Name: form.Name, } err = db.Create(mediatype) if err != nil { log.Errorf("Could not create media type %s: %v", form.Name, err) return ctx.BadRequest(rw, c.T("mediatype.api.could_not_create_media_type")) } return ctx.Created(rw, mediatype) }
func (lc *Collection) POST(c *ctx.Context, rw http.ResponseWriter, req *http.Request) error { 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")) } // create new location loc := &Model{ Name: form.Name, StaticURL: form.StaticURL, StaticPath: form.StaticPath, } err = db.Create(loc) if err != nil { log.Errorf("Could not create location %s: %v", form.Name, err) return ctx.BadRequest(rw, c.T("location.api.could_not_create_location")) } return ctx.Created(rw, loc) }
func (r *SignUp) POST(c *ctx.Context, rw http.ResponseWriter, req *http.Request) error { db := c.Vars["db"].(*pg.Session) // decode request data var form struct { FirstName string `json:"firstName"` LastName string `json:"lastName"` Email string `json:"email"` Password string `json:"password"` PasswordAgain string `json:"passwordAgain"` } 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("user.signup.could_not_parse_request_data")) } // check whether the email address is already taken _, err = user.GetByEmail(db, form.Email) if err == nil { return ctx.BadRequest(rw, c.T("user.signup.email_taken")) } else if err != pg.ERecordNotFound { log.Errorf("Could not query user: %s", err) return ctx.InternalServerError(rw, c.T("user.signup.could_not_query_user")) } // password validation if form.Password != form.PasswordAgain { return ctx.BadRequest(rw, c.T("user.signup.passwords_mismatch")) } // create new user u, err := user.Create( db, form.Email, form.Password, &user.UserJsonData{ FirstName: form.FirstName, LastName: form.LastName, }, ) if err != nil { return ctx.InternalServerError(rw, c.T("user.signup.could_not_create_user")) } // return created user data return ctx.Created(rw, u) }
func (r *Collection) POST(c *ctx.Context, rw http.ResponseWriter, req *http.Request) error { db := c.Vars["db"].(*pg.Session) // 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.mediaresource.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.mediaresource.could_not_locate_the_requested_location")) } // get media type from database mt, 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.mediaresource.could_not_locate_the_requested_media_type")) } // move the uploaded file to the right place var dstPath string dstPath, err = mediaupload.MoveFile(loc, mt, form.Path) if err != nil { log.Errorf("Could not process the uploaded file: %s", err) return ctx.InternalServerError(rw, c.T("media.mediaresource.could_not_process_uploaded_file")) } // create new media media := &Model{ Name: form.Name, MediatypeId: form.MediatypeId, LocationId: form.LocationId, Path: dstPath, } err = db.Create(media) if err != nil { log.Errorf("Could not create media %s: %v", form.Name, err) return ctx.BadRequest(rw, c.T("media.mediaresource.could_not_create_media")) } return ctx.Created(rw, media) }