GetRequestURI returns requestURI for r.
(r *http.Request)
| 728 | |
| 729 | // GetRequestURI returns requestURI for r. |
| 730 | func GetRequestURI(r *http.Request) string { |
| 731 | requestURI := r.RequestURI |
| 732 | if r.Method != http.MethodPost { |
| 733 | return requestURI |
| 734 | } |
| 735 | _ = r.ParseForm() |
| 736 | if len(r.PostForm) == 0 { |
| 737 | return requestURI |
| 738 | } |
| 739 | // code copied from url.Query.Encode |
| 740 | var queryArgs strings.Builder |
| 741 | for k := range r.PostForm { |
| 742 | vs := r.PostForm[k] |
| 743 | // mask authKey as well-known secret |
| 744 | if k == "authKey" { |
| 745 | vs = []string{"secret"} |
| 746 | } |
| 747 | keyEscaped := url.QueryEscape(k) |
| 748 | for _, v := range vs { |
| 749 | if queryArgs.Len() > 0 { |
| 750 | queryArgs.WriteByte('&') |
| 751 | } |
| 752 | queryArgs.WriteString(keyEscaped) |
| 753 | queryArgs.WriteByte('=') |
| 754 | queryArgs.WriteString(url.QueryEscape(v)) |
| 755 | } |
| 756 | } |
| 757 | delimiter := "?" |
| 758 | if strings.Contains(requestURI, delimiter) { |
| 759 | delimiter = "&" |
| 760 | } |
| 761 | return requestURI + delimiter + queryArgs.String() |
| 762 | } |
| 763 | |
| 764 | // Redirect redirects to the given url. |
| 765 | func Redirect(w http.ResponseWriter, url string) { |
no test coverage detected
searching dependent graphs…