-
Notifications
You must be signed in to change notification settings - Fork 5
/
timezones.go
55 lines (42 loc) · 1.43 KB
/
timezones.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
// Copyright (c) 2015-present Mattermost, Inc. All Rights Reserved.
// See License.txt for license information.
package timezones
import (
"encoding/json"
"io/ioutil"
"sync/atomic"
"github.com/mattermost/mattermost-server/utils/fileutils"
)
type Timezones struct {
supportedZones atomic.Value
}
func New(timezonesConfigFile string) *Timezones {
timezones := Timezones{}
if len(timezonesConfigFile) == 0 {
timezonesConfigFile = "timezones.json"
}
var supportedTimezones []string
// Attempt to get timezones from config. Failure results in defaults.
if timezoneFile := fileutils.FindConfigFile(timezonesConfigFile); timezoneFile == "" {
supportedTimezones = DefaultSupportedTimezones
} else if raw, err := ioutil.ReadFile(timezoneFile); err != nil {
supportedTimezones = DefaultSupportedTimezones
} else if err := json.Unmarshal(raw, &supportedTimezones); err != nil {
supportedTimezones = DefaultSupportedTimezones
}
timezones.supportedZones.Store(supportedTimezones)
return &timezones
}
func (t *Timezones) GetSupported() []string {
if supportedZonesValue := t.supportedZones.Load(); supportedZonesValue != nil {
return supportedZonesValue.([]string)
}
return []string{}
}
func DefaultUserTimezone() map[string]string {
defaultTimezone := make(map[string]string)
defaultTimezone["useAutomaticTimezone"] = "true"
defaultTimezone["automaticTimezone"] = ""
defaultTimezone["manualTimezone"] = ""
return defaultTimezone
}