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