diff --git a/theHarvester/__main__.py b/theHarvester/__main__.py index 677a773e..729df92a 100644 --- a/theHarvester/__main__.py +++ b/theHarvester/__main__.py @@ -455,9 +455,10 @@ async def start(rest_args: argparse.Namespace | None = None): ) except Exception as e: show_default_error_message(engineitem, word, error=e) - elif engineitem == 'bitbucket-code': + + elif engineitem == 'bitbucket': try: - bitbucket_search = bitbucket.SearchBitBucketCode(word, limit) + bitbucket_search = bitbucket.SearchBitBucket(word, limit) stor_lst.append( store( bitbucket_search, @@ -466,9 +467,11 @@ async def start(rest_args: argparse.Namespace | None = None): store_emails=True, ) ) - except MissingKey as ex: - if not args.quiet: - print(f'A Missing Key error occurred in bitbucket: {ex}') + except Exception as ex: + if isinstance(ex, MissingKey): + print(MissingKey('Bitbucket')) + else: + show_default_error_message(engineitem, word, ex) elif engineitem == 'brave': try: diff --git a/theHarvester/discovery/bitbucket.py b/theHarvester/discovery/bitbucket.py index 0e2c32f2..13317591 100644 --- a/theHarvester/discovery/bitbucket.py +++ b/theHarvester/discovery/bitbucket.py @@ -25,31 +25,27 @@ class ErrorResult(NamedTuple): body: Any -class SearchBitBucketCode: +class SearchBitBucket: def __init__(self, word, limit) -> None: - try: - self.word = word - self.total_results = '' - self.server = 'api.bitbucket.org' - self.limit = limit - self.counter = 0 - self.page = 1 - self.key = Core.bitbucket_key() - if self.key is None: - raise MissingKey('BitBucket') - self.proxy = False - self.base_url = f'https://{self.server}/2.0/repositories/"{self.word}"/src' # Word must contain username and repo - self.headers = { - 'Host': self.server, - 'User-agent': Core.get_user_agent(), - 'Authorization': f'token {self.key}', - } - # Retry control to avoid infinite loops on rate limiting - self.retry_count = 0 - self.max_retries = 3 - except Exception as e: - print(f'Error initializing SearchBitbucketCode: {e}') - raise + self.word = word + self.total_results = '' + self.server = 'api.bitbucket.org' + self.limit = limit + self.counter = 0 + self.page = 1 + self.key = Core.bitbucket_key() + if self.key is None: + raise MissingKey('BitBucket') + self.proxy = False + self.base_url = f'https://{self.server}/2.0/repositories/"{self.word}"/src' # Word must contain a username and repo + self.headers = { + 'Host': self.server, + 'User-agent': Core.get_user_agent(), + 'Authorization': f'token {self.key}', + } + # Retry control to avoid infinite loops on rate limiting + self.retry_count = 0 + self.max_retries = 3 @staticmethod async def fragments_from_response(json_data: dict) -> list[str]: @@ -149,7 +145,7 @@ class SearchBitBucketCode: print(f'Error processing page: {e}') await asyncio.sleep(get_delay()) except Exception as e: - print(f'An exception has occurred in bitbucketcode process: {e}') + print(f'An exception has occurred in bitbucket process: {e}') async def get_emails(self): try: diff --git a/theHarvester/lib/core.py b/theHarvester/lib/core.py index acb2a909..47f5f103 100644 --- a/theHarvester/lib/core.py +++ b/theHarvester/lib/core.py @@ -218,6 +218,7 @@ class Core: return [ 'baidu', 'bevigil', + 'bitbucket', 'bufferoverun', 'builtwith', 'brave',