yanghui
2021-06-28 b568d251606f82968b8103c485a0d70027c1d57e
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
package api
 
import (
    "basic.com/valib/logger.git"
    "bee-config/controller"
    "bee-config/routers"
    "github.com/gin-gonic/gin"
    "net/http"
    "sync"
)
 
var (
    routines []routers.IRouter = []routers.IRouter{}
)
 
func init() {
    routines = append(routines, controller.AddNode, controller.QueryNode)
}
 
func InitRouter(wg *sync.WaitGroup) *http.Server {
    r := gin.Default()
 
    for _, v := range routines {
        methods := v.GetMethods()
        if len(methods) > 0 && len(methods) > 0 {
            for _, m := range methods {
                r.Handle(m, v.GetPath(), v.GetHandles()...)
            }
        }
    }
 
    server := &http.Server{
        Addr:              ":8080",
        Handler:           r,
    }
 
    wg.Add(1)
    go func() {
        if err := server.ListenAndServe(); nil != err {
            if err != http.ErrServerClosed {
                logger.Fatal("InitRouter failed with error:", err)
            } else {
                logger.Info("InitRouter exited by user")
            }
        }
 
        wg.Done()
    }()
 
    return server
}