openmeter / server /cors.go
Leon4gr45's picture
Upload folder using huggingface_hub (part 6)
d6f631f verified
Raw
History Blame Contribute Delete
831 Bytes
package server
import (
"net/http"
"strings"
"github.com/go-chi/cors"
)
type corsOptions struct {
cors.Options
AllowedPaths []string
}
func corsHandler(options corsOptions) func(next http.Handler) http.Handler {
ch := cors.Handler(options.Options)
return func(next http.Handler) http.Handler {
return http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {
// If AllowedPaths is empty, apply CORS to all paths
if len(options.AllowedPaths) == 0 {
ch(next).ServeHTTP(w, r)
return
}
// Check if the request path starts with any of the allowed prefixes
for _, path := range options.AllowedPaths {
if strings.HasPrefix(r.URL.Path, path) {
ch(next).ServeHTTP(w, r)
return
}
}
// If none of the prefixes match, call the next handler
next.ServeHTTP(w, r)
})
}
}