forked from MontFerret/ferret
-
Notifications
You must be signed in to change notification settings - Fork 0
/
server.go
50 lines (42 loc) · 866 Bytes
/
server.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
package server
import (
"context"
"fmt"
"github.com/labstack/echo"
"net/http"
"path/filepath"
)
type (
Settings struct {
Port uint64
Dir string
}
Server struct {
engine *echo.Echo
settings Settings
}
)
func New(settings Settings) *Server {
e := echo.New()
e.Debug = false
e.HideBanner = true
e.Use(func(handlerFunc echo.HandlerFunc) echo.HandlerFunc {
return func(ctx echo.Context) error {
ctx.SetCookie(&http.Cookie{
Name: "x-ferret",
Value: "e2e",
HttpOnly: false,
})
return handlerFunc(ctx)
}
})
e.Static("/", settings.Dir)
e.File("/", filepath.Join(settings.Dir, "index.html"))
return &Server{e, settings}
}
func (s *Server) Start() error {
return s.engine.Start(fmt.Sprintf("0.0.0.0:%d", s.settings.Port))
}
func (s *Server) Stop(ctx context.Context) error {
return s.engine.Shutdown(ctx)
}