From a849a2ae815ac3f2954c40c5dc915d8f4df5f7e6 Mon Sep 17 00:00:00 2001
From: Kevin Lyda <kevin@lyda.ie>
Date: Sun, 24 Nov 2024 17:06:35 +0000
Subject: [PATCH] Initial api structure

---
 server/endpoints.go | 25 +++++++++++++++++++++++++
 server/server.go    | 19 +++++++++++++++++++
 2 files changed, 44 insertions(+)
 create mode 100644 server/endpoints.go
 create mode 100644 server/server.go

diff --git a/server/endpoints.go b/server/endpoints.go
new file mode 100644
index 0000000..fbc23d9
--- /dev/null
+++ b/server/endpoints.go
@@ -0,0 +1,25 @@
+// Package server implements the server.
+package server
+
+import (
+	"context"
+
+	"git.lyda.ie/kevin/boxes/api"
+)
+
+// Endpoints implements the endpoints.
+type Endpoints struct {
+}
+
+// NewEndpoints returns a new Endpoints structure.
+func NewEndpoints() *Endpoints {
+	return &Endpoints{}
+}
+
+// GetLocations returns a list of locations.
+func (ep *Endpoints) GetLocations(_ context.Context, _ api.GetLocationsRequestObject) (api.GetLocationsResponseObject, error) {
+	loc := []api.Location{}
+	return api.GetLocations200JSONResponse{
+		LocationsJSONResponse: loc,
+	}, nil
+}
diff --git a/server/server.go b/server/server.go
new file mode 100644
index 0000000..3f09009
--- /dev/null
+++ b/server/server.go
@@ -0,0 +1,19 @@
+// Package server implements the server.
+package server
+
+import (
+	"fmt"
+
+	"git.lyda.ie/kevin/boxes/api"
+	"github.com/labstack/echo/v4"
+	"github.com/spf13/cobra"
+)
+
+// StartServer starts the metrics and API servers.
+func StartServer(_ *cobra.Command, _ []string) {
+	e := echo.New()
+	endpoints := NewEndpoints()
+	server := api.NewStrictHandler(endpoints, nil)
+	api.RegisterHandlers(e, server)
+	fmt.Printf("Server exited with: %+v\n", e.Start(":8070"))
+}
-- 
GitLab