For better code organisation the entire Codebase has been restructured and cleaned up. handlers have been separated into an own package, as well as the model.
85 lines
2.1 KiB
Go
85 lines
2.1 KiB
Go
package handlers
|
|
|
|
import (
|
|
"ddServer/model"
|
|
"net/http"
|
|
"strconv"
|
|
)
|
|
|
|
func AddMonster(Monsters *[]model.Monster) http.HandlerFunc {
|
|
return func(w http.ResponseWriter, r *http.Request) {
|
|
// TODO
|
|
if r.Method != http.MethodPost {
|
|
http.Error(w, "Method not allowed", http.StatusMethodNotAllowed)
|
|
return
|
|
}
|
|
|
|
err := r.ParseForm()
|
|
if err != nil {
|
|
http.Error(w, err.Error(), http.StatusInternalServerError)
|
|
return
|
|
}
|
|
|
|
monster := model.Monster{
|
|
Name: r.FormValue("name"),
|
|
Source: r.FormValue("source"),
|
|
Size: []string{r.FormValue("size")},
|
|
Type: r.FormValue("type"),
|
|
Alignment: []string{r.FormValue("alignment")},
|
|
AC: []model.AC{
|
|
{
|
|
AC: parseInt(r.FormValue("ac")),
|
|
From: []string{r.FormValue("acFrom")},
|
|
},
|
|
},
|
|
HP: model.HP{
|
|
Average: parseInt(r.FormValue("hpAverage")),
|
|
Formula: r.FormValue("hpFormula"),
|
|
},
|
|
Speed: model.Speed{
|
|
Walk: parseInt(r.FormValue("speed")),
|
|
},
|
|
Str: parseInt(r.FormValue("str")),
|
|
Dex: parseInt(r.FormValue("dex")),
|
|
Con: parseInt(r.FormValue("con")),
|
|
Int: parseInt(r.FormValue("int")),
|
|
Wis: parseInt(r.FormValue("wis")),
|
|
Cha: parseInt(r.FormValue("cha")),
|
|
Save: model.Save{
|
|
Dex: r.FormValue("saveDex"),
|
|
Con: r.FormValue("saveCon"),
|
|
Wis: r.FormValue("saveWis"),
|
|
},
|
|
Skill: model.Skill{
|
|
Perception: r.FormValue("perception"),
|
|
Stealth: r.FormValue("stealth"),
|
|
},
|
|
DamageRes: []string{r.FormValue("damageRes")},
|
|
Senses: []string{r.FormValue("senses")},
|
|
Languages: []string{r.FormValue("languages")},
|
|
CR: r.FormValue("cr"),
|
|
Traits: []model.Trait{
|
|
{
|
|
Name: r.FormValue("traitName"),
|
|
Entries: []string{r.FormValue("traitEntry")},
|
|
},
|
|
},
|
|
Actions: []model.Action{
|
|
{
|
|
Name: r.FormValue("actionName"),
|
|
Entries: []string{r.FormValue("actionEntry")},
|
|
},
|
|
},
|
|
}
|
|
*Monsters = append(*Monsters, monster)
|
|
}
|
|
}
|
|
|
|
// parseInt konvertiert einen String zu einem Integer und gibt 0 zurück, wenn die Konvertierung fehlschlägt
|
|
func parseInt(s string) int {
|
|
i, err := strconv.Atoi(s)
|
|
if err != nil {
|
|
return 0
|
|
}
|
|
return i
|
|
}
|