Skip to content

Commit 48344b2

Browse files
added latency and statusCode checks for monitoring tool on account, transfer and verify services
1 parent 09f1832 commit 48344b2

File tree

4 files changed

+60
-53
lines changed

4 files changed

+60
-53
lines changed

rave_python/rave_account.py

Lines changed: 4 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -44,9 +44,7 @@ def charge(self, accountDetails, hasFailed=False):
4444

4545
# setting the endpoint
4646
endpoint = self._baseUrl + self._endpointMap['account']['charge']
47-
# tracking_endpoint = self._trackingMap
48-
# tracking_payload = {"publicKey": self._getPublicKey(),"language": "Python v2", "version": "1.2.5", "title": "Incoming call","message": "Initiate Account charge"}
49-
# tracking_response = requests.post(tracking_endpoint, data=json.dumps(tracking_payload))
47+
feature_name = "Initiate-Account-charge"
5048

5149
# It is faster to just update rather than check if it is already present
5250
accountDetails.update({'payment_type': 'account'})
@@ -57,8 +55,9 @@ def charge(self, accountDetails, hasFailed=False):
5755
# Checking for required account components
5856
requiredParameters = ['accountbank', 'accountnumber', 'amount', 'email', 'phonenumber', 'IP']
5957

60-
return super().charge(accountDetails, requiredParameters, endpoint)
58+
return super().charge(feature_name, accountDetails, requiredParameters, endpoint)
6159

6260
def verify(self, txRef):
6361
endpoint = self._baseUrl + self._endpointMap['account']['verify']
64-
return super().verify(txRef, endpoint)
62+
feature_name = "Account-charge-verify"
63+
return super().verify(feature_name, txRef, endpoint)

rave_python/rave_transfer.py

Lines changed: 41 additions & 35 deletions
Original file line numberDiff line numberDiff line change
@@ -47,13 +47,8 @@ def _handleBulkResponse(self, response, bulkDetails):
4747

4848
def initiate(self, transferDetails):
4949

50-
#feature logging
51-
tracking_endpoint = self._trackingMap
52-
tracking_payload = {"publicKey": self._getPublicKey(),"language": "Python v2", "version": "1.2.5", "title": "Incoming call","message": "Initiate-Transfer"}
53-
tracking_response = requests.post(tracking_endpoint, data=json.dumps(tracking_payload))
5450

5551
## feature logic
56-
5752
# Performing shallow copy of transferDetails to avoid public exposing payload with secret key
5853
transferDetails = copy.copy(transferDetails)
5954

@@ -74,17 +69,24 @@ def initiate(self, transferDetails):
7469

7570
endpoint = self._baseUrl + self._endpointMap["transfer"]["initiate"]
7671
response = requests.post(endpoint, headers=headers, data=json.dumps(transferDetails))
72+
73+
if response.ok == False:
74+
#feature logging
75+
tracking_endpoint = self._trackingMap
76+
responseTime = response.elapsed.total_seconds()
77+
tracking_payload = {"publicKey": self._getPublicKey(),"language": "Python v2", "version": "1.2.5", "title": "Initiate-Transfer-error","message": responseTime}
78+
tracking_response = requests.post(tracking_endpoint, data=json.dumps(tracking_payload))
79+
else:
80+
tracking_endpoint = self._trackingMap
81+
responseTime = response.elapsed.total_seconds()
82+
tracking_payload = {"publicKey": self._getPublicKey(),"language": "Python v2", "version": "1.2.5", "title": "Initiate-Transfer","message": responseTime}
83+
tracking_response = requests.post(tracking_endpoint, data=json.dumps(tracking_payload))
7784
return self._handleInitiateResponse(response, transferDetails)
7885

7986

8087

8188
def bulk(self, bulkDetails):
8289

83-
#feature logging
84-
tracking_endpoint = self._trackingMap
85-
tracking_payload = {"publicKey": self._getPublicKey(),"language": "Python v2", "version": "1.2.5", "title": "Incoming call","message": "Initiate-bulk-Transfer"}
86-
tracking_response = requests.post(tracking_endpoint, data=json.dumps(tracking_payload))
87-
8890
# feature logic
8991
bulkDetails = copy.copy(bulkDetails)
9092

@@ -104,11 +106,24 @@ def bulk(self, bulkDetails):
104106
'content-type': 'application/json',
105107
}
106108
response = requests.post(endpoint, headers=headers, data=json.dumps(bulkDetails))
109+
110+
if response.ok == False:
111+
#feature logging
112+
tracking_endpoint = self._trackingMap
113+
responseTime = response.elapsed.total_seconds()
114+
tracking_payload = {"publicKey": self._getPublicKey(),"language": "Python v2", "version": "1.2.5", "title": "Initiate-Bulk-error","message": responseTime}
115+
tracking_response = requests.post(tracking_endpoint, data=json.dumps(tracking_payload))
116+
else:
117+
tracking_endpoint = self._trackingMap
118+
responseTime = response.elapsed.total_seconds()
119+
tracking_payload = {"publicKey": self._getPublicKey(),"language": "Python v2", "version": "1.2.5", "title": "Initiate-Bulk","message": responseTime}
120+
tracking_response = requests.post(tracking_endpoint, data=json.dumps(tracking_payload))
121+
107122
return self._handleBulkResponse(response, bulkDetails)
108123

109124

110125
# This makes and handles all requests pertaining to the status of your transfer or account
111-
def _handleTransferStatusRequests(self, endpoint, isPostRequest=False, data=None):
126+
def _handleTransferStatusRequests(self, endpoint, feature_name, isPostRequest=False, data=None):
112127

113128
# Request headers
114129
headers = {
@@ -129,52 +144,43 @@ def _handleTransferStatusRequests(self, endpoint, isPostRequest=False, data=None
129144

130145
# Checks if it returns a 2xx code
131146
if response.ok:
147+
tracking_endpoint = self._trackingMap
148+
responseTime = response.elapsed.total_seconds()
149+
tracking_payload = {"publicKey": self._getPublicKey(),"language": "Python v2", "version": "1.2.5", "title": feature_name,"message": responseTime}
150+
tracking_response = requests.post(tracking_endpoint, data=json.dumps(tracking_payload))
132151
return {"error": False, "returnedData": responseJson}
133152
else:
153+
tracking_endpoint = self._trackingMap
154+
responseTime = response.elapsed.total_seconds()
155+
tracking_payload = {"publicKey": self._getPublicKey(),"language": "Python v2", "version": "1.2.5", "title": feature_name + "-error","message": responseTime}
134156
raise TransferFetchError({"error": True, "returnedData": responseJson })
135157

136158
# Not elegant but supports python 2 and 3
137159
def fetch(self, reference=None):
138160

139-
#feature logging
140-
tracking_endpoint = self._trackingMap
141-
tracking_payload = {"publicKey": self._getPublicKey(),"language": "Python v2", "version": "1.2.5", "title": "Incoming call","message": "Fetch-Transfer"}
142-
tracking_response = requests.post(tracking_endpoint, data=json.dumps(tracking_payload))
143-
144161
#feature logic
162+
label = "Fetch-Transfer"
145163
endpoint = self._baseUrl + self._endpointMap["transfer"]["fetch"] + "?seckey="+self._getSecretKey()+'&reference='+str(reference)
146-
return self._handleTransferStatusRequests(endpoint)
164+
return self._handleTransferStatusRequests(label, endpoint)
147165

148166
def all(self):
149167

150-
#feature logging
151-
tracking_endpoint = self._trackingMap
152-
tracking_payload = {"publicKey": self._getPublicKey(),"language": "Python v2", "version": "1.2.5", "title": "Incoming call","message": "List-all-Transfers"}
153-
tracking_response = requests.post(tracking_endpoint, data=json.dumps(tracking_payload))
154-
155168
#feature logic
169+
label = "List-all-Transfers"
156170
endpoint = self._baseUrl + self._endpointMap["transfer"]["fetch"] + "?seckey="+self._getSecretKey()
157-
return self._handleTransferStatusRequests(endpoint)
171+
return self._handleTransferStatusRequests(label, endpoint)
158172

159173
def getFee(self, currency=None):
160174

161-
# feature logging
162-
tracking_endpoint = self._trackingMap
163-
tracking_payload = {"publicKey": self._getPublicKey(),"language": "Python v2", "version": "1.2.5", "title": "Incoming call","message": "Get-Transfer-fee-by-Currency"}
164-
tracking_response = requests.post(tracking_endpoint, data=json.dumps(tracking_payload))
165-
166175
# feature logic
176+
label = "Get-Transfer-fee-by-Currency"
167177
endpoint = self._baseUrl + self._endpointMap["transfer"]["fee"] + "?seckey="+self._getSecretKey() + "&currency="+str(currency)
168-
return self._handleTransferStatusRequests(endpoint)
178+
return self._handleTransferStatusRequests(label, endpoint)
169179

170180
def getBalance(self, currency):
171181

172-
# feature logging
173-
tracking_endpoint = self._trackingMap
174-
tracking_payload = {"publicKey": self._getPublicKey(),"language": "Python v2", "version": "1.2.5", "title": "Incoming call","message": "Get-Balance-fee-by-Currency"}
175-
tracking_response = requests.post(tracking_endpoint, data=json.dumps(tracking_payload))
176-
177182
# feature logic
183+
label = "Get-Balance-fee-by-Currency"
178184
if not currency: # i made currency compulsory because if it is not assed in, an error message is returned from the server
179185
raise IncompletePaymentDetailsError("currency", ["currency"])
180186
endpoint = self._baseUrl + self._endpointMap["transfer"]["balance"]
@@ -183,7 +189,7 @@ def getBalance(self, currency):
183189
"currency": currency
184190
}
185191

186-
return self._handleTransferStatusRequests(endpoint, data=data, isPostRequest=True)
192+
return self._handleTransferStatusRequests(label, endpoint, data=data, isPostRequest=True)
187193

188194

189195

rave_python/rave_verify.py

Lines changed: 13 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -34,7 +34,7 @@ def _preliminaryResponseChecks(self, response, TypeOfErrorToRaise, name):
3434
# else:
3535
# raise CardCreationError({"error": True, "data": responseJson["data"]})
3636

37-
def _handleVerifyStatusRequests(self, endpoint, isPostRequest=False, data=None):
37+
def _handleVerifyStatusRequests(self, endpoint, feature_name, isPostRequest=False, data=None):
3838
self.headers = {
3939
'content-type' : 'application/json'
4040
}
@@ -51,19 +51,25 @@ def _handleVerifyStatusRequests(self, endpoint, isPostRequest=False, data=None):
5151
raise ServerError({"error": True, "errMsg": response.text})
5252

5353
if response.ok:
54+
#feature logging
55+
tracking_endpoint = self._trackingMap
56+
responseTime = response.elapsed.total_seconds()
57+
tracking_payload = {"publicKey": self._getPublicKey(),"language": "Python v2", "version": "1.2.5", "title": feature_name,"message": responseTime}
58+
tracking_response = requests.post(tracking_endpoint, data=json.dumps(tracking_payload))
5459
return {"error": False, "returnedData": responseJson}
5560
else:
61+
tracking_endpoint = self._trackingMap
62+
responseTime = response.elapsed.total_seconds()
63+
tracking_payload = {"publicKey": self._getPublicKey(),"language": "Python v2", "version": "1.2.5", "title": feature_name + "-error", "message": responseTime}
64+
tracking_response = requests.post(tracking_endpoint, data=json.dumps(tracking_payload))
65+
5666
raise BVNFetchError({"error": True, "returnedData": responseJson })
5767

5868
def bvnVerify(self, bvn):
59-
60-
#feature logging
61-
tracking_endpoint = self._trackingMap
62-
tracking_payload = {"publicKey": self._getPublicKey(),"language": "Python v2", "version": "1.2.5", "title": "Incoming call","message": "BVN-verification"}
63-
tracking_response = requests.post(tracking_endpoint, data=json.dumps(tracking_payload))
6469

6570
# feature logic
6671
if not bvn:
6772
return "BVN was not supplied. Kindly supply one"
73+
feature_name = "BVN-verification"
6874
endpoint = self._baseUrl + self._endpointMap["bvn"]["verify"] +str(bvn)+"?seckey=" + self._getSecretKey()
69-
return self._handleVerifyStatusRequests(endpoint)
75+
return self._handleVerifyStatusRequests(endpoint, feature_name)

rave_python/rave_zbmobile.py

Lines changed: 2 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -17,12 +17,8 @@ def charge(self, accountDetails, hasFailed=False):
1717
hasFailed (boolean) -- This is a flag to determine if the attempt had previously failed due to a timeout\n
1818
"""
1919

20-
#feature logging
21-
tracking_endpoint = self._trackingMap
22-
tracking_payload = {"publicKey": self._getPublicKey(),"language": "Python v2", "version": "1.2.5", "title": "Incoming call","message": "Initiate-Zambia-mobile-money-charge"}
23-
tracking_response = requests.post(tracking_endpoint, data=json.dumps(tracking_payload))
24-
2520
## Feature logic
21+
feature_name = "Initiate-Zambia-mobile-money-charge"
2622
endpoint = self._baseUrl + self._endpointMap["account"]["charge"]
2723
# It is faster to add boilerplate than to check if each one is present
2824
accountDetails.update({"payment_type": "mobilemoneyzambia", "country":"NG", "is_mobile_money_ug":"1", "currency":"ZMW", "network": "MTN"})
@@ -34,5 +30,5 @@ def charge(self, accountDetails, hasFailed=False):
3430
accountDetails.update({"orderRef": generateTransactionReference()})
3531
# Checking for required account components
3632
requiredParameters = ["amount", "email", "phonenumber", "network", "IP", "redirect_url"]
37-
return super(ZBMobile, self).charge(accountDetails, requiredParameters, endpoint)
33+
return super(ZBMobile, self).charge(feature_name, accountDetails, requiredParameters, endpoint)
3834

0 commit comments

Comments
 (0)