diff --git a/api/RuCaptcha.go b/api/RuCaptcha.go index 005860c..5c9e44c 100644 --- a/api/RuCaptcha.go +++ b/api/RuCaptcha.go @@ -37,6 +37,24 @@ type ruCaptchaResponse interface{ text() string } func (a *ruCaptchaApi) wrap(handler func(url.Values) ruCaptchaResponse) func(http.ResponseWriter, *http.Request) { return func(w http.ResponseWriter, r *http.Request) { query := r.URL.Query() + if r.Method != "GET" { + switch strings.ToLower(r.Header.Get("Content-Type")) { + case "application/x-www-form-urlencoded": + r.ParseForm() + case "multipart/form-data": + r.ParseMultipartForm(0) + } + } + + // merge form with url params + for key, values := range r.Form { + if _, ok := query[key]; ok { + query[key] = append(query[key], values...) + } else { + query[key] = values + } + } + useJson := false if val := query.Get("json"); val != "" && val != "0" { useJson = true