diff options
Diffstat (limited to 'model')
-rw-r--r-- | model/client.go | 10 | ||||
-rw-r--r-- | model/preference.go | 19 | ||||
-rw-r--r-- | model/preference_test.go | 29 | ||||
-rw-r--r-- | model/preferences.go | 2 |
4 files changed, 31 insertions, 29 deletions
diff --git a/model/client.go b/model/client.go index 304593c5c..77b0aaad2 100644 --- a/model/client.go +++ b/model/client.go @@ -853,10 +853,18 @@ func (c *Client) SetPreferences(preferences *Preferences) (*Result, *AppError) { } } -func (c *Client) GetPreferencesByName(category string, name string) (*Result, *AppError) { +func (c *Client) GetPreference(category string, name string) (*Result, *AppError) { if r, err := c.DoApiGet("/preferences/"+category+"/"+name, "", ""); err != nil { return nil, err } else { + return &Result{r.Header.Get(HEADER_REQUEST_ID), r.Header.Get(HEADER_ETAG_SERVER), PreferenceFromJson(r.Body)}, nil + } +} + +func (c *Client) GetPreferenceCategory(category string) (*Result, *AppError) { + if r, err := c.DoApiGet("/preferences/"+category, "", ""); err != nil { + return nil, err + } else { preferences, _ := PreferencesFromJson(r.Body) return &Result{r.Header.Get(HEADER_REQUEST_ID), r.Header.Get(HEADER_ETAG_SERVER), preferences}, nil } diff --git a/model/preference.go b/model/preference.go index 434f55f40..187dbe848 100644 --- a/model/preference.go +++ b/model/preference.go @@ -9,17 +9,15 @@ import ( ) const ( - PREFERENCE_CATEGORY_DIRECT_CHANNELS = "direct_channels" - PREFERENCE_CATEGORY_TEST = "test" // do not use, just for testing uniqueness while there's only one real category - PREFERENCE_NAME_SHOW = "show" - PREFERENCE_NAME_TEST = "test" // do not use, just for testing uniqueness while there's only one real name + PREFERENCE_CATEGORY_DIRECT_CHANNEL_SHOW = "direct_channel_show" + PREFERENCE_CATEGORY_TEST = "test" // do not use, just for testing uniqueness while there's only one real category + PREFERENCE_NAME_TEST = "test" // do not use, just for testing while there's no constant name ) type Preference struct { UserId string `json:"user_id"` Category string `json:"category"` Name string `json:"name"` - AltId string `json:"alt_id"` Value string `json:"value"` } @@ -52,14 +50,11 @@ func (o *Preference) IsValid() *AppError { return NewAppError("Preference.IsValid", "Invalid category", "category="+o.Category) } - if len(o.Name) == 0 || len(o.Name) > 32 || !IsPreferenceNameValid(o.Name) { + // name can either be a valid constant or an id + if len(o.Name) == 0 || len(o.Name) > 32 || !(len(o.Name) == 26 || IsPreferenceNameValid(o.Name)) { return NewAppError("Preference.IsValid", "Invalid name", "name="+o.Name) } - if o.AltId != "" && len(o.AltId) != 26 { - return NewAppError("Preference.IsValid", "Invalid alternate id", "altId="+o.AltId) - } - if len(o.Value) > 128 { return NewAppError("Preference.IsValid", "Value is too long", "value="+o.Value) } @@ -68,9 +63,9 @@ func (o *Preference) IsValid() *AppError { } func IsPreferenceCategoryValid(category string) bool { - return category == PREFERENCE_CATEGORY_DIRECT_CHANNELS || category == PREFERENCE_CATEGORY_TEST + return category == PREFERENCE_CATEGORY_DIRECT_CHANNEL_SHOW || category == PREFERENCE_CATEGORY_TEST } func IsPreferenceNameValid(name string) bool { - return name == PREFERENCE_NAME_SHOW || name == PREFERENCE_NAME_TEST + return name == PREFERENCE_NAME_TEST } diff --git a/model/preference_test.go b/model/preference_test.go index bfbe81f39..170784c1f 100644 --- a/model/preference_test.go +++ b/model/preference_test.go @@ -9,15 +9,19 @@ import ( ) func TestPreferenceIsValid(t *testing.T) { - preference := Preference{} + preference := Preference{ + UserId: "1234garbage", + Category: PREFERENCE_CATEGORY_DIRECT_CHANNEL_SHOW, + Name: PREFERENCE_NAME_TEST, + } if err := preference.IsValid(); err == nil { t.Fatal() } preference.UserId = NewId() - if err := preference.IsValid(); err == nil { - t.Fatal() + if err := preference.IsValid(); err != nil { + t.Fatal(err) } preference.Category = "1234garbage" @@ -25,8 +29,8 @@ func TestPreferenceIsValid(t *testing.T) { t.Fatal() } - preference.Category = PREFERENCE_CATEGORY_DIRECT_CHANNELS - if err := preference.IsValid(); err == nil { + preference.Category = PREFERENCE_CATEGORY_DIRECT_CHANNEL_SHOW + if err := preference.IsValid(); err != nil { t.Fatal() } @@ -35,18 +39,18 @@ func TestPreferenceIsValid(t *testing.T) { t.Fatal() } - preference.Name = PREFERENCE_NAME_SHOW + preference.Name = NewId() if err := preference.IsValid(); err != nil { t.Fatal() } - preference.AltId = "1234garbage" - if err := preference.IsValid(); err == nil { + preference.Name = PREFERENCE_NAME_TEST + if err := preference.IsValid(); err != nil { t.Fatal() } - preference.AltId = NewId() - if err := preference.IsValid(); err != nil { + preference.Value = strings.Repeat("01234567890", 20) + if err := preference.IsValid(); err == nil { t.Fatal() } @@ -54,9 +58,4 @@ func TestPreferenceIsValid(t *testing.T) { if err := preference.IsValid(); err != nil { t.Fatal() } - - preference.Value = strings.Repeat("01234567890", 20) - if err := preference.IsValid(); err == nil { - t.Fatal() - } } diff --git a/model/preferences.go b/model/preferences.go index 2c6cbdb98..1ef16151f 100644 --- a/model/preferences.go +++ b/model/preferences.go @@ -8,7 +8,7 @@ import ( "io" ) -type Preferences []*Preference +type Preferences []Preference func (o *Preferences) ToJson() string { b, err := json.Marshal(o) |