def METHOD_NAME(self, ip):
    """
    Get asn of an ip using ip-api.com only if the asn wasn't found in our offline db
    """
    asn = {}
    if utils.is_ignored_ip(ip):
        return asn
    url = 'http://ip-api.com/json/'
    try:
        response = requests.get(f'{url}/{ip}', timeout=5)
        if response.status_code != 200:
            return asn
        ip_info = json.loads(response.text)
        if 'as' not in ip_info:
            return asn
        asn_info = ip_info['as'].split()
        if asn_info == []:
            return
        # usually it's somthing like AS15169 Google LLC
        # separate the org name
        asn.update({
            'asn': {
                'number': asn_info[0],
                'org': " ".join(asn_info[1:])
            }
        })
        return asn
    except (
        requests.exceptions.ReadTimeout,
        requests.exceptions.ConnectionError,
        json.decoder.JSONDecodeError, KeyError, IndexError
    ):
        # comes here if slips fails to get the as info from the response
        # OR gets it correctly, but the info doesn't contain the fields slip sis expecting
        pass
    return asn