@@ -307,34 +307,42 @@ def __init__(self):
307307 self .request_metadata = []
308308 self .response_metadata = []
309309
310- def _add_request_metadata (self , client_call_details ):
310+ def _read_request_metadata (self , client_call_details ):
311311 if client_call_details .metadata is not None :
312312 self .request_metadata = client_call_details .metadata
313313
314+ def _read_response_metadata_stream (self ):
315+ # Access the metadata via the original stream object
316+ if hasattr (self , "_original_stream" ):
317+ return self ._original_stream .trailing_metadata ()
318+ return []
319+
314320 def intercept_unary_unary (self , continuation , client_call_details , request ):
315- self ._add_request_metadata (client_call_details )
321+ self ._read_request_metadata (client_call_details )
316322 response = continuation (client_call_details , request )
317323 metadata = [(k , str (v )) for k , v in response .trailing_metadata ()]
318324 self .response_metadata = metadata
319325 return response
320326
321327 def intercept_unary_stream (self , continuation , client_call_details , request ):
322- self ._add_request_metadata (client_call_details )
328+ self ._read_request_metadata (client_call_details )
323329 response_it = continuation (client_call_details , request )
330+ self ._original_stream = response_it
324331 return response_it
325332
326333 def intercept_stream_unary (
327334 self , continuation , client_call_details , request_iterator
328335 ):
329- self ._add_request_metadata (client_call_details )
336+ self ._read_request_metadata (client_call_details )
330337 response = continuation (client_call_details , request_iterator )
331338 return response
332339
333340 def intercept_stream_stream (
334341 self , continuation , client_call_details , request_iterator
335342 ):
336- self ._add_request_metadata (client_call_details )
343+ self ._read_request_metadata (client_call_details )
337344 response_it = continuation (client_call_details , request_iterator )
345+ self ._original_stream = response_it
338346 return response_it
339347
340348
@@ -348,33 +356,33 @@ def __init__(self):
348356 self .request_metadata = []
349357 self .response_metadata = []
350358
351- async def _add_request_metadata (self , client_call_details ):
359+ async def _read_request_metadata (self , client_call_details ):
352360 if client_call_details .metadata is not None :
353361 self .request_metadata = list (client_call_details .metadata )
354362
355363 async def intercept_unary_unary (self , continuation , client_call_details , request ):
356- await self ._add_request_metadata (client_call_details )
364+ await self ._read_request_metadata (client_call_details )
357365 response = await continuation (client_call_details , request )
358366 metadata = [(k , str (v )) for k , v in await response .trailing_metadata ()]
359367 self .response_metadata = metadata
360368 return response
361369
362370 async def intercept_unary_stream (self , continuation , client_call_details , request ):
363- self ._add_request_metadata (client_call_details )
371+ self ._read_request_metadata (client_call_details )
364372 response_it = continuation (client_call_details , request )
365373 return response_it
366374
367375 async def intercept_stream_unary (
368376 self , continuation , client_call_details , request_iterator
369377 ):
370- self ._add_request_metadata (client_call_details )
378+ self ._read_request_metadata (client_call_details )
371379 response = continuation (client_call_details , request_iterator )
372380 return response
373381
374382 async def intercept_stream_stream (
375383 self , continuation , client_call_details , request_iterator
376384 ):
377- self ._add_request_metadata (client_call_details )
385+ self ._read_request_metadata (client_call_details )
378386 response_it = continuation (client_call_details , request_iterator )
379387 return response_it
380388
0 commit comments