@@ -9,12 +9,15 @@ import (
9
9
"github.com/ViBiOh/goweb/pkg/delay"
10
10
"github.com/ViBiOh/goweb/pkg/dump"
11
11
"github.com/ViBiOh/goweb/pkg/hello"
12
- "github.com/ViBiOh/httputils/v3/pkg/alcotest"
13
- "github.com/ViBiOh/httputils/v3/pkg/cors"
14
- "github.com/ViBiOh/httputils/v3/pkg/httputils"
15
- "github.com/ViBiOh/httputils/v3/pkg/logger"
16
- "github.com/ViBiOh/httputils/v3/pkg/owasp"
17
- "github.com/ViBiOh/httputils/v3/pkg/prometheus"
12
+ "github.com/ViBiOh/httputils/v4/pkg/alcotest"
13
+ "github.com/ViBiOh/httputils/v4/pkg/cors"
14
+ "github.com/ViBiOh/httputils/v4/pkg/flags"
15
+ "github.com/ViBiOh/httputils/v4/pkg/health"
16
+ "github.com/ViBiOh/httputils/v4/pkg/httputils"
17
+ "github.com/ViBiOh/httputils/v4/pkg/logger"
18
+ "github.com/ViBiOh/httputils/v4/pkg/owasp"
19
+ "github.com/ViBiOh/httputils/v4/pkg/prometheus"
20
+ "github.com/ViBiOh/httputils/v4/pkg/server"
18
21
)
19
22
20
23
const (
@@ -26,7 +29,10 @@ const (
26
29
func main () {
27
30
fs := flag .NewFlagSet ("api" , flag .ExitOnError )
28
31
29
- serverConfig := httputils .Flags (fs , "" )
32
+ appServerConfig := server .Flags (fs , "" )
33
+ promServerConfig := server .Flags (fs , "prometheus" , flags .NewOverride ("Port" , 9090 ), flags .NewOverride ("IdleTimeout" , "10s" ), flags .NewOverride ("ShutdownTimeout" , "5s" ))
34
+ healthConfig := health .Flags (fs , "" )
35
+
30
36
alcotestConfig := alcotest .Flags (fs , "" )
31
37
loggerConfig := logger .Flags (fs , "logger" )
32
38
prometheusConfig := prometheus .Flags (fs , "prometheus" )
@@ -41,11 +47,16 @@ func main() {
41
47
logger .Global (logger .New (loggerConfig ))
42
48
defer logger .Close ()
43
49
50
+ appServer := server .New (appServerConfig )
51
+ promServer := server .New (promServerConfig )
52
+ prometheusApp := prometheus .New (prometheusConfig )
53
+ healthApp := health .New (healthConfig )
54
+
44
55
helloHandler := http .StripPrefix (helloPath , hello .Handler (helloConfig ))
45
56
dumpHandler := http .StripPrefix (dumpPath , dump .Handler ())
46
57
delayHandler := http .StripPrefix (delayPath , delay .Handler ())
47
58
48
- handler := http .HandlerFunc (func (w http.ResponseWriter , r * http.Request ) {
59
+ appHandler := http .HandlerFunc (func (w http.ResponseWriter , r * http.Request ) {
49
60
if strings .HasPrefix (r .URL .Path , helloPath ) {
50
61
helloHandler .ServeHTTP (w , r )
51
62
return
@@ -62,5 +73,9 @@ func main() {
62
73
w .WriteHeader (http .StatusNotFound )
63
74
})
64
75
65
- httputils .New (serverConfig ).ListenAndServe (handler , nil , prometheus .New (prometheusConfig ).Middleware , owasp .New (owaspConfig ).Middleware , cors .New (corsConfig ).Middleware )
76
+ go promServer .Start ("prometheus" , healthApp .End (), prometheusApp .Handler ())
77
+ go appServer .Start ("http" , healthApp .End (), httputils .Handler (appHandler , healthApp , prometheusApp .Middleware , owasp .New (owaspConfig ).Middleware , cors .New (corsConfig ).Middleware ))
78
+
79
+ healthApp .WaitForTermination (appServer .Done ())
80
+ server .GracefulWait (appServer .Done (), promServer .Done ())
66
81
}
0 commit comments