Files
PixivFE/server/utils/http_utils.go
T
2024-09-05 16:08:08 +00:00

47 lines
993 B
Go

package utils
import (
"net/http"
"net/url"
"strings"
"github.com/goccy/go-json"
)
func SendString(w http.ResponseWriter, text string) error {
w.Header().Set("content-type", "text/plain")
_, err := w.Write([]byte(text))
return err
}
func SendJson(w http.ResponseWriter, data any) {
json.NewEncoder(w).Encode(data)
}
func RedirectTo(w http.ResponseWriter, r *http.Request, path string, query_params map[string]string) error {
query := url.Values{}
for k, v := range query_params {
query.Add(k, v)
}
http.Redirect(w, r, path+"?"+query.Encode(), http.StatusSeeOther)
return nil
}
func RedirectToWhenceYouCame(w http.ResponseWriter, r *http.Request) {
referrer := r.Referer()
if strings.HasPrefix(referrer, Origin(r)) {
http.Redirect(w, r, referrer, http.StatusSeeOther)
} else {
w.WriteHeader(200)
}
}
func Origin(r *http.Request) string {
return (&url.URL{
Scheme: r.URL.Scheme,
Opaque: r.URL.Opaque,
User: r.URL.User,
Host: r.URL.Host,
}).String()
}