| package util |
|
|
| import ( |
| "net/http" |
| "strings" |
| ) |
|
|
| |
| |
| func ApplyCustomHeadersFromAttrs(r *http.Request, attrs map[string]string) { |
| if r == nil { |
| return |
| } |
| applyCustomHeaders(r, extractCustomHeaders(attrs)) |
| } |
|
|
| func extractCustomHeaders(attrs map[string]string) map[string]string { |
| if len(attrs) == 0 { |
| return nil |
| } |
| headers := make(map[string]string) |
| for k, v := range attrs { |
| if !strings.HasPrefix(k, "header:") { |
| continue |
| } |
| name := strings.TrimSpace(strings.TrimPrefix(k, "header:")) |
| if name == "" { |
| continue |
| } |
| val := strings.TrimSpace(v) |
| if val == "" { |
| continue |
| } |
| headers[name] = val |
| } |
| if len(headers) == 0 { |
| return nil |
| } |
| return headers |
| } |
|
|
| func applyCustomHeaders(r *http.Request, headers map[string]string) { |
| if r == nil || len(headers) == 0 { |
| return |
| } |
| for k, v := range headers { |
| if k == "" || v == "" { |
| continue |
| } |
| r.Header.Set(k, v) |
| } |
| } |
|
|