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)
+}