chore(repo): reinitialize repository

This commit is contained in:
2026-03-18 11:29:54 +08:00
commit 24871e213a
288 changed files with 44369 additions and 0 deletions
+69
View File
@@ -0,0 +1,69 @@
package httpx
import (
"encoding/json"
"errors"
"net/http"
)
type statusError struct {
status int
err error
}
func (e statusError) Error() string {
if e.err == nil {
return ""
}
return e.err.Error()
}
func (e statusError) Unwrap() error {
return e.err
}
func ErrorWithStatus(status int, err error) error {
if err == nil {
return nil
}
return statusError{status: status, err: err}
}
func StatusFromError(err error) (int, bool) {
var target statusError
if errors.As(err, &target) {
return target.status, true
}
return 0, false
}
func WriteJSON(w http.ResponseWriter, status int, v any) {
w.Header().Set("Content-Type", "application/json")
w.WriteHeader(status)
enc := json.NewEncoder(w)
enc.SetIndent("", " ")
_ = enc.Encode(v)
}
func WriteError(w http.ResponseWriter, status int, msg string) {
WriteJSON(w, status, map[string]string{"error": msg})
}
func DecodeJSON(r *http.Request, dst any) error {
dec := json.NewDecoder(r.Body)
dec.DisallowUnknownFields()
return dec.Decode(dst)
}
func CORSMiddleware(next http.Handler) http.Handler {
return http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {
w.Header().Set("Access-Control-Allow-Origin", "*")
w.Header().Set("Access-Control-Allow-Methods", "GET, POST, PUT, PATCH, DELETE, OPTIONS")
w.Header().Set("Access-Control-Allow-Headers", "Content-Type")
if r.Method == http.MethodOptions {
w.WriteHeader(http.StatusNoContent)
return
}
next.ServeHTTP(w, r)
})
}