Initial commit.
Linting and tests / Linting (push) Failing after 30s
Linting and tests / Tests (push) Successful in 25s

This commit is contained in:
2026-06-10 10:23:00 +05:00
commit 3d43b8a84e
34 changed files with 1325 additions and 0 deletions
@@ -0,0 +1,84 @@
package httpserver
import (
"errors"
"fmt"
"log/slog"
"net/http"
"go.dev.pztrn.name/vikunja-notifier/internal/application"
"go.dev.pztrn.name/vikunja-notifier/internal/services/core"
)
var (
_ = core.HTTPServer(&httpServer{})
errHTTPServer = errors.New("HTTP server core service")
)
type httpServer struct {
app *application.Application
logger *slog.Logger
httpSrv *http.Server
httpMux *http.ServeMux
middlewares []core.HTTPMiddlewareFunc
}
// Initialize initializes service.
func Initialize(app *application.Application) error {
httpSrv := &httpServer{
app: app,
}
if err := app.RegisterService(httpSrv); err != nil {
return fmt.Errorf("%w: %w", errHTTPServer, err)
}
return nil
}
func (h *httpServer) Configure() error {
h.logger.Debug("Configuring service...")
if err := h.configureHTTPServer(); err != nil {
return fmt.Errorf("configure: %w", err)
}
return nil
}
func (h *httpServer) ConnectDependencies() error {
return nil
}
func (h *httpServer) Initialize() error {
h.logger = h.app.NewLogger("service", core.ServiceNameHTTPServer)
h.logger.Info("Initializing...")
h.middlewares = make([]core.HTTPMiddlewareFunc, 0)
h.RegisterMiddleware(h.requestLoggingMiddleware)
return nil
}
func (h *httpServer) Name() string {
return core.ServiceNameHTTPServer
}
func (h *httpServer) LaunchStartupTasks() error {
h.logger.Debug("Launching startup tasks...")
go h.startHTTPServer()
return nil
}
func (h *httpServer) Shutdown() error {
if err := h.stopHTTPServer(); err != nil {
return fmt.Errorf("%w: Shutdown: %w", errHTTPServer, err)
}
return nil
}