mirror of
https://codeberg.org/VnPower/PixivFE
synced 2024-12-06 19:16:23 +01:00
47 lines
993 B
Go
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()
|
|
}
|