96 lines
2.0 KiB
Go
96 lines
2.0 KiB
Go
package rest
|
|
|
|
import (
|
|
"encoding/hex"
|
|
"encoding/json"
|
|
"fmt"
|
|
"github.com/gorilla/mux"
|
|
"nbarest/lib/persistence"
|
|
"net/http"
|
|
"strings"
|
|
)
|
|
|
|
func NewPlayerServiceHandler(handler persistence.DatabaseHandler) *playerServiceHandler{
|
|
return &playerServiceHandler{
|
|
dbhandler: handler,
|
|
}
|
|
}
|
|
|
|
type playerServiceHandler struct{
|
|
dbhandler persistence.DatabaseHandler
|
|
}
|
|
|
|
func (ph *playerServiceHandler) FindPlayerHandler(w http.ResponseWriter,r *http.Request){
|
|
fmt.Println("FindPlayerHandler")
|
|
vars:=mux.Vars(r)
|
|
criteria,ok:=vars["SearchCriteria"]
|
|
if !ok{
|
|
w.WriteHeader(400)
|
|
fmt.Fprintln(w,"error")
|
|
return
|
|
}
|
|
|
|
searchkey,ok:=vars["search"]
|
|
if !ok{
|
|
w.WriteHeader(400)
|
|
fmt.Fprintln(w,"error")
|
|
return
|
|
}
|
|
|
|
var player persistence.Player
|
|
var err error
|
|
|
|
switch strings.ToLower(criteria) {
|
|
case "name":
|
|
player,err=ph.dbhandler.FindPlayerByName(searchkey)
|
|
case "id":
|
|
id,err:=hex.DecodeString(searchkey)
|
|
if err==nil{
|
|
player,err=ph.dbhandler.FindPlayer(id)
|
|
}
|
|
}
|
|
if err!=nil{
|
|
fmt.Fprintln(w,`{"error"} "%s"`,err)
|
|
return
|
|
}
|
|
fmt.Println("find"+searchkey)
|
|
w.Header().Set("Content-Type","application/json;charset=utf8")
|
|
json.NewEncoder(w).Encode(&player)
|
|
}
|
|
|
|
func (ph *playerServiceHandler) NewPlayerHandler(w http.ResponseWriter, r *http.Request){
|
|
fmt.Println("NewPlayerHandler")
|
|
player:= persistence.Player{}
|
|
err:=json.NewDecoder(r.Body).Decode(&player)
|
|
if err!=nil{
|
|
w.WriteHeader(500)
|
|
fmt.Fprintln(w,`{"error"}`)
|
|
return
|
|
}
|
|
|
|
id,err:=ph.dbhandler.AddPlayer(player)
|
|
if nil!=err{
|
|
w.WriteHeader(500)
|
|
fmt.Fprintln(w,`{"error"}`)
|
|
return
|
|
}
|
|
fmt.Fprint(w,`{"id":%d}`,id)
|
|
}
|
|
|
|
func (ph *playerServiceHandler) FindAllPlayerHandler(w http.ResponseWriter,r *http.Request){
|
|
fmt.Println("FindAllPlayerHandler")
|
|
players,err:= ph.dbhandler.FindAllAvailablePlayers()
|
|
if err!=nil{
|
|
w.WriteHeader(500)
|
|
fmt.Fprintln(w,`{"error"}`)
|
|
return
|
|
}
|
|
|
|
w.Header().Set("Content-Type", "application/json;charset=utf8")
|
|
err=json.NewEncoder(w).Encode(&players)
|
|
if err!=nil{
|
|
w.WriteHeader(500)
|
|
fmt.Fprintln(w,`{"error"}`)
|
|
}
|
|
|
|
} |