Skip to content

Commit

Permalink
refactor: Remove http logic from main
Browse files Browse the repository at this point in the history
Signed-off-by: Vincent Boutour <bob@vibioh.fr>
  • Loading branch information
ViBiOh committed Jun 28, 2024
1 parent 8e7c780 commit 0a7f26d
Show file tree
Hide file tree
Showing 5 changed files with 35 additions and 43 deletions.
6 changes: 2 additions & 4 deletions cmd/ketchup/api.go → cmd/ketchup/ketchup.go
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,6 @@ import (
"context"

"github.com/ViBiOh/httputils/v4/pkg/alcotest"
"github.com/ViBiOh/httputils/v4/pkg/httputils"
"github.com/ViBiOh/httputils/v4/pkg/logger"
"github.com/ViBiOh/httputils/v4/pkg/server"
)
Expand All @@ -24,11 +23,10 @@ func main() {
services, err := newServices(ctx, config, clients)
logger.FatalfOnErr(ctx, err, "services")

port := newPort(config, services)
port := newPort(config, clients, services)

go services.server.Start(clients.health.EndCtx(), httputils.Handler(port, clients.health, clients.telemetry.Middleware("http"), services.owasp.Middleware, services.cors.Middleware))
go services.server.Start(clients.health.EndCtx(), port)

clients.health.WaitForTermination(services.server.Done())

server.GracefulWait(services.server.Done())
}
14 changes: 8 additions & 6 deletions cmd/ketchup/port.go
Original file line number Diff line number Diff line change
Expand Up @@ -3,10 +3,11 @@ package main
import (
"net/http"

"github.com/ViBiOh/httputils/v4/pkg/httputils"
"github.com/ViBiOh/ketchup/pkg/middleware"
)

func newPort(config configuration, services services) http.Handler {
func newPort(config configuration, clients clients, services services) http.Handler {
authMux := http.NewServeMux()
authMux.Handle("/ketchups/{id...}", services.ketchup.Ketchups())
authMux.Handle("/", services.renderer.Handler(services.ketchup.TemplateFunc))
Expand All @@ -15,10 +16,11 @@ func newPort(config configuration, services services) http.Handler {
mux.Handle("/signup", services.ketchup.Signup())
mux.Handle("/app/", http.StripPrefix("/app", services.authMiddleware.Middleware(middleware.New(services.user).Middleware(authMux))))

mux.Handle(config.renderer.PathPrefix+"/", http.StripPrefix(
config.renderer.PathPrefix,
services.renderer.NewServeMux(services.ketchup.PublicTemplateFunc),
))
services.renderer.RegisterMux(mux, services.ketchup.PublicTemplateFunc)

return mux
return httputils.Handler(mux, clients.health,
clients.telemetry.Middleware("http"),
services.owasp.Middleware,
services.cors.Middleware,
)
}
40 changes: 16 additions & 24 deletions cmd/ketchup/services.go
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,6 @@ import (
authService "github.com/ViBiOh/auth/v2/pkg/service"
authStore "github.com/ViBiOh/auth/v2/pkg/store/db"
"github.com/ViBiOh/httputils/v4/pkg/cors"
"github.com/ViBiOh/httputils/v4/pkg/db"
"github.com/ViBiOh/httputils/v4/pkg/owasp"
"github.com/ViBiOh/httputils/v4/pkg/renderer"
"github.com/ViBiOh/httputils/v4/pkg/server"
Expand All @@ -27,7 +26,6 @@ import (
ketchupStore "github.com/ViBiOh/ketchup/pkg/store/ketchup"
repositoryStore "github.com/ViBiOh/ketchup/pkg/store/repository"
userStore "github.com/ViBiOh/ketchup/pkg/store/user"
"go.opentelemetry.io/otel/trace"
)

//go:embed templates static
Expand All @@ -45,42 +43,36 @@ type services struct {
}

func newServices(ctx context.Context, config configuration, clients clients) (services, error) {
authService, authMiddlewareService := initAuth(clients.db, clients.telemetry.TracerProvider())
var output services
var err error

userService := userService.New(userStore.New(clients.db), &authService)
output.server = server.New(config.server)
output.owasp = owasp.New(config.owasp)
output.cors = cors.New(config.cors)

authProvider := authStore.New(clients.db)
identProvider := authIdent.New(authProvider, "ketchup")

authService := authService.New(authProvider, authProvider)
output.authMiddleware = authMiddleware.New(authProvider, clients.telemetry.TracerProvider(), identProvider)

githubService := github.New(config.github, clients.redis, clients.telemetry.MeterProvider(), clients.telemetry.TracerProvider())
dockerService := docker.New(config.docker)
helmService := helm.New()
dockerService := docker.New(config.docker)
npmService := npm.New()
pypiService := pypi.New()

repositoryService := repositoryService.New(repositoryStore.New(clients.db), githubService, helmService, dockerService, npmService, pypiService)

ketchupService := ketchupService.New(ketchupStore.New(clients.db), repositoryService)

rendererService, err := renderer.New(ctx, config.renderer, content, ketchup.FuncMap, clients.telemetry.MeterProvider(), clients.telemetry.TracerProvider())
output.renderer, err = renderer.New(ctx, config.renderer, content, ketchup.FuncMap, clients.telemetry.MeterProvider(), clients.telemetry.TracerProvider())
if err != nil {
return services{}, fmt.Errorf("renderer: %w", err)
}

ketchupApp := ketchup.New(ctx, rendererService, ketchupService, userService, repositoryService, clients.redis, clients.telemetry.TracerProvider())

return services{
server: server.New(config.server),
owasp: owasp.New(config.owasp),
cors: cors.New(config.cors),
renderer: rendererService,

authMiddleware: authMiddlewareService,
user: userService,
ketchup: ketchupApp,
}, nil
}

func initAuth(db db.Service, tracerProvider trace.TracerProvider) (authService.Service, authMiddleware.Service) {
authProvider := authStore.New(db)
identProvider := authIdent.New(authProvider, "ketchup")
output.user = userService.New(userStore.New(clients.db), &authService)
output.ketchup = ketchup.New(ctx, output.renderer, ketchupService, output.user, repositoryService, clients.redis, clients.telemetry.TracerProvider())

return authService.New(authProvider, authProvider), authMiddleware.New(authProvider, tracerProvider, identProvider)
return output, nil
}
6 changes: 3 additions & 3 deletions go.mod
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@ toolchain go1.22.0
require (
github.com/ViBiOh/auth/v2 v2.20.1
github.com/ViBiOh/flags v1.5.0
github.com/ViBiOh/httputils/v4 v4.77.2
github.com/ViBiOh/httputils/v4 v4.77.3
github.com/ViBiOh/mailer v1.33.5
github.com/jackc/pgx/v5 v5.6.0
go.opentelemetry.io/otel/metric v1.27.0
Expand Down Expand Up @@ -50,8 +50,8 @@ require (
golang.org/x/sync v0.7.0 // indirect
golang.org/x/sys v0.21.0 // indirect
golang.org/x/text v0.16.0 // indirect
google.golang.org/genproto/googleapis/api v0.0.0-20240617180043-68d350f18fd4 // indirect
google.golang.org/genproto/googleapis/rpc v0.0.0-20240617180043-68d350f18fd4 // indirect
google.golang.org/genproto/googleapis/api v0.0.0-20240624140628-dc46fd24d27d // indirect
google.golang.org/genproto/googleapis/rpc v0.0.0-20240624140628-dc46fd24d27d // indirect
google.golang.org/grpc v1.64.0 // indirect
google.golang.org/protobuf v1.34.2 // indirect
)
12 changes: 6 additions & 6 deletions go.sum
Original file line number Diff line number Diff line change
Expand Up @@ -2,8 +2,8 @@ github.com/ViBiOh/auth/v2 v2.20.1 h1:2sNenkD9Oixkmvxmy+ohbvsoYWzGE2twUDtX5lSEEIM
github.com/ViBiOh/auth/v2 v2.20.1/go.mod h1:rlWvZC4jKIZvNMSX1dCybYu+XdF8kEsUqBk2kEEvLQ4=
github.com/ViBiOh/flags v1.5.0 h1:nwuFS8tAwtV6rTPpv2pCB+r12WjZYLjluW7yT+SeVpQ=
github.com/ViBiOh/flags v1.5.0/go.mod h1:39UMuTnKsIp6walgD8dK99KRCb4DJt9vPtbWehHh1T0=
github.com/ViBiOh/httputils/v4 v4.77.2 h1:nRWRymsKrWhnQESVG0lDqQOlJ57atU19MKJlKkByiCs=
github.com/ViBiOh/httputils/v4 v4.77.2/go.mod h1:d+KMqLg2gLDaB4RXVDEuOZCY6EVOYEaLiMQgg7SXAWs=
github.com/ViBiOh/httputils/v4 v4.77.3 h1:XlBd+U0yF/geT68mEiBa6T8/1HG6oqXorTPkkcyaBq0=
github.com/ViBiOh/httputils/v4 v4.77.3/go.mod h1:ZtZ2sDUi2ZNDOgGyDIUQJHBGam+EgfdCzPXQYy/ipa8=
github.com/ViBiOh/mailer v1.33.5 h1:v0BUX4LRo6iOTpsrYNNKcguetLeVQakd7juzYb+RDJE=
github.com/ViBiOh/mailer v1.33.5/go.mod h1:p81sw96lbR1a5x/Yym3ulB+mrl9Rk205V1ukD5rQ1Eg=
github.com/bsm/ginkgo/v2 v2.12.0 h1:Ny8MWAHyOepLGlLKYmXG4IEkioBysk6GpaRTLC8zwWs=
Expand Down Expand Up @@ -111,10 +111,10 @@ golang.org/x/sys v0.21.0 h1:rF+pYz3DAGSQAxAu1CbC7catZg4ebC4UIeIhKxBZvws=
golang.org/x/sys v0.21.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA=
golang.org/x/text v0.16.0 h1:a94ExnEXNtEwYLGJSIUxnWoxoRz/ZcCsV63ROupILh4=
golang.org/x/text v0.16.0/go.mod h1:GhwF1Be+LQoKShO3cGOHzqOgRrGaYc9AvblQOmPVHnI=
google.golang.org/genproto/googleapis/api v0.0.0-20240617180043-68d350f18fd4 h1:MuYw1wJzT+ZkybKfaOXKp5hJiZDn2iHaXRw0mRYdHSc=
google.golang.org/genproto/googleapis/api v0.0.0-20240617180043-68d350f18fd4/go.mod h1:px9SlOOZBg1wM1zdnr8jEL4CNGUBZ+ZKYtNPApNQc4c=
google.golang.org/genproto/googleapis/rpc v0.0.0-20240617180043-68d350f18fd4 h1:Di6ANFilr+S60a4S61ZM00vLdw0IrQOSMS2/6mrnOU0=
google.golang.org/genproto/googleapis/rpc v0.0.0-20240617180043-68d350f18fd4/go.mod h1:Ue6ibwXGpU+dqIcODieyLOcgj7z8+IcskoNIgZxtrFY=
google.golang.org/genproto/googleapis/api v0.0.0-20240624140628-dc46fd24d27d h1:Aqf0fiIdUQEj0Gn9mKFFXoQfTTEaNopWpfVyYADxiSg=
google.golang.org/genproto/googleapis/api v0.0.0-20240624140628-dc46fd24d27d/go.mod h1:Od4k8V1LQSizPRUK4OzZ7TBE/20k+jPczUDAEyvn69Y=
google.golang.org/genproto/googleapis/rpc v0.0.0-20240624140628-dc46fd24d27d h1:k3zyW3BYYR30e8v3x0bTDdE9vpYFjZHK+HcyqkrppWk=
google.golang.org/genproto/googleapis/rpc v0.0.0-20240624140628-dc46fd24d27d/go.mod h1:Ue6ibwXGpU+dqIcODieyLOcgj7z8+IcskoNIgZxtrFY=
google.golang.org/grpc v1.64.0 h1:KH3VH9y/MgNQg1dE7b3XfVK0GsPSIzJwdF617gUSbvY=
google.golang.org/grpc v1.64.0/go.mod h1:oxjF8E3FBnjp+/gVFYdWacaLDx9na1aqy9oovLpxQYg=
google.golang.org/protobuf v1.34.2 h1:6xV6lTsCfpGD21XK49h7MhtcApnLqkfYgPcdHftf6hg=
Expand Down

0 comments on commit 0a7f26d

Please sign in to comment.