aboutsummaryrefslogtreecommitdiff
path: root/api
diff options
context:
space:
mode:
Diffstat (limited to 'api')
-rw-r--r--api/api.go55
-rw-r--r--api/routes.go10
2 files changed, 65 insertions, 0 deletions
diff --git a/api/api.go b/api/api.go
new file mode 100644
index 0000000..1954496
--- /dev/null
+++ b/api/api.go
@@ -0,0 +1,55 @@
+package api
+
+import (
+ "net/http"
+ "os"
+ "os/signal"
+ "strconv"
+ "syscall"
+ "time"
+
+ mux "github.com/gorilla/mux"
+ log "github.com/sirupsen/logrus"
+)
+
+func cleanup() {
+ log.Print("Shutting down server...")
+}
+
+// Define router and start server
+func Serve(port int) {
+ // Sigint trapper
+ c := make(chan os.Signal)
+ signal.Notify(c, os.Interrupt, syscall.SIGTERM)
+ go func() {
+ <-c
+ cleanup()
+ os.Exit(0)
+ }()
+
+ // Define Mux Router
+ r := mux.NewRouter()
+ r.HandleFunc("/health", healthCheckFunc)
+
+ http.Handle("/", r)
+
+ // Start HTTP server
+ server := newServer(":"+strconv.Itoa(port), r)
+ log.Printf("Starting server on %d", port)
+
+ defer cleanup()
+ err := server.ListenAndServe()
+ if err != nil {
+ log.Fatal(err)
+ }
+}
+
+// Function to create new HTTP server
+func newServer(addr string, router http.Handler) *http.Server {
+ return &http.Server{
+ Addr: addr,
+ Handler: router,
+ ReadTimeout: time.Second * 30,
+ WriteTimeout: time.Second * 30,
+ }
+}
diff --git a/api/routes.go b/api/routes.go
new file mode 100644
index 0000000..e3aac5b
--- /dev/null
+++ b/api/routes.go
@@ -0,0 +1,10 @@
+package api
+
+import (
+ "fmt"
+ "net/http"
+)
+
+func healthCheckFunc(w http.ResponseWriter, r *http.Request) {
+ fmt.Fprintf(w, "Hello there chief")
+}