forked from WEB-IB-SS26/development-ib
Implementet the webserver exercise
parent
0ee9b3151c
commit
f090741529
|
|
@ -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:<br>Vorname: %s<br>Nachname: %s<br>E-Mail: %s<br>Telefon: %s<br>Session: %v<br>Agb: %s<br>Newsletter: %s<br>Equipment: %s<br>Format: %v<br>",
|
||||||
|
vorname, nachname, email, telefon, sessions, agb, newsletter, equipment, format)
|
||||||
|
w.Write([]byte(response))
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
func main() {
|
||||||
|
var ser ServerHandler
|
||||||
|
http.ListenAndServe("localhost:8080", ser)
|
||||||
|
}
|
||||||
Loading…
Reference in New Issue