@@ -35,26 +35,26 @@ def read_input(message):
3535def get_ip ():
3636 """Return machine's origin IP address(es).
3737 """
38- lst = []
39- try :
40- r = requests .get (IP4ONLY_URL )
41- if r .status_code == 200 :
42- lst .append (r .text .split (',' )[1 ])
43- except requests .exceptions .ConnectionError :
44- pass
45- try :
46- r = requests .get (IP6ONLY_URL )
47- if r .status_code == 200 :
48- lst .append (r .text .split (',' )[1 ])
49- except requests .exceptions .ConnectionError :
50- pass
51- if not lst :
38+
39+ def _try_request_get_and_store (url , callback ):
5240 try :
53- r = requests .get (HTTPBIN_URL )
41+ r = requests .get (url )
5442 if r .status_code == 200 :
55- lst . append ( r . json ()[ 'origin' ] )
43+ callback ( r )
5644 except requests .exceptions .ConnectionError :
5745 pass
46+
47+ lst = []
48+ for url in (IP4ONLY_URL , IP6ONLY_URL ):
49+ _try_request_get_and_store (
50+ url ,
51+ lambda r : lst .append (r .text .split (',' )[1 ])
52+ )
53+ if not lst :
54+ _try_request_get_and_store (
55+ HTTPBIN_URL ,
56+ lambda r : lst .append (r .json ()['origin' ])
57+ )
5858 if not lst :
5959 return None
6060 return ',' .join (lst )
@@ -70,15 +70,13 @@ def get_dns_ip(dnsname):
7070 except AttributeError :
7171 resolve = resolver .query
7272
73- lst = []
74- try :
75- lst += [a .address for a in resolve (dnsname , 'A' )]
76- except dns .exception .DNSException :
77- pass
78- try :
79- lst += [a .address for a in resolve (dnsname , 'AAAA' )]
80- except dns .exception .DNSException :
81- pass
73+ def _safe_resolve (dnsname , dnstype ):
74+ try :
75+ return list (resolve (dnsname , dnstype ))
76+ except dns .exception .DNSException :
77+ return []
78+
79+ lst = [a .address for a in _safe_resolve (dnsname , 'A' ) + _safe_resolve (dnsname , 'AAAA' )]
8280 if not lst :
8381 try :
8482 lst .append (socket .gethostbyname (dnsname ))
0 commit comments