mirror of
				https://github.com/go-gitea/gitea.git
				synced 2025-10-31 21:28:11 +09:00 
			
		
		
		
	* When route cannot be found on chi, go to macaron * Stick chi version to 1.5.0 * Follow router log setting
		
			
				
	
	
		
			35 lines
		
	
	
		
			1.1 KiB
		
	
	
	
		
			Go
		
	
	
	
		
			Vendored
		
	
	
	
			
		
		
	
	
			35 lines
		
	
	
		
			1.1 KiB
		
	
	
	
		
			Go
		
	
	
	
		
			Vendored
		
	
	
	
| package middleware
 | |
| 
 | |
| import (
 | |
| 	"net/http"
 | |
| 	"strings"
 | |
| )
 | |
| 
 | |
| // AllowContentEncoding enforces a whitelist of request Content-Encoding otherwise responds
 | |
| // with a 415 Unsupported Media Type status.
 | |
| func AllowContentEncoding(contentEncoding ...string) func(next http.Handler) http.Handler {
 | |
| 	allowedEncodings := make(map[string]struct{}, len(contentEncoding))
 | |
| 	for _, encoding := range contentEncoding {
 | |
| 		allowedEncodings[strings.TrimSpace(strings.ToLower(encoding))] = struct{}{}
 | |
| 	}
 | |
| 	return func(next http.Handler) http.Handler {
 | |
| 		fn := func(w http.ResponseWriter, r *http.Request) {
 | |
| 			requestEncodings := r.Header["Content-Encoding"]
 | |
| 			// skip check for empty content body or no Content-Encoding
 | |
| 			if r.ContentLength == 0 {
 | |
| 				next.ServeHTTP(w, r)
 | |
| 				return
 | |
| 			}
 | |
| 			// All encodings in the request must be allowed
 | |
| 			for _, encoding := range requestEncodings {
 | |
| 				if _, ok := allowedEncodings[strings.TrimSpace(strings.ToLower(encoding))]; !ok {
 | |
| 					w.WriteHeader(http.StatusUnsupportedMediaType)
 | |
| 					return
 | |
| 				}
 | |
| 			}
 | |
| 			next.ServeHTTP(w, r)
 | |
| 		}
 | |
| 		return http.HandlerFunc(fn)
 | |
| 	}
 | |
| }
 |