77
88from leakix .base import BaseClient
99from leakix .base import HostResult as HostResult
10- from leakix .query import EmptyQuery , Query
10+ from leakix .query import AbstractQuery , serialize_queries
1111from leakix .response import (
1212 AbstractResponse ,
1313 ErrorResponse ,
@@ -41,7 +41,7 @@ def __get(self, url: str, params: dict[str, Any] | None) -> AbstractResponse:
4141 def get (
4242 self ,
4343 scope : Scope ,
44- queries : list [Query ] | None = None ,
44+ queries : list [AbstractQuery ] | None = None ,
4545 page : int = 0 ,
4646 ) -> AbstractResponse :
4747 """
@@ -68,10 +68,7 @@ def get(
6868 """
6969 if page < 0 :
7070 raise ValueError ("Page argument must be a positive integer" )
71- if queries is None or len (queries ) == 0 :
72- serialized_query = EmptyQuery ().serialize ()
73- else :
74- serialized_query = " " .join (q .serialize () for q in queries )
71+ serialized_query = serialize_queries (queries )
7572 url = f"{ self .base_url } /search"
7673 return self .__get (
7774 url = url ,
@@ -83,13 +80,13 @@ def get(
8380 )
8481
8582 def get_service (
86- self , queries : list [Query ] | None = None , page : int = 0
83+ self , queries : list [AbstractQuery ] | None = None , page : int = 0
8784 ) -> AbstractResponse :
8885 """Shortcut for `get` with the scope `Scope.SERVICE`."""
8986 return self ._parse_events (self .get (Scope .SERVICE , queries = queries , page = page ))
9087
9188 def get_leak (
92- self , queries : list [Query ] | None = None , page : int = 0
89+ self , queries : list [AbstractQuery ] | None = None , page : int = 0
9390 ) -> AbstractResponse :
9491 """Shortcut for `get` with the scope `Scope.LEAK`."""
9592 return self ._parse_events (self .get (Scope .LEAK , queries = queries , page = page ))
@@ -124,13 +121,11 @@ def get_subdomains(self, domain: str) -> AbstractResponse:
124121 url = f"{ self .base_url } /api/subdomains/{ domain } "
125122 return self ._parse_subdomains (self .__get (url , params = None ))
126123
127- def bulk_export (self , queries : list [Query ] | None = None ) -> AbstractResponse :
124+ def bulk_export (
125+ self , queries : list [AbstractQuery ] | None = None
126+ ) -> AbstractResponse :
128127 url = f"{ self .base_url } /bulk/search"
129- if queries is None or len (queries ) == 0 :
130- serialized_query = EmptyQuery ().serialize ()
131- else :
132- serialized_query = " " .join (q .serialize () for q in queries )
133- params = {"q" : serialized_query }
128+ params = {"q" : serialize_queries (queries )}
134129 r = requests .get (url , params = params , headers = self .headers , stream = True )
135130 if r .status_code == 200 :
136131 response_json = []
@@ -146,7 +141,7 @@ def bulk_export(self, queries: list[Query] | None = None) -> AbstractResponse:
146141 return ErrorResponse (response = r , response_json = r .json ())
147142
148143 def bulk_export_last_event (
149- self , queries : list [Query ] | None = None
144+ self , queries : list [AbstractQuery ] | None = None
150145 ) -> AbstractResponse :
151146 response = self .bulk_export (queries )
152147 if response .is_success ():
@@ -160,13 +155,11 @@ def bulk_export_last_event(
160155 aggreg .events = [sorted_events [0 ]]
161156 return response
162157
163- def bulk_service (self , queries : list [Query ] | None = None ) -> AbstractResponse :
158+ def bulk_service (
159+ self , queries : list [AbstractQuery ] | None = None
160+ ) -> AbstractResponse :
164161 url = f"{ self .base_url } /bulk/service"
165- if queries is None or len (queries ) == 0 :
166- serialized_query = EmptyQuery ().serialize ()
167- else :
168- serialized_query = " " .join (q .serialize () for q in queries )
169- params = {"q" : serialized_query }
162+ params = {"q" : serialize_queries (queries )}
170163 r = requests .get (url , params = params , headers = self .headers , stream = True )
171164 if r .status_code == 200 :
172165 response_json = []
0 commit comments