diff --git a/cmd/qrbill-api/api.go b/cmd/qrbill-api/api.go index ec70af6..7b9a0f6 100644 --- a/cmd/qrbill-api/api.go +++ b/cmd/qrbill-api/api.go @@ -20,25 +20,25 @@ import ( _ "net/http/pprof" ) -func ifEmpty(s, alternative string) string { - if s == "" { +func ifEmpty(form url.Values, key, alternative string) string { + if len(form[key]) == 0 { return alternative } - return s + return form[key][0] } func qrchFromRequest(r *http.Request) *qrbill.QRCH { return &qrbill.QRCH{ CdtrInf: qrbill.QRCHCdtrInf{ - IBAN: ifEmpty(r.FormValue("criban"), "CH0209000000870913543"), + IBAN: ifEmpty(r.Form, "criban", "CH0209000000870913543"), Cdtr: qrbill.Address{ AdrTp: qrbill.AddressTypeCombined, - Name: ifEmpty(r.FormValue("crname"), "Legalize it!"), - StrtNmOrAdrLine1: ifEmpty(r.FormValue("craddr1"), "Quellenstrasse 25"), - BldgNbOrAdrLine2: ifEmpty(r.FormValue("craddr2"), "8005 Zürich"), - PstCd: ifEmpty(r.FormValue("crpost"), ""), - TwnNm: ifEmpty(r.FormValue("crcity"), ""), - Ctry: ifEmpty(r.FormValue("crcountry"), "CH"), + Name: ifEmpty(r.Form, "crname", "Legalize it!"), + StrtNmOrAdrLine1: ifEmpty(r.Form, "craddr1", "Quellenstrasse 25"), + BldgNbOrAdrLine2: ifEmpty(r.Form, "craddr2", "8005 Zürich"), + PstCd: ifEmpty(r.Form, "crpost", ""), + TwnNm: ifEmpty(r.Form, "crcity", ""), + Ctry: ifEmpty(r.Form, "crcountry", "CH"), }, }, CcyAmt: qrbill.QRCHCcyAmt{ @@ -47,18 +47,18 @@ func qrchFromRequest(r *http.Request) *qrbill.QRCH { }, UltmtDbtr: qrbill.Address{ AdrTp: qrbill.AddressTypeCombined, - Name: ifEmpty(r.FormValue("udname"), "Michael Stapelberg"), - StrtNmOrAdrLine1: ifEmpty(r.FormValue("udaddr1"), "Stauffacherstr 42"), - BldgNbOrAdrLine2: ifEmpty(r.FormValue("udaddr2"), "8004 Zürich"), - PstCd: ifEmpty(r.FormValue("udpost"), ""), - TwnNm: ifEmpty(r.FormValue("udcity"), ""), - Ctry: ifEmpty(r.FormValue("udcountry"), "CH"), + Name: ifEmpty(r.Form, "udname", "Michael Stapelberg"), + StrtNmOrAdrLine1: ifEmpty(r.Form, "udaddr1", "Stauffacherstr 42"), + BldgNbOrAdrLine2: ifEmpty(r.Form, "udaddr2", "8004 Zürich"), + PstCd: ifEmpty(r.Form, "udpost", ""), + TwnNm: ifEmpty(r.Form, "udcity", ""), + Ctry: ifEmpty(r.Form, "udcountry", "CH"), }, RmtInf: qrbill.QRCHRmtInf{ Tp: "NON", // Reference type Ref: "", // Reference AddInf: qrbill.QRCHRmtInfAddInf{ - Ustrd: ifEmpty(r.FormValue("message"), "Spende 420"), + Ustrd: ifEmpty(r.Form, "message", "Spende 420"), }, }, } @@ -98,6 +98,12 @@ func logic() error { return } + if err := r.ParseForm(); err != nil { + log.Printf("%s %s", prefix, err) + http.Error(w, err.Error(), http.StatusInternalServerError) + return + } + qrch := qrchFromRequest(r) bill, err := qrch.Encode()