20
									
								
								util.go
									
									
									
									
									
								
							
							
						
						
									
										20
									
								
								util.go
									
									
									
									
									
								
							| @@ -15,23 +15,30 @@ func FillRequest(ctx context.Context, req interface{}, opts ...FillRequestOption | |||||||
| 	for _, o := range opts { | 	for _, o := range opts { | ||||||
| 		o(&options) | 		o(&options) | ||||||
| 	} | 	} | ||||||
|  |  | ||||||
| 	md, ok := metadata.FromIncomingContext(ctx) | 	md, ok := metadata.FromIncomingContext(ctx) | ||||||
| 	if !ok { | 	if !ok { | ||||||
| 		return nil | 		return nil | ||||||
| 	} | 	} | ||||||
|  |  | ||||||
| 	for idx := 0; idx < len(options.headers)/2; idx += 2 { | 	for idx := 0; idx < len(options.headers)/2; idx += 2 { | ||||||
| 		k := http.CanonicalHeaderKey(options.headers[idx]) | 		k := options.headers[idx] | ||||||
| 		v, ok := md[k] | 		v, ok := md.Get(k) | ||||||
| 		if !ok { | 		if !ok { | ||||||
| 			continue | 			continue | ||||||
| 		} | 		} | ||||||
| 		if err = rutil.SetFieldByPath(req, v, k); err != nil { |  | ||||||
|  | 		if len(v) == 1 { | ||||||
|  | 			err = rutil.SetFieldByPath(req, v[0], k) | ||||||
|  | 		} else { | ||||||
|  | 			err = rutil.SetFieldByPath(req, v, k) | ||||||
|  | 		} | ||||||
|  | 		if err != nil { | ||||||
| 			return err | 			return err | ||||||
| 		} | 		} | ||||||
| 	} | 	} | ||||||
|  |  | ||||||
| 	cookieVals, _ := md["Cookie"] | 	cookieVals, _ := md.Get("Cookie") | ||||||
| 	for i := range cookieVals { | 	for i := range cookieVals { | ||||||
| 		cookies := strings.Split(cookieVals[i], ";") | 		cookies := strings.Split(cookieVals[i], ";") | ||||||
| 		cmd := make(map[string]string, len(cookies)) | 		cmd := make(map[string]string, len(cookies)) | ||||||
| @@ -45,10 +52,13 @@ func FillRequest(ctx context.Context, req interface{}, opts ...FillRequestOption | |||||||
| 		for idx := 0; idx < len(options.cookies)/2; idx += 2 { | 		for idx := 0; idx < len(options.cookies)/2; idx += 2 { | ||||||
| 			k := http.CanonicalHeaderKey(options.cookies[idx]) | 			k := http.CanonicalHeaderKey(options.cookies[idx]) | ||||||
| 			v, ok := cmd[k] | 			v, ok := cmd[k] | ||||||
|  |  | ||||||
| 			if !ok { | 			if !ok { | ||||||
| 				continue | 				continue | ||||||
| 			} | 			} | ||||||
| 			if err = rutil.SetFieldByPath(req, v, k); err != nil { |  | ||||||
|  | 			err = rutil.SetFieldByPath(req, v, k) | ||||||
|  | 			if err != nil { | ||||||
| 				return err | 				return err | ||||||
| 			} | 			} | ||||||
| 		} | 		} | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user