/
server.go
72 lines (59 loc) · 2.15 KB
/
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
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
package server
import (
"fmt"
"net/http"
"time"
"github.com/go-pg/pg/v10"
"github.com/labstack/echo/v4"
"github.com/labstack/echo/v4/middleware"
"github.com/labstack/gommon/log"
"github.com/pkg/errors"
"github.com/pokedextracker/api.pokedextracker.com/pkg/auth"
"github.com/pokedextracker/api.pokedextracker.com/pkg/binder"
"github.com/pokedextracker/api.pokedextracker.com/pkg/captures"
"github.com/pokedextracker/api.pokedextracker.com/pkg/config"
"github.com/pokedextracker/api.pokedextracker.com/pkg/dexes"
"github.com/pokedextracker/api.pokedextracker.com/pkg/dextypes"
"github.com/pokedextracker/api.pokedextracker.com/pkg/errcodes"
"github.com/pokedextracker/api.pokedextracker.com/pkg/games"
"github.com/pokedextracker/api.pokedextracker.com/pkg/pokemon"
"github.com/pokedextracker/api.pokedextracker.com/pkg/users"
"github.com/robinjoseph08/golib/echo/v4/health"
"github.com/robinjoseph08/golib/echo/v4/middleware/logger"
"github.com/robinjoseph08/golib/echo/v4/middleware/recovery"
)
func New(cfg *config.Config, db *pg.DB) (*http.Server, error) {
e := echo.New()
e.Logger.SetLevel(log.OFF)
b, err := binder.New()
if err != nil {
return nil, errors.WithStack(err)
}
e.Binder = b
e.Use(logger.Middleware())
e.Use(recovery.Middleware())
e.Use(middleware.CORSWithConfig(middleware.CORSConfig{
AllowOrigins: cfg.CORSAllowedOrigins,
}))
enforcedAuth, nonEnforcedAuth := auth.Middleware(cfg, db)
health.RegisterRoutes(e)
auth.RegisterRoutes(e, cfg, db, nonEnforcedAuth)
captures.RegisterRoutes(e, db, enforcedAuth, nonEnforcedAuth)
dexes.RegisterRoutes(e, db, enforcedAuth, nonEnforcedAuth)
dextypes.RegisterRoutes(e, db, nonEnforcedAuth)
games.RegisterRoutes(e, db, nonEnforcedAuth)
pokemon.RegisterRoutes(e, db, nonEnforcedAuth)
users.RegisterRoutes(e, cfg, db, enforcedAuth, nonEnforcedAuth)
echo.NotFoundHandler = notFoundHandler
e.HTTPErrorHandler = errcodes.NewHandler().Handle
srv := &http.Server{
Addr: fmt.Sprintf(":%d", cfg.Port),
Handler: e,
ReadHeaderTimeout: 2 * time.Second,
}
return srv, nil
}
func notFoundHandler(c echo.Context) error {
c.SetPath("/:path")
return errcodes.NotFound("page")
}