From f0907415295066fb8963af98f1000b18c03af81b Mon Sep 17 00:00:00 2001 From: Oliver Stolle 3024383 <3024383@stud.hs-mannheim.de> Date: Mon, 4 May 2026 21:11:31 +0000 Subject: [PATCH] Implementet the webserver exercise --- web/07/eigene_loesungen/webserver.go | 93 ++++++++++++++++++++++++++++ 1 file changed, 93 insertions(+) diff --git a/web/07/eigene_loesungen/webserver.go b/web/07/eigene_loesungen/webserver.go index e69de29..9a62f74 100644 --- a/web/07/eigene_loesungen/webserver.go +++ b/web/07/eigene_loesungen/webserver.go @@ -0,0 +1,93 @@ +package main + +import ( + "encoding/json" + "fmt" + "net/http" +) + +type ServerHandler int + +type anmeldung struct { + Vorname string `json:"vorname"` + Nachname string `json:"nachname"` + Email string `json:"email"` + Telefon string `json:"telefon"` + Sessions []string `json:"sessions"` + Agb string `json:"agb"` + Newsletter string `json:"newsletter"` + Equipment string `json:"equipment"` + Format []string `json:"format"` +} + +func (formHandler ServerHandler) ServeHTTP(w http.ResponseWriter, r *http.Request) { + w.Header().Set("Access-Control-Allow-Origin", "*") //What is that for??? + w.Header().Set("Access-Control-Allow-Methods", "POST") + w.Header().Set("Access-Control-Allow-Headers", "Content-Type") + + if r.Method == http.MethodOptions { + w.WriteHeader(http.StatusOK) + return + } + + if r.Method != http.MethodPost { + http.Error(w, "Only POST requests are allowed", http.StatusMethodNotAllowed) + return + } + + var vorname string + var nachname string + var email string + var telefon string + var sessions []string + var agb string + var newsletter string + var equipment string + var format []string + + var anmeldung anmeldung + + if err := json.NewDecoder(r.Body).Decode(&anmeldung); err != nil { + vorname = anmeldung.Vorname + nachname = anmeldung.Nachname + email = anmeldung.Email + telefon = anmeldung.Telefon + sessions = anmeldung.Sessions + agb = anmeldung.Agb + newsletter = anmeldung.Newsletter + equipment = anmeldung.Equipment + format = anmeldung.Format + + } else { + if err := r.ParseForm(); err != nil { + http.Error(w, "Fehler beim Parsen des Formulars", http.StatusBadRequest) + return + } + + if len(r.PostForm) == 0 { + http.Error(w, "Kein POST-Formular gesendet", http.StatusBadRequest) + return + } + + vorname = r.PostForm.Get("vorname") + nachname = r.PostForm.Get("nachname") + email = r.PostForm.Get("email") + telefon = r.PostForm.Get("telefon") + sessions = r.PostForm["sessions"] + + agb = r.PostForm.Get("agb") + newsletter = r.PostForm.Get("newsletter") + equipment = r.PostForm.Get("equipment") + format = r.PostForm["format"] + } + + response := fmt.Sprintf("Anmeldung erfolgreich! Ihre Anmeldedaten lauten:
Vorname: %s
Nachname: %s
E-Mail: %s
Telefon: %s
Session: %v
Agb: %s
Newsletter: %s
Equipment: %s
Format: %v
", + vorname, nachname, email, telefon, sessions, agb, newsletter, equipment, format) + w.Write([]byte(response)) + +} + +func main() { + var ser ServerHandler + http.ListenAndServe("localhost:8080", ser) +}