add a empty fake config Initialize AppConfig to avoid nil pointer runtime error.
Showing
3 changed files
with
60 additions
and
1 deletions
| ... | @@ -192,7 +192,7 @@ func Run() { | ... | @@ -192,7 +192,7 @@ func Run() { |
| 192 | } | 192 | } |
| 193 | 193 | ||
| 194 | if SessionOn { | 194 | if SessionOn { |
| 195 | var err error | 195 | var err error |
| 196 | sessionConfig := AppConfig.String("sessionConfig") | 196 | sessionConfig := AppConfig.String("sessionConfig") |
| 197 | if sessionConfig == "" { | 197 | if sessionConfig == "" { |
| 198 | sessionConfig = `{"cookieName":"` + SessionName + `",` + | 198 | sessionConfig = `{"cookieName":"` + SessionName + `",` + | ... | ... |
| ... | @@ -141,6 +141,7 @@ func init() { | ... | @@ -141,6 +141,7 @@ func init() { |
| 141 | func ParseConfig() (err error) { | 141 | func ParseConfig() (err error) { |
| 142 | AppConfig, err = config.NewConfig("ini", AppConfigPath) | 142 | AppConfig, err = config.NewConfig("ini", AppConfigPath) |
| 143 | if err != nil { | 143 | if err != nil { |
| 144 | AppConfig = config.NewFakeConfig() | ||
| 144 | return err | 145 | return err |
| 145 | } else { | 146 | } else { |
| 146 | HttpAddr = AppConfig.String("HttpAddr") | 147 | HttpAddr = AppConfig.String("HttpAddr") | ... | ... |
config/fake.go
0 → 100644
| 1 | package config | ||
| 2 | |||
| 3 | import ( | ||
| 4 | "errors" | ||
| 5 | "strconv" | ||
| 6 | "strings" | ||
| 7 | ) | ||
| 8 | |||
| 9 | type fakeConfigContainer struct { | ||
| 10 | data map[string]string | ||
| 11 | } | ||
| 12 | |||
| 13 | func (c *fakeConfigContainer) getData(key string) string { | ||
| 14 | key = strings.ToLower(key) | ||
| 15 | return c.data[key] | ||
| 16 | } | ||
| 17 | |||
| 18 | func (c *fakeConfigContainer) Set(key, val string) error { | ||
| 19 | key = strings.ToLower(key) | ||
| 20 | c.data[key] = val | ||
| 21 | return nil | ||
| 22 | } | ||
| 23 | |||
| 24 | func (c *fakeConfigContainer) String(key string) string { | ||
| 25 | return c.getData(key) | ||
| 26 | } | ||
| 27 | |||
| 28 | func (c *fakeConfigContainer) Int(key string) (int, error) { | ||
| 29 | return strconv.Atoi(c.getData(key)) | ||
| 30 | } | ||
| 31 | |||
| 32 | func (c *fakeConfigContainer) Int64(key string) (int64, error) { | ||
| 33 | return strconv.ParseInt(c.getData(key), 10, 64) | ||
| 34 | } | ||
| 35 | |||
| 36 | func (c *fakeConfigContainer) Bool(key string) (bool, error) { | ||
| 37 | return strconv.ParseBool(c.getData(key)) | ||
| 38 | } | ||
| 39 | |||
| 40 | func (c *fakeConfigContainer) Float(key string) (float64, error) { | ||
| 41 | return strconv.ParseFloat(c.getData(key), 64) | ||
| 42 | } | ||
| 43 | |||
| 44 | func (c *fakeConfigContainer) DIY(key string) (interface{}, error) { | ||
| 45 | key = strings.ToLower(key) | ||
| 46 | if v, ok := c.data[key]; ok { | ||
| 47 | return v, nil | ||
| 48 | } | ||
| 49 | return nil, errors.New("key not find") | ||
| 50 | } | ||
| 51 | |||
| 52 | var _ ConfigContainer = new(fakeConfigContainer) | ||
| 53 | |||
| 54 | func NewFakeConfig() ConfigContainer { | ||
| 55 | return &fakeConfigContainer{ | ||
| 56 | data: make(map[string]string), | ||
| 57 | } | ||
| 58 | } |
-
Please register or sign in to post a comment