github.com/vnforks/kid/v5@v5.22.1-0.20200408055009-b89d99c65676/model/reaction.go (about) 1 // Copyright (c) 2015-present Mattermost, Inc. All Rights Reserved. 2 // See LICENSE.txt for license information. 3 4 package model 5 6 import ( 7 "encoding/json" 8 "io" 9 "net/http" 10 "regexp" 11 ) 12 13 type Reaction struct { 14 UserId string `json:"user_id"` 15 PostId string `json:"post_id"` 16 EmojiName string `json:"emoji_name"` 17 CreateAt int64 `json:"create_at"` 18 } 19 20 func (o *Reaction) ToJson() string { 21 b, _ := json.Marshal(o) 22 return string(b) 23 } 24 25 func ReactionFromJson(data io.Reader) *Reaction { 26 var o Reaction 27 28 if err := json.NewDecoder(data).Decode(&o); err != nil { 29 return nil 30 } else { 31 return &o 32 } 33 } 34 35 func ReactionsToJson(o []*Reaction) string { 36 b, _ := json.Marshal(o) 37 return string(b) 38 } 39 40 func MapPostIdToReactionsToJson(o map[string][]*Reaction) string { 41 b, _ := json.Marshal(o) 42 return string(b) 43 } 44 45 func MapPostIdToReactionsFromJson(data io.Reader) map[string][]*Reaction { 46 decoder := json.NewDecoder(data) 47 48 var objmap map[string][]*Reaction 49 if err := decoder.Decode(&objmap); err != nil { 50 return make(map[string][]*Reaction) 51 } else { 52 return objmap 53 } 54 } 55 56 func ReactionsFromJson(data io.Reader) []*Reaction { 57 var o []*Reaction 58 59 if err := json.NewDecoder(data).Decode(&o); err != nil { 60 return nil 61 } else { 62 return o 63 } 64 } 65 66 func (o *Reaction) IsValid() *AppError { 67 if len(o.UserId) != 26 { 68 return NewAppError("Reaction.IsValid", "model.reaction.is_valid.user_id.app_error", nil, "user_id="+o.UserId, http.StatusBadRequest) 69 } 70 71 if len(o.PostId) != 26 { 72 return NewAppError("Reaction.IsValid", "model.reaction.is_valid.post_id.app_error", nil, "post_id="+o.PostId, http.StatusBadRequest) 73 } 74 75 validName := regexp.MustCompile(`^[a-zA-Z0-9\-\+_]+$`) 76 77 if len(o.EmojiName) == 0 || len(o.EmojiName) > EMOJI_NAME_MAX_LENGTH || !validName.MatchString(o.EmojiName) { 78 return NewAppError("Reaction.IsValid", "model.reaction.is_valid.emoji_name.app_error", nil, "emoji_name="+o.EmojiName, http.StatusBadRequest) 79 } 80 81 if o.CreateAt == 0 { 82 return NewAppError("Reaction.IsValid", "model.reaction.is_valid.create_at.app_error", nil, "", http.StatusBadRequest) 83 } 84 85 return nil 86 } 87 88 func (o *Reaction) PreSave() { 89 if o.CreateAt == 0 { 90 o.CreateAt = GetMillis() 91 } 92 }