From 3113f8d8dcc19fc5a932e8f010ec4c95a90f2aa5 Mon Sep 17 00:00:00 2001 From: soup Date: Tue, 5 Nov 2024 18:29:55 +0100 Subject: [PATCH] feat(api): add version endpoint (#94) --- internal/http/server.go | 1 + internal/http/version.go | 34 ++++++++++++++++++++++++++++++++++ 2 files changed, 35 insertions(+) create mode 100644 internal/http/version.go diff --git a/internal/http/server.go b/internal/http/server.go index 04386d9..5d54a88 100644 --- a/internal/http/server.go +++ b/internal/http/server.go @@ -49,6 +49,7 @@ func (s Server) Handler() http.Handler { r.Use(middleware.Logger) r.Route("/api/healthz", newHealthHandler().Routes) + r.Route("/api/version", newVersionHandler().Routes) r.Group(func(r chi.Router) { r.Use(s.isAuthenticated) diff --git a/internal/http/version.go b/internal/http/version.go new file mode 100644 index 0000000..e9bd1bb --- /dev/null +++ b/internal/http/version.go @@ -0,0 +1,34 @@ +package http + +import ( + "net/http" + + "github.com/autobrr/omegabrr/internal/buildinfo" + "github.com/go-chi/chi/v5" + "github.com/go-chi/render" +) + +type versionHandler struct{} + +func newVersionHandler() *versionHandler { + return &versionHandler{} +} + +func (h versionHandler) Routes(r chi.Router) { + r.Get("/", h.handleVersion) +} + +type VersionResponse struct { + Version string `json:"version"` + Commit string `json:"commit"` + Date string `json:"date"` +} + +func (h versionHandler) handleVersion(w http.ResponseWriter, r *http.Request) { + resp := VersionResponse{ + Version: buildinfo.Version, + Commit: buildinfo.Commit, + Date: buildinfo.Date, + } + render.JSON(w, r, resp) +}