Skip to content

Commit f8ceabd

Browse files
added exception handling to send
1 parent 48cae38 commit f8ceabd

File tree

3 files changed

+33
-8
lines changed

3 files changed

+33
-8
lines changed

socketlabs/injectionapi/core/httprequest.py

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -159,11 +159,11 @@ def send_request(self, request: InjectionRequest):
159159
connection.request("POST", self._endpoint.url, json_body, headers)
160160
response = connection.getresponse()
161161

162-
data = response.read().decode("utf-8")
163-
response_code = response.status
162+
# data = response.read().decode("utf-8")
163+
# response_code = response.status
164164

165-
result = InjectionResponseParser.parse(data, response_code)
166-
return result
165+
# result = InjectionResponseParser.parse(data, response_code)
166+
return response
167167

168168
def __get_connection(self):
169169
"""

socketlabs/injectionapi/core/retryhandler.py

Lines changed: 27 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,11 @@
11
from http import HTTPStatus
22
from ..retrysettings import RetrySettings
33
from .httprequest import HttpRequest
4+
from .injectionresponseparser import InjectionResponseParser
5+
import sys
6+
import socket
7+
import time
8+
49
class RetryHandler(object):
510

611
ErrorStatusCodes = [
@@ -11,7 +16,7 @@ class RetryHandler(object):
1116
]
1217

1318
def __init__(self, http_client: HttpRequest, settings: RetrySettings):
14-
19+
1520
self.__http_client = http_client
1621
self.__retry_settings = settings
1722

@@ -21,5 +26,25 @@ def send(self, body):
2126
return self.__http_client.send_request(body)
2227

2328
attempts = 0
29+
while True:
30+
wait_interval = self.__retry_settings.get_next_wait_interval(attempts)
31+
32+
try:
33+
response = self.__http_client.send_request(body)
34+
35+
if response.status in self.ErrorStatusCodes:
36+
raise Exception("Server Error")
37+
38+
data = response.read().decode("utf-8")
39+
response_code = response.status
40+
result = InjectionResponseParser.parse(data, response_code)
2441

25-
return
42+
return result
43+
44+
except socket.timeout:
45+
attempts += 1
46+
print("Retry Attempt : ", sys.exc_info()[0])
47+
if attempts > self.__retry_settings.maximum_number_of_retries:
48+
raise socket.timeout
49+
time.sleep(wait_interval.seconds)
50+

socketlabs/injectionapi/retrysettings.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -13,10 +13,10 @@ def __init__(self, maximum_retries = None):
1313
if maximum_retries:
1414

1515
if maximum_retries < 0:
16-
raise ValueError("maximumNumberOfRetries must be greater than 0")
16+
raise AttributeError("maximumNumberOfRetries must be greater than 0")
1717

1818
if maximum_retries > self.__maximum_allowed_number_of_retries:
19-
raise ValueError("The maximum number of allowed retries is ", self.__maximum_allowed_number_of_retries)
19+
raise AttributeError("The maximum number of allowed retries is ", self.__maximum_allowed_number_of_retries)
2020

2121
self.__maximum_number_of_retries = maximum_retries
2222

0 commit comments

Comments
 (0)