github.com/lologarithm/mattermost-server@v5.3.2-0.20181002060438-c82a84ed765b+incompatible/model/service_terms.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 "fmt" 9 "io" 10 "net/http" 11 "unicode/utf8" 12 ) 13 14 // we only ever need the latest version of service terms 15 const SERVICE_TERMS_CACHE_SIZE = 1 16 17 type ServiceTerms struct { 18 Id string `json:"id"` 19 CreateAt int64 `json:"create_at"` 20 UserId string `json:"user_id"` 21 Text string `json:"text"` 22 } 23 24 func (t *ServiceTerms) IsValid() *AppError { 25 if len(t.Id) != 26 { 26 return InvalidServiceTermsError("id", "") 27 } 28 29 if t.CreateAt == 0 { 30 return InvalidServiceTermsError("create_at", t.Id) 31 } 32 33 if len(t.UserId) != 26 { 34 return InvalidServiceTermsError("user_id", t.Id) 35 } 36 37 if utf8.RuneCountInString(t.Text) > POST_MESSAGE_MAX_RUNES_V2 { 38 return InvalidServiceTermsError("text", t.Id) 39 } 40 41 return nil 42 } 43 44 func (t *ServiceTerms) ToJson() string { 45 b, _ := json.Marshal(t) 46 return string(b) 47 } 48 49 func ServiceTermsFromJson(data io.Reader) *ServiceTerms { 50 var serviceTerms *ServiceTerms 51 json.NewDecoder(data).Decode(&serviceTerms) 52 return serviceTerms 53 } 54 55 func InvalidServiceTermsError(fieldName string, serviceTermsId string) *AppError { 56 id := fmt.Sprintf("model.service_terms.is_valid.%s.app_error", fieldName) 57 details := "" 58 if serviceTermsId != "" { 59 details = "service_terms_id=" + serviceTermsId 60 } 61 return NewAppError("ServiceTerms.IsValid", id, map[string]interface{}{"MaxLength": POST_MESSAGE_MAX_RUNES_V2}, details, http.StatusBadRequest) 62 } 63 64 func (t *ServiceTerms) PreSave() { 65 if t.Id == "" { 66 t.Id = NewId() 67 } 68 69 t.CreateAt = GetMillis() 70 }