
    |*&i	                     p    S SK JrJr  S SKJr  S SKJr  S SKJr  S SK	J
r
  S SKJr  S SKJr   " S S	5      rg
)    )ListDict)VulnerabilityIntelligence)Source)CacheManager)collect_results)ProgressManagerFactory)PostCollectionPipelinec                   l    \ rS rSr  SS\\   S\S\S\S\	S\	4S jjr
/ 4S	\\   S
\	S\\   4S jjrSrg)SearchManager	   sourcesenrichment_configprogress_manager_factorycache_managermax_retriesretry_delayc                 L    Xl         XPl        X`l        X l        X0l        X@l        g N)r   r   r   r   r   r   )selfr   r   r   r   r   r   s          6/home/kali/cveseeker/services/search/search_manager.py__init__SearchManager.__init__
   s'     &&!2(@%*    keywordsmax_resultsreturnc           	        ^ ^ [        SSR                  U5       SU S35        T R                  (       d  [        S5        / $ T R                  R	                  5       mS[
        S[        4UU 4S jjn[        T R                  UUUT R                  T R                  S	9n[        S
5        [        T R                  UT R                  S9nUR                  XQ5      nTR                  5         U$ )Nz[*] Initiating search for: " z" with a maximum of z results per source.
z%[!] Please enable at least one sourcesource_nameresult_countc                 T   > [        TR                  5      nTR                  XU5        g r   )lenr   report_progress)r    r!   total_sourcesprogress_managerr   s      r   progress_callback/SearchManager.search.<locals>.progress_callback#   s!    -M,,[Vr   )r   r   r   r'   r   r   z [+] Collection process complete.)r   desired_severitiesr   )printjoinr   r   create_progress_managerstrintr   r   r   r
   r   r   processreset_progress)	r   r   r   r)   r'   resultspipelineprocessed_resultsr&   s	   `       @r   searchSearchManager.search   s    -chhx.@-AAVWbVccyz{||9:I88PPR	W3 	Wc 	W 	W "LL#/((((
 	01)"441,,
 %,,W?'')  r   )r   r   r   r   r   r   N)      )__name__
__module____qualname____firstlineno__r   r   r   r	   r   r.   r   r-   r   r4   __static_attributes__ r   r   r   r   	   s~     +f+  + #9	+
 $+ + +  PR "!tCy "!s "!VZ[tVu "! "!r   r   N)typingr   r   !models.vulnerability_intelligencer   services.api.sourcer   services.cache.cache_managerr   !services.search.engine.collectionr   'services.search.engine.progress_factoryr	   /services.search.engine.post_collection_pipeliner
   r   r=   r   r   <module>rE      s$     G & 5 = J R3! 3!r   