@@ -537,6 +537,24 @@ def _request_url_error(template, retry_timeout):
537537 return False
538538
539539
540+ def download_file (url , path , auth ):
541+ request = Request (url )
542+ request .add_header ('Accept' , 'application/octet-stream' )
543+ request .add_header ('Authorization' , 'Basic ' .encode ('ascii' ) + auth )
544+ data = urlopen (request )
545+ with open (path , 'wb' ) as f :
546+ f .write (data .read ())
547+
548+ # import requests
549+ # r = requests.get(url, stream=True, headers={
550+ # 'Accept': 'application/octet-stream',
551+ # 'Authorization': 'Basic '.encode('ascii') + auth
552+ # })
553+ # with open(path, 'wb') as f:
554+ # for chunk in r.iter_content(1024):
555+ # f.write(chunk)
556+
557+
540558def get_authenticated_user (args ):
541559 template = 'https://{0}/user' .format (get_github_api_host (args ))
542560 data = retrieve_data (args , template , single_request = True )
@@ -898,17 +916,21 @@ def backup_releases(args, repo_cwd, repository, repos_template):
898916
899917 query_args = {}
900918
901- _release_template = '{0}/{1}/releases' .format (repos_template , repository_fullname )
902- _releases = retrieve_data (args , _release_template , query_args = query_args )
919+ release_template = '{0}/{1}/releases' .format (repos_template , repository_fullname )
920+ releases = retrieve_data (args , release_template , query_args = query_args )
903921
904922 # for each release, store it
905- log_info ('Saving {0} releases to disk' .format (len (_releases )))
906- for release in _releases :
923+ log_info ('Saving {0} releases to disk' .format (len (releases )))
924+ for release in releases :
907925 release_name = release ['tag_name' ]
908926 output_filepath = os .path .join (release_cwd , '{0}.json' .format (release_name ))
909927 with codecs .open (output_filepath , 'w+' , encoding = 'utf-8' ) as f :
910928 json_dump (release , f )
911929
930+ assets = retrieve_data (args , release ['assets_url' ])
931+ for asset in assets :
932+ download_file (asset ['url' ], os .path .join (release_cwd , asset ['name' ]), get_auth (args ))
933+
912934
913935def fetch_repository (name ,
914936 remote_url ,
0 commit comments