Ticket #8761: fetchtest.py

File fetchtest.py, 1.4 KB (added by Greg Couch, 3 years ago)

test CCD fetching

Line 
1#!/bin/python3
2import os
3
4
5def retrieve_url(url, *,
6 check_certificates=True, timeout=60, error_status=True):
7 from urllib.request import Request, urlopen
8 request = Request(url, unverifiable=True)
9 request.headers['Accept-encoding'] = 'identity'
10 if check_certificates:
11 ssl_context = None
12 else:
13 import ssl
14 ssl_context = ssl.create_default_context()
15 ssl_context.check_hostname = False
16 ssl_context.verify_mode = ssl.CERT_NONE
17 with urlopen(request, timeout=timeout, context=ssl_context) as response:
18 print('Fetching %s' % request.get_full_url())
19 content_length = response.headers['Content-Length']
20 if content_length is not None:
21 content_length = int(content_length)
22 data = response.read()
23 if content_length is not None and len(data) != content_length:
24 from urllib.request import URLError
25 raise URLError(
26 f'Got {len(data)} bytes when {content_length} were expected')
27 print('Fetched %s' % request.get_full_url())
28
29
30if 1:
31 import certifi
32 os.environ["SSL_CERT_FILE"] = certifi.where()
33 url = "https://files.wwpdb.org/pub/pdb/refdata/chem_comp/P/NAP/NAP.cif"
34 print("Try without checking certificates")
35 retrieve_url(url, check_certificates=False)
36 print("Try with checking certificates")
37 retrieve_url(url)