diff --git a/intezer_sdk/__init__.py b/intezer_sdk/__init__.py index dac7288..c64dfe0 100644 --- a/intezer_sdk/__init__.py +++ b/intezer_sdk/__init__.py @@ -1 +1 @@ -__version__ = '1.21.11' +__version__ = '1.21.12' diff --git a/intezer_sdk/analysis.py b/intezer_sdk/analysis.py index f8b76af..8b1b951 100644 --- a/intezer_sdk/analysis.py +++ b/intezer_sdk/analysis.py @@ -8,6 +8,7 @@ from typing import Optional from typing import Union from typing import List +from urllib.parse import urlparse import requests from requests import Response @@ -335,6 +336,17 @@ def get_file_analysis_by_id(analysis_id: str, api: IntezerApi = None) -> Optiona def get_analysis_by_id(analysis_id: str, api: IntezerApi = None) -> Optional[FileAnalysis]: return get_file_analysis_by_id(analysis_id, api) + +def _get_domain(url: str) -> str: + if not url.startswith(('http://', 'https://')): + url = 'http://' + url + return urlparse(url).netloc + + +def _domain_contains(url: str, search_domain: str) -> bool: + return search_domain in _get_domain(url) + + def _clean_url(url: str) -> str: """ Remove http:// or https:// or www. from the beginning of the URL, @@ -407,7 +419,12 @@ def from_latest_analysis(cls, url=url, aggregated_view=True, api=api) - analyses_ids = [report['analysis_id'] for report in analysis_history_url_result.all()] + + analyses_ids = [ + report['analysis_id'] for report in analysis_history_url_result.all() + if _domain_contains(report['submitted_url'], url) + or _domain_contains(report['scanned_url'], url) + ] if not analyses_ids: return None diff --git a/tests/unit/test_url_analysis.py b/tests/unit/test_url_analysis.py index 539fb89..f11b2bb 100644 --- a/tests/unit/test_url_analysis.py +++ b/tests/unit/test_url_analysis.py @@ -6,6 +6,7 @@ from intezer_sdk import consts from intezer_sdk import errors from intezer_sdk.analysis import UrlAnalysis +from intezer_sdk.analysis import _domain_contains from intezer_sdk.api import get_global_api from intezer_sdk.consts import OnPremiseVersion from tests.unit.base_test import BaseTest @@ -262,3 +263,19 @@ def test_get_url_latest_analysis_analyses_not_found(self): # Assert self.assertIsNone(analysis) + + + def test_domain_contains_util(self): + # Arrange + url1 = 'http://google.com/scans?email=orenk@intezer.com' + url2 = 'http://intezer.com/scans?email=someone@example.com' + url3 = 'https://www.intezer.com/scans?email=someone@example.com' + url4 = 'https://www.analyze.intezer.com/scans?email=someone@example.com' + + url_to_search = 'intezer.com' + + # Act + Assert + self.assertFalse(_domain_contains(url1, url_to_search)) + self.assertTrue(_domain_contains(url2, url_to_search)) + self.assertTrue(_domain_contains(url3, url_to_search)) + self.assertTrue(_domain_contains(url4, url_to_search)) \ No newline at end of file