@@ -438,49 +438,40 @@ async def extract_request_info(self):
438438 if client is None :
439439 return None
440440
441- data = None # type: Union[Dict[str, Any], AnnotatedValue, None]
442-
443- content_length = await self .content_length ()
444441 request_info = {} # type: Dict[str, Any]
445442
446443 with capture_internal_exceptions ():
447444 if _should_send_default_pii ():
448445 request_info ["cookies" ] = self .cookies ()
449446
450- if not request_body_within_bounds (client , content_length ):
451- data = AnnotatedValue (
452- "" ,
453- {
454- "rem" : [["!config" , "x" , 0 , content_length ]],
455- "len" : content_length ,
456- },
457- )
458- else :
459- parsed_body = await self .parsed_body ()
460- if parsed_body is not None :
461- data = parsed_body
462- elif await self .raw_data ():
463- data = AnnotatedValue (
464- "" ,
465- {
466- "rem" : [["!raw" , "x" , 0 , content_length ]],
467- "len" : content_length ,
468- },
469- )
447+ content_length = await self .content_length ()
448+
449+ if content_length :
450+ data = None # type: Union[Dict[str, Any], AnnotatedValue, None]
451+
452+ if not request_body_within_bounds (client , content_length ):
453+ data = AnnotatedValue .removed_because_over_size_limit ()
454+
470455 else :
471- data = None
456+ parsed_body = await self .parsed_body ()
457+ if parsed_body is not None :
458+ data = parsed_body
459+ elif await self .raw_data ():
460+ data = AnnotatedValue .removed_because_raw_data ()
461+ else :
462+ data = None
472463
473- if data is not None :
474- request_info ["data" ] = data
464+ if data is not None :
465+ request_info ["data" ] = data
475466
476467 return request_info
477468
478469 async def content_length (self ):
479- # type: (StarletteRequestExtractor) -> int
480- raw_data = await self .raw_data ()
481- if raw_data is None :
482- return 0
483- return len ( raw_data )
470+ # type: (StarletteRequestExtractor) -> Optional[ int]
471+ if "content-length" in self .request . headers :
472+ return int ( self . request . headers [ "content-length" ])
473+
474+ return None
484475
485476 def cookies (self ):
486477 # type: (StarletteRequestExtractor) -> Dict[str, Any]
@@ -525,10 +516,7 @@ async def parsed_body(self):
525516 data = {}
526517 for key , val in iteritems (form ):
527518 if isinstance (val , UploadFile ):
528- size = len (await val .read ())
529- data [key ] = AnnotatedValue (
530- "" , {"len" : size , "rem" : [["!raw" , "x" , 0 , size ]]}
531- )
519+ data [key ] = AnnotatedValue .removed_because_raw_data ()
532520 else :
533521 data [key ] = val
534522
0 commit comments