Start development work on webserver runtime

This commit is contained in:
2020-12-27 04:27:57 -05:00
parent fd2814d77a
commit 469d1dfcb3
4 changed files with 72 additions and 3 deletions

56
runtime/webserver.go Normal file
View File

@ -0,0 +1,56 @@
package runtime
import (
"encoding/json"
"fmt"
"github.com/gorilla/mux"
"github.com/josephbmanley/OpenSkins-Common/datastore"
"log"
"net/http"
)
var activeSkinstore datastore.Skinstore
var activeUserstore datastore.Userstore
func healthCheck(w http.ResponseWriter, r *http.Request) {
fmt.Fprintf(w, "Service is healthy!")
}
func getCharacter(w http.ResponseWriter, r *http.Request) {
vars := mux.Vars(r)
userID := vars["user"]
charID := vars["char"]
user, err := activeUserstore.GetUser(userID)
// Check if there was an error getting the user
if err != nil {
log.Panicf("An error occured when getting a character: %v", err.Error())
w.WriteHeader(500)
return
}
// Check if user exists
if user == nil {
w.WriteHeader(404)
return
}
for _, character := range user.Characters {
if character.UID == charID {
json.NewEncoder(w).Encode(character)
return
}
}
w.WriteHeader(404)
return
}
// StartWebserver starts the webserver
func StartWebserver() {
myRouter := mux.NewRouter().StrictSlash(true)
myRouter.HandleFunc("/health", healthCheck)
myRouter.HandleFunc("/get/character/{user}/{char}", getCharacter)
log.Fatal(http.ListenAndServe(":8081", myRouter))
}