summaryrefslogtreecommitdiffstats
path: root/app/emoji.go
diff options
context:
space:
mode:
authorJesús Espino <jespinog@gmail.com>2018-09-24 09:22:29 +0200
committerSudheer <sudheer.105@gmail.com>2018-09-24 12:52:29 +0530
commit8898d7aab9565c48162c5cf16bfdf2f6f74cdb1e (patch)
tree33badb2352d3917cb40ec5cac402768e2b15cff8 /app/emoji.go
parent74c92237c04ff290770469be516102c896710e12 (diff)
downloadchat-8898d7aab9565c48162c5cf16bfdf2f6f74cdb1e.tar.gz
chat-8898d7aab9565c48162c5cf16bfdf2f6f74cdb1e.tar.bz2
chat-8898d7aab9565c48162c5cf16bfdf2f6f74cdb1e.zip
Idiomatic error handling for app/e*.go (#9426)
Diffstat (limited to 'app/emoji.go')
-rw-r--r--app/emoji.go136
1 files changed, 73 insertions, 63 deletions
diff --git a/app/emoji.go b/app/emoji.go
index 864dc31bf..c0eda18a1 100644
--- a/app/emoji.go
+++ b/app/emoji.go
@@ -49,29 +49,33 @@ func (a *App) CreateEmoji(sessionUserId string, emoji *model.Emoji, multiPartIma
return nil, model.NewAppError("createEmoji", "api.emoji.create.duplicate.app_error", nil, "", http.StatusBadRequest)
}
- if imageData := multiPartImageData.File["image"]; len(imageData) == 0 {
+ imageData := multiPartImageData.File["image"]
+ if len(imageData) == 0 {
err := model.NewAppError("Context", "api.context.invalid_body_param.app_error", map[string]interface{}{"Name": "createEmoji"}, "", http.StatusBadRequest)
return nil, err
- } else if err := a.UploadEmojiImage(emoji.Id, imageData[0]); err != nil {
+ }
+
+ if err := a.UploadEmojiImage(emoji.Id, imageData[0]); err != nil {
return nil, err
}
- if result := <-a.Srv.Store.Emoji().Save(emoji); result.Err != nil {
+ result := <-a.Srv.Store.Emoji().Save(emoji)
+ if result.Err != nil {
return nil, result.Err
- } else {
- message := model.NewWebSocketEvent(model.WEBSOCKET_EVENT_EMOJI_ADDED, "", "", "", nil)
- message.Add("emoji", emoji.ToJson())
- a.Publish(message)
- return result.Data.(*model.Emoji), nil
}
+
+ message := model.NewWebSocketEvent(model.WEBSOCKET_EVENT_EMOJI_ADDED, "", "", "", nil)
+ message.Add("emoji", emoji.ToJson())
+ a.Publish(message)
+ return result.Data.(*model.Emoji), nil
}
func (a *App) GetEmojiList(page, perPage int, sort string) ([]*model.Emoji, *model.AppError) {
- if result := <-a.Srv.Store.Emoji().GetList(page*perPage, perPage, sort); result.Err != nil {
+ result := <-a.Srv.Store.Emoji().GetList(page*perPage, perPage, sort)
+ if result.Err != nil {
return nil, result.Err
- } else {
- return result.Data.([]*model.Emoji), nil
}
+ return result.Data.([]*model.Emoji), nil
}
func (a *App) UploadEmojiImage(id string, imageData *multipart.FileHeader) *model.AppError {
@@ -85,41 +89,52 @@ func (a *App) UploadEmojiImage(id string, imageData *multipart.FileHeader) *mode
io.Copy(buf, file)
// make sure the file is an image and is within the required dimensions
- if config, _, err := image.DecodeConfig(bytes.NewReader(buf.Bytes())); err != nil {
+ config, _, err := image.DecodeConfig(bytes.NewReader(buf.Bytes()))
+ if err != nil {
return model.NewAppError("uploadEmojiImage", "api.emoji.upload.image.app_error", nil, "", http.StatusBadRequest)
- } else if config.Width > MaxEmojiOriginalWidth || config.Height > MaxEmojiOriginalHeight {
+ }
+
+ if config.Width > MaxEmojiOriginalWidth || config.Height > MaxEmojiOriginalHeight {
return model.NewAppError("uploadEmojiImage", "api.emoji.upload.large_image.too_large.app_error", map[string]interface{}{
"MaxWidth": MaxEmojiOriginalWidth,
"MaxHeight": MaxEmojiOriginalHeight,
}, "", http.StatusBadRequest)
- } else if config.Width > MaxEmojiWidth || config.Height > MaxEmojiHeight {
+ }
+
+ if config.Width > MaxEmojiWidth || config.Height > MaxEmojiHeight {
data := buf.Bytes()
newbuf := bytes.NewBuffer(nil)
- if info, err := model.GetInfoForBytes(imageData.Filename, data); err != nil {
+ info, err := model.GetInfoForBytes(imageData.Filename, data)
+ if err != nil {
return err
- } else if info.MimeType == "image/gif" {
- if gif_data, err := gif.DecodeAll(bytes.NewReader(data)); err != nil {
+ }
+
+ if info.MimeType == "image/gif" {
+ gif_data, err := gif.DecodeAll(bytes.NewReader(data))
+ if err != nil {
return model.NewAppError("uploadEmojiImage", "api.emoji.upload.large_image.gif_decode_error", nil, "", http.StatusBadRequest)
- } else {
- resized_gif := resizeEmojiGif(gif_data)
- if err := gif.EncodeAll(newbuf, resized_gif); err != nil {
- return model.NewAppError("uploadEmojiImage", "api.emoji.upload.large_image.gif_encode_error", nil, "", http.StatusBadRequest)
- }
- if _, err := a.WriteFile(newbuf, getEmojiImagePath(id)); err != nil {
- return err
- }
+ }
+
+ resized_gif := resizeEmojiGif(gif_data)
+ if err := gif.EncodeAll(newbuf, resized_gif); err != nil {
+ return model.NewAppError("uploadEmojiImage", "api.emoji.upload.large_image.gif_encode_error", nil, "", http.StatusBadRequest)
+ }
+
+ if _, err := a.WriteFile(newbuf, getEmojiImagePath(id)); err != nil {
+ return err
}
} else {
- if img, _, err := image.Decode(bytes.NewReader(data)); err != nil {
+ img, _, err := image.Decode(bytes.NewReader(data))
+ if err != nil {
return model.NewAppError("uploadEmojiImage", "api.emoji.upload.large_image.decode_error", nil, "", http.StatusBadRequest)
- } else {
- resized_image := resizeEmoji(img, config.Width, config.Height)
- if err := png.Encode(newbuf, resized_image); err != nil {
- return model.NewAppError("uploadEmojiImage", "api.emoji.upload.large_image.encode_error", nil, "", http.StatusBadRequest)
- }
- if _, err := a.WriteFile(newbuf, getEmojiImagePath(id)); err != nil {
- return err
- }
+ }
+
+ resized_image := resizeEmoji(img, config.Width, config.Height)
+ if err := png.Encode(newbuf, resized_image); err != nil {
+ return model.NewAppError("uploadEmojiImage", "api.emoji.upload.large_image.encode_error", nil, "", http.StatusBadRequest)
+ }
+ if _, err := a.WriteFile(newbuf, getEmojiImagePath(id)); err != nil {
+ return err
}
}
}
@@ -147,11 +162,11 @@ func (a *App) GetEmoji(emojiId string) (*model.Emoji, *model.AppError) {
return nil, model.NewAppError("GetEmoji", "api.emoji.storage.app_error", nil, "", http.StatusNotImplemented)
}
- if result := <-a.Srv.Store.Emoji().Get(emojiId, false); result.Err != nil {
+ result := <-a.Srv.Store.Emoji().Get(emojiId, false)
+ if result.Err != nil {
return nil, result.Err
- } else {
- return result.Data.(*model.Emoji), nil
}
+ return result.Data.(*model.Emoji), nil
}
func (a *App) GetEmojiByName(emojiName string) (*model.Emoji, *model.AppError) {
@@ -163,32 +178,30 @@ func (a *App) GetEmojiByName(emojiName string) (*model.Emoji, *model.AppError) {
return nil, model.NewAppError("GetEmoji", "api.emoji.storage.app_error", nil, "", http.StatusNotImplemented)
}
- if result := <-a.Srv.Store.Emoji().GetByName(emojiName); result.Err != nil {
+ result := <-a.Srv.Store.Emoji().GetByName(emojiName)
+ if result.Err != nil {
return nil, result.Err
- } else {
- return result.Data.(*model.Emoji), nil
}
+ return result.Data.(*model.Emoji), nil
}
-func (a *App) GetEmojiImage(emojiId string) (imageByte []byte, imageType string, err *model.AppError) {
- if result := <-a.Srv.Store.Emoji().Get(emojiId, true); result.Err != nil {
+func (a *App) GetEmojiImage(emojiId string) ([]byte, string, *model.AppError) {
+ result := <-a.Srv.Store.Emoji().Get(emojiId, true)
+ if result.Err != nil {
return nil, "", result.Err
- } else {
- var img []byte
-
- if data, err := a.ReadFile(getEmojiImagePath(emojiId)); err != nil {
- return nil, "", model.NewAppError("getEmojiImage", "api.emoji.get_image.read.app_error", nil, err.Error(), http.StatusNotFound)
- } else {
- img = data
- }
+ }
- _, imageType, err := image.DecodeConfig(bytes.NewReader(img))
- if err != nil {
- return nil, "", model.NewAppError("getEmojiImage", "api.emoji.get_image.decode.app_error", nil, err.Error(), http.StatusInternalServerError)
- }
+ img, appErr := a.ReadFile(getEmojiImagePath(emojiId))
+ if appErr != nil {
+ return nil, "", model.NewAppError("getEmojiImage", "api.emoji.get_image.read.app_error", nil, appErr.Error(), http.StatusNotFound)
+ }
- return img, imageType, nil
+ _, imageType, err := image.DecodeConfig(bytes.NewReader(img))
+ if err != nil {
+ return nil, "", model.NewAppError("getEmojiImage", "api.emoji.get_image.decode.app_error", nil, err.Error(), http.StatusInternalServerError)
}
+
+ return img, imageType, nil
}
func (a *App) SearchEmoji(name string, prefixOnly bool, limit int) ([]*model.Emoji, *model.AppError) {
@@ -196,11 +209,11 @@ func (a *App) SearchEmoji(name string, prefixOnly bool, limit int) ([]*model.Emo
return nil, model.NewAppError("SearchEmoji", "api.emoji.disabled.app_error", nil, "", http.StatusNotImplemented)
}
- if result := <-a.Srv.Store.Emoji().Search(name, prefixOnly, limit); result.Err != nil {
+ result := <-a.Srv.Store.Emoji().Search(name, prefixOnly, limit)
+ if result.Err != nil {
return nil, result.Err
- } else {
- return result.Data.([]*model.Emoji), nil
}
+ return result.Data.([]*model.Emoji), nil
}
func resizeEmojiGif(gifImg *gif.GIF) *gif.GIF {
@@ -231,13 +244,10 @@ func resizeEmoji(img image.Image, width int, height int) image.Image {
emojiWidth := float64(width)
emojiHeight := float64(height)
- var emoji image.Image
if emojiHeight <= MaxEmojiHeight && emojiWidth <= MaxEmojiWidth {
- emoji = img
- } else {
- emoji = imaging.Fit(img, MaxEmojiWidth, MaxEmojiHeight, imaging.Lanczos)
+ return img
}
- return emoji
+ return imaging.Fit(img, MaxEmojiWidth, MaxEmojiHeight, imaging.Lanczos)
}
func imageToPaletted(img image.Image) *image.Paletted {