package main

import (
	"github.com/labstack/echo/v4"
	"github.com/labstack/echo/v4/middleware"
)

func NewServer(h Handler) *echo.Echo {
	svr := echo.New()
	svr.Use(middleware.Recover())
	svr.Use(middleware.RequestID())
	svr.Use(middleware.LoggerWithConfig(middleware.LoggerConfig{
		Skipper: middleware.DefaultSkipper,
		Format: `{"time":"${time_rfc3339_nano}","id":"${id}","method":"${method}","uri":"${uri}",` +
			`"status":${status},"error":"${error}","latency":${latency}"` +
			`,"bytes_in":${bytes_in},"bytes_out":${bytes_out}}` + "\n",
		CustomTimeFormat: "2006-01-02 15:04:05.00000",
	}))
	svr.Use(SetLogger)
	svr.Use(ResourceErrorHandler)
	api := svr.Group("api/v1")
	api.GET("/*", h.Get)
	api.POST("/testbed/complete", h.TestbedComplete)
	return svr
}
