from base64 import decode import json import os import requests import requests_cache from dotenv import load_dotenv from pprint import pprint class API_error(Exception): pass def environment(): requests_cache.install_cache(expire_after=360, allowable_methods=("POST")) load_dotenv() api_key = os.getenv("ABUSEIPDB_API") return api_key def lookup(api_key, host): url = "https://api.abuseipdb.com/api/v2/check" payload = {"ipAddress": "", "maxAgeInDays": "90"} payload.update({"ipAddress": host}) headers = {"Accept": "application/json", "Key": api_key} response = requests.request( method="GET", url=url, params=payload, headers=headers, verify=False ) # TODO: remove SSL verify=False and add signed certificate if possible. # Figure out how caching functions here: https://requests-cache.readthedocs.io/en/stable/examples.html print(requests_cache.get_cache()) print("Cached:") print("\n".join(requests_cache.get_cache().urls())) return response def analyse(host): api_key = environment() result = lookup(api_key, host) decoded_result = json.loads(result.text) return decoded_result