1
+ import functools
1
2
import json
2
3
import sys
3
4
import typing
@@ -101,11 +102,14 @@ def get_lexer_for_response(response: Response) -> str:
101
102
return "" # pragma: nocover
102
103
103
104
104
- def format_request_headers (request : Request ) -> str :
105
+ def format_request_headers (request : Request , http2 : bool = False ) -> str :
106
+ version = "HTTP/2" if http2 else "HTTP/1.1"
107
+ headers = [
108
+ (name .lower () if http2 else name , value ) for name , value in request .headers .raw
109
+ ]
105
110
target = request .url .raw [- 1 ].decode ("ascii" )
106
- lines = [f"{ request .method } { target } HTTP/1.1" ] + [
107
- f"{ name .decode ('ascii' )} : { value .decode ('ascii' )} "
108
- for name , value in request .headers .raw
111
+ lines = [f"{ request .method } { target } { version } " ] + [
112
+ f"{ name .decode ('ascii' )} : { value .decode ('ascii' )} " for name , value in headers
109
113
]
110
114
return "\n " .join (lines )
111
115
@@ -120,9 +124,9 @@ def format_response_headers(response: Response) -> str:
120
124
return "\n " .join (lines )
121
125
122
126
123
- def print_request_headers (request : Request ) -> None :
127
+ def print_request_headers (request : Request , http2 : bool = False ) -> None :
124
128
console = rich .console .Console ()
125
- http_text = format_request_headers (request )
129
+ http_text = format_request_headers (request , http2 = http2 )
126
130
syntax = rich .syntax .Syntax (http_text , "http" , theme = "ansi_dark" , word_wrap = True )
127
131
console .print (syntax )
128
132
syntax = rich .syntax .Syntax ("" , "http" , theme = "ansi_dark" , word_wrap = True )
@@ -395,7 +399,7 @@ def main(
395
399
396
400
event_hooks : typing .Dict [str , typing .List [typing .Callable ]] = {}
397
401
if verbose :
398
- event_hooks ["request" ] = [print_request_headers ]
402
+ event_hooks ["request" ] = [functools . partial ( print_request_headers , http2 = http2 ) ]
399
403
if follow_redirects :
400
404
event_hooks ["response" ] = [print_redirects ]
401
405
0 commit comments