From 1b300ac76cbee57393f3225a8556b039e21fdbfc Mon Sep 17 00:00:00 2001
From: Sercan Yesildal <sercan.yesildal@gmail.com>
Date: Mon, 17 Apr 2023 14:58:46 +0200
Subject: [PATCH] health service added

---
 src/myaktion/go.mod            |  2 ++
 src/myaktion/go.sum            |  2 ++
 src/myaktion/handler/health.go | 11 +++++++++++
 src/myaktion/main.go           | 18 +++++++++++++++++-
 4 files changed, 32 insertions(+), 1 deletion(-)
 create mode 100644 src/myaktion/go.sum
 create mode 100644 src/myaktion/handler/health.go

diff --git a/src/myaktion/go.mod b/src/myaktion/go.mod
index c47b541..01a09cf 100644
--- a/src/myaktion/go.mod
+++ b/src/myaktion/go.mod
@@ -1,3 +1,5 @@
 module gitlab.reutlingen-university.de/yesildas/myaktion-go/src/myaktion
 
 go 1.20
+
+require github.com/gorilla/mux v1.8.0 // indirect
diff --git a/src/myaktion/go.sum b/src/myaktion/go.sum
new file mode 100644
index 0000000..5350288
--- /dev/null
+++ b/src/myaktion/go.sum
@@ -0,0 +1,2 @@
+github.com/gorilla/mux v1.8.0 h1:i40aqfkR1h2SlN9hojwV5ZA91wcXFOvkdNIeFDP5koI=
+github.com/gorilla/mux v1.8.0/go.mod h1:DVbg23sWSpFRCP0SfiEN6jmj59UnW/n46BH5rLB71So=
diff --git a/src/myaktion/handler/health.go b/src/myaktion/handler/health.go
new file mode 100644
index 0000000..bb62dc7
--- /dev/null
+++ b/src/myaktion/handler/health.go
@@ -0,0 +1,11 @@
+package handler
+
+import (
+	"io"
+	"net/http"
+)
+
+func Health(w http.ResponseWriter, r *http.Request) {
+	w.Header().Set("Content-Type", "application/json")
+	io.WriteString(w, `{"alive": true}`)
+}
diff --git a/src/myaktion/main.go b/src/myaktion/main.go
index cd83e9c..3bfda86 100644
--- a/src/myaktion/main.go
+++ b/src/myaktion/main.go
@@ -1,6 +1,14 @@
 package main
 
-import "gitlab.reutlingen-university.de/yesildas/myaktion-go/src/myaktion/model"
+import (
+	"fmt"
+	"log"
+	"net/http"
+
+	"github.com/gorilla/mux"
+	"gitlab.reutlingen-university.de/yesildas/myaktion-go/src/myaktion/handler"
+	"gitlab.reutlingen-university.de/yesildas/myaktion-go/src/myaktion/model"
+)
 
 func main() {
 	campaign := model.Campaign{
@@ -27,4 +35,12 @@ func main() {
 		},
 		Status: model.IN_PROCESS,
 	})
+
+	port := 8000
+	log.Printf("Starting MyAktion API server on port %v.\n", port)
+	router := mux.NewRouter()
+	router.HandleFunc("/health", handler.Health).Methods("GET")
+	if err := http.ListenAndServe(fmt.Sprintf(":%v", port), router); err != nil {
+		log.Fatal(err)
+	}
 }
-- 
GitLab