func (c ApiController) PostUploadBundle(token string, description string, file *os.File) revel.Result { app, err := models.GetAppByApiToken(Dbm, token) if err != nil { c.Response.Status = http.StatusUnauthorized return c.RenderJson(c.NewJsonResponseUploadBundle(c.Response.Status, []string{"Token is invalid."}, nil)) } var filename string if _, ok := c.Params.Files["file"]; ok { filename = c.Params.Files["file"][0].Filename } extStr := filepath.Ext(filename) ext := models.BundleFileExtension(extStr) isValidExt := ext.IsValid() c.Validation.Required(file != nil).Message("File is required.") c.Validation.Required(isValidExt).Message("File extension is not valid.") if c.Validation.HasErrors() { var errors []string for _, err := range c.Validation.Errors { errors = append(errors, err.String()) } c.Response.Status = http.StatusBadRequest return c.RenderJson(c.NewJsonResponseUploadBundle(c.Response.Status, errors, nil)) } bundle := &models.Bundle{ PlatformType: ext.PlatformType(), Description: description, File: file, } if err := app.CreateBundle(Dbm, c.GoogleService, bundle); err != nil { if bperr, ok := err.(*models.BundleParseError); ok { c.Response.Status = http.StatusInternalServerError return c.RenderJson(c.NewJsonResponseUploadBundle(c.Response.Status, []string{bperr.Error()}, nil)) } c.Response.Status = http.StatusInternalServerError return c.RenderJson(c.NewJsonResponseUploadBundle(c.Response.Status, []string{err.Error()}, nil)) } content, err := bundle.JsonResponse(&c) if err != nil { c.Response.Status = http.StatusInternalServerError return c.RenderJson(c.NewJsonResponseUploadBundle(c.Response.Status, []string{err.Error()}, nil)) } c.Response.Status = http.StatusOK return c.RenderJson(c.NewJsonResponseUploadBundle(c.Response.Status, []string{"Bundle is created!"}, content)) }
func (c AppControllerWithValidation) PostCreateBundle(appId int, bundle models.Bundle, file *os.File) revel.Result { if appId != bundle.AppId { c.Flash.Error("Parameter is invalid.") c.Redirect(routes.AppControllerWithValidation.GetApp(appId)) } var filename string if _, ok := c.Params.Files["file"]; ok { filename = c.Params.Files["file"][0].Filename } extStr := filepath.Ext(filename) ext := models.BundleFileExtension(extStr) isValidExt := ext.IsValid() c.Validation.Required(file != nil).Message("File is required.") c.Validation.Required(isValidExt).Message("File extension is not valid.") if c.Validation.HasErrors() { c.Validation.Keep() c.FlashParams() return c.Redirect(routes.AppControllerWithValidation.GetCreateBundle(appId)) } bundle.File = file bundle.PlatformType = ext.PlatformType() if err := c.App.CreateBundle(Dbm, c.GoogleService, &bundle); err != nil { if bperr, ok := err.(*models.BundleParseError); ok { c.Flash.Error(bperr.Error()) return c.Redirect(routes.AppControllerWithValidation.GetCreateBundle(appId)) } panic(err) } if err := c.createAudit(models.ResourceBundle, bundle.Id, models.ActionCreate); err != nil { panic(err) } c.Flash.Success("Created!") return c.Redirect(routes.BundleControllerWithValidation.GetBundle(bundle.Id)) }