55from .core .httpendpoint import HttpEndpoint
66from .core .httprequest import HttpRequest
77from .core .injectionrequestfactory import InjectionRequestFactory
8+ from .core .injectionresponseparser import InjectionResponseParser
89from .core .sendvalidator import SendValidator
10+ from .core .retryhandler import RetryHandler
11+ from .retrysettings import RetrySettings
912from .message .basicmessage import BasicMessage
1013from .message .bulkmessage import BulkMessage
1114from .proxy import Proxy
@@ -32,6 +35,7 @@ def __init__(self, server_id: int, api_key: str, proxy: Proxy = None):
3235 self ._api_key = api_key
3336 self ._http_proxy = proxy
3437 self ._request_timeout = 120
38+ self ._number_of_retries = 0
3539
3640 @property
3741 def __endpoint (self ):
@@ -69,6 +73,14 @@ def request_timeout(self, timeout: int):
6973 """
7074 self ._request_timeout = timeout
7175
76+ @property
77+ def number_of_retries (self ):
78+ return self ._number_of_retries
79+
80+ @number_of_retries .setter
81+ def number_of_retries (self , retries : int ):
82+ self ._number_of_retries = retries
83+
7284 def __build_http_request (self ):
7385 """
7486 Build the HttpRequest. Will add the proxy, if set
@@ -110,8 +122,13 @@ def __send_basic_message(self, message: BasicMessage):
110122 req_factory = InjectionRequestFactory (self ._server_id , self ._api_key )
111123 body = req_factory .generate_request (message )
112124
113- request = self .__build_http_request ()
114- result = request .send_request (body )
125+ retry_handler = RetryHandler (self .__build_http_request (), RetrySettings (self .number_of_retries ))
126+ response = retry_handler .send (body )
127+
128+ data = response .read ().decode ("utf-8" )
129+ response_code = response .status
130+ result = InjectionResponseParser .parse (data , response_code )
131+
115132 return result
116133
117134 def __send_bulk_message (self , message : BulkMessage ):
@@ -129,8 +146,13 @@ def __send_bulk_message(self, message: BulkMessage):
129146 req_factory = InjectionRequestFactory (self ._server_id , self ._api_key )
130147 body = req_factory .generate_request (message )
131148
132- request = self .__build_http_request ()
133- result = request .send_request (body )
149+ retry_handler = RetryHandler (self .__build_http_request (), RetrySettings (self .number_of_retries ))
150+ response = retry_handler .send (body )
151+
152+ data = response .read ().decode ("utf-8" )
153+ response_code = response .status
154+ result = InjectionResponseParser .parse (data , response_code )
155+
134156 return result
135157
136158 def send_async (self , message : BasicMessage , on_success , on_error ):
@@ -167,8 +189,21 @@ def __send_basic_message_async(self, message: BasicMessage, on_success, on_error
167189 req_factory = InjectionRequestFactory (self ._server_id , self ._api_key )
168190 body = req_factory .generate_request (message )
169191
170- request = self .__build_http_request ()
171- request .send_async_request (body , on_success , on_error )
192+ retry_handler = RetryHandler (self .__build_http_request (), RetrySettings (self .number_of_retries ))
193+
194+ def on_success_callback (response ):
195+ response = retry_handler .send (body )
196+
197+ data = response .read ().decode ("utf-8" )
198+ response_code = response .status
199+ result = InjectionResponseParser .parse (data , response_code )
200+
201+ on_success (result )
202+
203+ def on_error_callback (exception ):
204+ on_error (exception )
205+
206+ retry_handler .send_async (body , on_success_callback , on_error_callback )
172207
173208 def __send_bulk_message_async (self , message : BulkMessage , on_success , on_error ):
174209 """
@@ -187,8 +222,27 @@ def __send_bulk_message_async(self, message: BulkMessage, on_success, on_error):
187222 req_factory = InjectionRequestFactory (self ._server_id , self ._api_key )
188223 body = req_factory .generate_request (message )
189224
225+ retry_handler = RetryHandler (self .__build_http_request (), RetrySettings (self .number_of_retries ))
226+
227+ def on_success_callback (response ):
228+ response = retry_handler .send (body )
229+
230+ data = response .read ().decode ("utf-8" )
231+ response_code = response .status
232+ result = InjectionResponseParser .parse (data , response_code )
233+
234+ on_success (result )
235+
236+ def on_error_callback (exception ):
237+ on_error (exception )
238+
239+ retry_handler .send_async (body , on_success_callback , on_error_callback )
240+
241+ """
190242 request = self.__build_http_request()
191- request .send_async_request (body , on_success , on_error )
243+ retry_handler = RetryHandler(request, RetrySettings(self.number_of_retries))
244+ retry_handler.send_async(body, on_success, on_error)
245+ """
192246
193247 def __validate_basic_message (self , message : BasicMessage ):
194248 """
0 commit comments