mirror of
https://github.com/ForFarmTeam/ForFarm.git
synced 2025-12-18 13:34:08 +01:00
48 lines
842 B
Go
48 lines
842 B
Go
package api
|
|
|
|
import (
|
|
"context"
|
|
"fmt"
|
|
"log/slog"
|
|
"net/http"
|
|
|
|
"github.com/danielgtaylor/huma/v2"
|
|
"github.com/danielgtaylor/huma/v2/adapters/humachi"
|
|
"github.com/go-chi/chi/v5"
|
|
"github.com/go-chi/chi/v5/middleware"
|
|
)
|
|
|
|
type api struct {
|
|
logger *slog.Logger
|
|
httpClient *http.Client
|
|
}
|
|
|
|
func NewAPI(ctx context.Context, logger *slog.Logger) *api {
|
|
|
|
client := &http.Client{}
|
|
|
|
return &api{
|
|
logger: logger,
|
|
httpClient: client,
|
|
}
|
|
}
|
|
|
|
func (a *api) Server(port int) *http.Server {
|
|
return &http.Server{
|
|
Addr: fmt.Sprintf(":%d", port),
|
|
Handler: a.Routes()}
|
|
}
|
|
|
|
func (a *api) Routes() *chi.Mux {
|
|
r := chi.NewRouter()
|
|
|
|
r.Use(middleware.Logger)
|
|
|
|
api := humachi.New(r, huma.DefaultConfig("ForFarm API", "v1.0.0"))
|
|
huma.Get(api, "/helloworld", a.helloWorldHandler)
|
|
|
|
// r.Get("/helloworld", a.helloWorldHandler)
|
|
|
|
return r
|
|
}
|