diff options
Diffstat (limited to 'api/admin.go')
-rw-r--r-- | api/admin.go | 76 |
1 files changed, 76 insertions, 0 deletions
diff --git a/api/admin.go b/api/admin.go index 7b041619e..3ed2bee7a 100644 --- a/api/admin.go +++ b/api/admin.go @@ -35,6 +35,8 @@ func InitAdmin(r *mux.Router) { sr.Handle("/save_compliance_report", ApiUserRequired(saveComplianceReport)).Methods("POST") sr.Handle("/compliance_reports", ApiUserRequired(getComplianceReports)).Methods("GET") sr.Handle("/download_compliance_report/{id:[A-Za-z0-9]+}", ApiUserRequired(downloadComplianceReport)).Methods("GET") + sr.Handle("/upload_brand_image", ApiAdminSystemRequired(uploadBrandImage)).Methods("POST") + sr.Handle("/get_brand_image", ApiAppHandlerTrustRequester(getBrandImage)).Methods("GET") } func getLogs(c *Context, w http.ResponseWriter, r *http.Request) { @@ -422,3 +424,77 @@ func getAnalytics(c *Context, w http.ResponseWriter, r *http.Request) { } } + +func uploadBrandImage(c *Context, w http.ResponseWriter, r *http.Request) { + if len(utils.Cfg.FileSettings.DriverName) == 0 { + c.Err = model.NewLocAppError("uploadBrandImage", "api.admin.upload_brand_image.storage.app_error", nil, "") + c.Err.StatusCode = http.StatusNotImplemented + return + } + + if r.ContentLength > model.MAX_FILE_SIZE { + c.Err = model.NewLocAppError("uploadBrandImage", "api.admin.upload_brand_image.too_large.app_error", nil, "") + c.Err.StatusCode = http.StatusRequestEntityTooLarge + return + } + + if err := r.ParseMultipartForm(model.MAX_FILE_SIZE); err != nil { + c.Err = model.NewLocAppError("uploadBrandImage", "api.admin.upload_brand_image.parse.app_error", nil, "") + return + } + + m := r.MultipartForm + + imageArray, ok := m.File["image"] + if !ok { + c.Err = model.NewLocAppError("uploadBrandImage", "api.admin.upload_brand_image.no_file.app_error", nil, "") + c.Err.StatusCode = http.StatusBadRequest + return + } + + if len(imageArray) <= 0 { + c.Err = model.NewLocAppError("uploadBrandImage", "api.admin.upload_brand_image.array.app_error", nil, "") + c.Err.StatusCode = http.StatusBadRequest + return + } + + brandInterface := einterfaces.GetBrandInterface() + if brandInterface == nil { + c.Err = model.NewLocAppError("uploadBrandImage", "api.admin.upload_brand_image.not_available.app_error", nil, "") + c.Err.StatusCode = http.StatusNotImplemented + return + } + + if err := brandInterface.SaveBrandImage(imageArray[0]); err != nil { + c.Err = err + return + } + + c.LogAudit("") + + rdata := map[string]string{} + rdata["status"] = "OK" + w.Write([]byte(model.MapToJson(rdata))) +} + +func getBrandImage(c *Context, w http.ResponseWriter, r *http.Request) { + if len(utils.Cfg.FileSettings.DriverName) == 0 { + c.Err = model.NewLocAppError("getBrandImage", "api.admin.get_brand_image.storage.app_error", nil, "") + c.Err.StatusCode = http.StatusNotImplemented + return + } + + brandInterface := einterfaces.GetBrandInterface() + if brandInterface == nil { + c.Err = model.NewLocAppError("getBrandImage", "api.admin.get_brand_image.not_available.app_error", nil, "") + c.Err.StatusCode = http.StatusNotImplemented + return + } + + if img, err := brandInterface.GetBrandImage(); err != nil { + w.Write(nil) + } else { + w.Header().Set("Content-Type", "image/png") + w.Write(img) + } +} |