def get_remaining_quota()

in elkserver/docker/redelk-base/redelkinstalldata/scripts/modules/alarm_filehash/ioc_hybridanalysis.py [0:0]


    def get_remaining_quota(self):
        """Returns the number of hashes that could be queried within this run"""
        url = "https://www.hybrid-analysis.com/api/v2/key/current"
        headers = {
            "Accept": "application/json",
            "User-Agent": "RedELK",
            "api-key": self.api_key,
        }

        # Get the quotas, if response code != 200, return 0 so we don't query further
        response = requests.get(url, headers=headers)
        if response.status_code != 200:
            self.logger.warning(
                "Error retrieving Hybrid Analysis Quota (HTTP Status code: %d)",
                response.status_code,
            )
            return 0

        api_limits_json = response.headers.get("api-limits")
        api_limits = json.loads(api_limits_json)

        # First check if the limit has been reached
        limit_reached = get_value("limit_reached", api_limits, False)
        if limit_reached:
            return 0

        # Extract the limits and usage
        limits_minute = get_value("limits.minute", api_limits, 0)
        limits_hour = get_value("limits.hour", api_limits, 0)
        used_minute = get_value("used.minute", api_limits, 0)
        used_hour = get_value("used.hour", api_limits, 0)

        remaining_minute = limits_minute - used_minute
        remaining_hour = limits_hour - used_hour

        self.logger.debug(
            "Remaining quotas: hour(%d) / minute(%d)", remaining_hour, remaining_minute
        )

        # Return the remaining quota per minute
        return remaining_minute