@@ -64,25 +64,28 @@ async def metadata(self):
6464 # TODO Remove this when API v0 is officially deprecated
6565 self .metrics .add ('metadata.wb_api' , 'v0' )
6666 metadata_url = download_url .replace ('/file?' , '/data?' , 1 )
67- metadata_request = await self ._make_request ('GET' , metadata_url )
68- metadata = await metadata_request .json ()
67+ metadata_response = await self ._make_request ('GET' , metadata_url )
68+ metadata = await metadata_response .json ()
6969 else :
7070 # URL is for WaterButler v1 API
7171 self .metrics .add ('metadata.wb_api' , 'v1' )
72- metadata_request = await self ._make_request ('HEAD' , download_url )
73- # To make changes to current code as minimal as possible
74- try :
75- metadata = { 'data' : json . loads ( metadata_request . headers [ 'x-waterbutler-metadata' ])[ 'attributes' ]}
76- await metadata_request .release ()
77- except KeyError :
72+ metadata_response = await self ._make_request ('HEAD' , download_url )
73+ response_code = metadata_response . status
74+ response_reason = metadata_response . reason
75+ response_headers = metadata_response . headers
76+ await metadata_response .release ()
77+ if response_code != 200 :
7878 raise exceptions .MetadataError (
79- 'Failed to fetch metadata. Received response '
80- 'code {}' .format (str (metadata_request . status )),
79+ 'Failed to fetch file metadata from WaterButler . Received response: ' ,
80+ 'code {} {} ' .format (str (response_code ), str ( response_reason )),
8181 metadata_url = download_url ,
82- response = await metadata_request . text () ,
82+ response = response_reason ,
8383 provider = self .NAME ,
84- code = 400 ,
84+ code = 400
8585 )
86+
87+ try :
88+ metadata = {'data' : json .loads (response_headers ['x-waterbutler-metadata' ])['attributes' ]}
8689 except ContentEncodingError :
8790 pass # hack: aiohttp tries to unzip empty body when Content-Encoding is set
8891
0 commit comments