Start development work on webserver runtime
This commit is contained in:
56
runtime/webserver.go
Normal file
56
runtime/webserver.go
Normal 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))
|
||||
}
|
Reference in New Issue
Block a user