Skip to content

Commit 8c78d90

Browse files
committed
refactor: config system
1 parent d3fb4f1 commit 8c78d90

File tree

6 files changed

+33
-24
lines changed

6 files changed

+33
-24
lines changed

api/api.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -38,7 +38,7 @@ func Tcping(c *gin.Context) {
3838
}
3939

4040
func ping(ip string, port string) (status string, msg string) {
41-
timeout := time.Duration(int64(config.GetTimeout()) * int64(time.Millisecond))
41+
timeout := time.Duration(int64(config.Config.GetInt("timeout")) * int64(time.Millisecond))
4242

4343
conn, err := net.DialTimeout("tcp", net.JoinHostPort(ip, port), timeout)
4444
if err != nil {

config.json.example

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
11
{
22
"port": 8080,
3-
"tcpping_timeout": 1000,
3+
"timeout": 1000,
44
}

config/config.go

Lines changed: 11 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -2,27 +2,22 @@ package config
22

33
import "github.com/spf13/viper"
44

5-
var config = viper.New()
5+
var (
6+
Config = viper.New()
7+
apiConfig = &ApiConfig{}
8+
)
69

710
func init() {
8-
config.SetConfigName("config")
9-
config.SetConfigType("json")
10-
config.AddConfigPath("/etc/netstatus-api-go/")
11-
config.AddConfigPath(".")
11+
Config.SetConfigName("Config")
12+
Config.SetConfigType("json")
13+
Config.AddConfigPath("/etc/netstatus-api-go/")
14+
Config.AddConfigPath(".")
1215

13-
config.SetDefault("port", 8080)
14-
config.SetDefault("timeout", 1000)
16+
Config.SetDefault("port", 8080)
17+
Config.SetDefault("timeout", 1000)
1518

16-
err := config.ReadInConfig()
19+
err := Config.Unmarshal(&apiConfig)
1720
if err != nil {
1821
return
1922
}
2023
}
21-
22-
func GetPort() int {
23-
return config.GetInt("port")
24-
}
25-
26-
func GetTimeout() int {
27-
return config.GetInt("timeout")
28-
}

config/model.go

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1 +1,6 @@
11
package config
2+
3+
type ApiConfig struct {
4+
Port int `mapstructure:"port"`
5+
Timeout int `mapstructure:"timeout"`
6+
}

go.mod

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,10 @@
11
module github.com/sspanel-uim/NetStatus-API-Go
22

3-
go 1.22.1
3+
go 1.22.2
44

55
require (
66
github.com/gin-gonic/gin v1.9.1
7+
github.com/spf13/pflag v1.0.5
78
github.com/spf13/viper v1.18.2
89
)
910

@@ -32,7 +33,6 @@ require (
3233
github.com/sourcegraph/conc v0.3.0 // indirect
3334
github.com/spf13/afero v1.11.0 // indirect
3435
github.com/spf13/cast v1.6.0 // indirect
35-
github.com/spf13/pflag v1.0.5 // indirect
3636
github.com/subosito/gotenv v1.6.0 // indirect
3737
github.com/twitchyliquid64/golang-asm v0.15.1 // indirect
3838
github.com/ugorji/go/codec v1.2.11 // indirect

main.go

Lines changed: 13 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -2,18 +2,27 @@ package main
22

33
import (
44
"github.com/gin-gonic/gin"
5+
"github.com/spf13/pflag"
56
"github.com/sspanel-uim/NetStatus-API-Go/api"
67
"github.com/sspanel-uim/NetStatus-API-Go/config"
78
"strconv"
89
)
910

1011
func main() {
12+
configFilePath := pflag.String("config", "", "config file path")
13+
pflag.Parse()
14+
15+
if *configFilePath != "" {
16+
config.Config.AddConfigPath(*configFilePath)
17+
}
18+
1119
gin.SetMode(gin.ReleaseMode)
12-
r := gin.Default()
13-
r.Group("v1").GET("/tcping", api.Tcping)
14-
port := strconv.Itoa(config.GetPort())
1520

16-
err := r.Run(":" + port)
21+
router := gin.Default()
22+
router.Group("v1").GET("/tcping", api.Tcping)
23+
24+
port := strconv.Itoa(config.Config.GetInt("port"))
25+
err := router.Run(":" + port)
1726
if err != nil {
1827
return
1928
}

0 commit comments

Comments
 (0)