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  }