ProcessHeaders converts HPACK header fields to a map
(fields []hpack.HeaderField)
| 495 | |
| 496 | // ProcessHeaders converts HPACK header fields to a map |
| 497 | func ProcessHeaders(fields []hpack.HeaderField) *models.GrpcHeaders { |
| 498 | headers := &models.GrpcHeaders{ |
| 499 | PseudoHeaders: make(map[string]string), |
| 500 | OrdinaryHeaders: make(map[string]string), |
| 501 | } |
| 502 | |
| 503 | for _, field := range fields { |
| 504 | if len(field.Name) > 0 && field.Name[0] == ':' { |
| 505 | headers.PseudoHeaders[field.Name] = field.Value |
| 506 | } else { |
| 507 | headers.OrdinaryHeaders[field.Name] = field.Value |
| 508 | } |
| 509 | } |
| 510 | |
| 511 | return headers |
| 512 | } |
| 513 | |
| 514 | // IsGRPCGatewayRequest checks if the stream appears to be from gRPC-gateway that proxies http requests to grpc services |
| 515 | func IsGRPCGatewayRequest(stream *HTTP2Stream) bool { |