From 475a2bb4c4b2b94f7dea4806e970c10f351da896 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Fran=20Jurmanovi=C4=87?= Date: Thu, 11 Jul 2024 19:07:55 +0200 Subject: [PATCH] start server --- cmd/api/main.go | 4 +--- docs/docs.go | 18 ++++++++++++++++++ docs/swagger.json | 18 ++++++++++++++++++ docs/swagger.yaml | 12 ++++++++++++ local/controller/api.go | 17 +++++++++++++++++ local/service/api.go | 17 +++++++++++++++++ 6 files changed, 83 insertions(+), 3 deletions(-) diff --git a/cmd/api/main.go b/cmd/api/main.go index 88f22dc..8cb8407 100644 --- a/cmd/api/main.go +++ b/cmd/api/main.go @@ -17,9 +17,7 @@ import ( func main() { godotenv.Load() - app := fiber.New(fiber.Config{ - Immutable: true, - }) + app := fiber.New() app.Use(cors.New()) diff --git a/docs/docs.go b/docs/docs.go index d4245dd..e06c72d 100644 --- a/docs/docs.go +++ b/docs/docs.go @@ -33,6 +33,24 @@ const docTemplate = `{ } } } + }, + "post": { + "description": "Return API", + "tags": [ + "api" + ], + "summary": "Return API", + "responses": { + "200": { + "description": "OK", + "schema": { + "type": "array", + "items": { + "type": "string" + } + } + } + } } } } diff --git a/docs/swagger.json b/docs/swagger.json index bec459c..2783363 100644 --- a/docs/swagger.json +++ b/docs/swagger.json @@ -22,6 +22,24 @@ } } } + }, + "post": { + "description": "Return API", + "tags": [ + "api" + ], + "summary": "Return API", + "responses": { + "200": { + "description": "OK", + "schema": { + "type": "array", + "items": { + "type": "string" + } + } + } + } } } } diff --git a/docs/swagger.yaml b/docs/swagger.yaml index 73f2a42..967cbac 100644 --- a/docs/swagger.yaml +++ b/docs/swagger.yaml @@ -14,4 +14,16 @@ paths: summary: Return API tags: - api + post: + description: Return API + responses: + "200": + description: OK + schema: + items: + type: string + type: array + summary: Return API + tags: + - api swagger: "2.0" diff --git a/local/controller/api.go b/local/controller/api.go index a31b08b..eeb46f7 100644 --- a/local/controller/api.go +++ b/local/controller/api.go @@ -28,6 +28,7 @@ func NewApiController(as *service.ApiService, routeGroups *common.RouteGroups) * } routeGroups.Api.Get("", ac.getFirst) + routeGroups.Api.Post("", ac.startServer) return ac } @@ -43,3 +44,19 @@ func (ac *ApiController) getFirst(c *fiber.Ctx) error { apiModel := ac.service.GetFirst(c) return c.SendString(apiModel) } + +// startServer returns API +// +// @Summary Return API +// @Description Return API +// @Tags api +// @Success 200 {array} string +// @Router /v1/api [post] +func (ac *ApiController) startServer(c *fiber.Ctx) error { + c.Locals("service", "ACC-Server") + apiModel, err := ac.service.StartServer(c) + if err != nil { + return c.SendStatus(400) + } + return c.SendString(apiModel) +} diff --git a/local/service/api.go b/local/service/api.go index 2153a82..62f9581 100644 --- a/local/service/api.go +++ b/local/service/api.go @@ -2,6 +2,7 @@ package service import ( "acc-server-manager/local/utl/configs" + "os/exec" "github.com/gofiber/fiber/v2" ) @@ -26,3 +27,19 @@ Gets first row from API table. func (as ApiService) GetFirst(ctx *fiber.Ctx) string { return configs.Version } + +func (as ApiService) StartServer(ctx *fiber.Ctx) (string, error) { + service, ok := ctx.Locals("service").(string) + print(service) + if !ok { + return "", fiber.NewError(400) + } + cmd := exec.Command("sc", "start", service) + output, err := cmd.CombinedOutput() + print(string(output[:])) + if err != nil { + return "", fiber.NewError(500) + } + return string(output[:]), nil + +}