def extract_response(self, curl_error_code=None, curl_error_message=None):
body = self._response_buffer.getvalue()
status_code = self.curl_handler.getinfo(pycurl.HTTP_CODE)
content_type = self.curl_handler.getinfo(pycurl.CONTENT_TYPE)
# timings
timing_infos = (
("TOTAL_TIME", pycurl.TOTAL_TIME),
("NAMELOOKUP_TIME", pycurl.NAMELOOKUP_TIME),
("CONNECT_TIME", pycurl.CONNECT_TIME),
("APPCONNECT_TIME", pycurl.APPCONNECT_TIME),
("PRETRANSFER_TIME", pycurl.PRETRANSFER_TIME),
("STARTTRANSFER_TIME", pycurl.STARTTRANSFER_TIME),
("REDIRECT_TIME", pycurl.REDIRECT_TIME),
("REDIRECT_COUNT", pycurl.REDIRECT_COUNT)
)
timings = {}
for i in timing_infos:
timings[i[0]] = self.curl_handler.getinfo(i[1])
# certinfo
try:
certinfo = self.curl_handler.getinfo(pycurl.INFO_CERTINFO)
dictcertinfo = []
for cert in certinfo:
d = {}
for k, v in cert:
d[k] = v
dictcertinfo.append(d)
except UnicodeDecodeError:
# FIXME ? trigger by curl_handler.getinfo(...)
dictcertinfo = []
# close
self._response_buffer.close()
self.curl_handler.close()
# create object
self.response = ResponseContainer(self.url, dictcertinfo, status_code,
curl_error_code, curl_error_message,
body, content_type, timings)
评论列表
文章目录