Skip to content

Commit

Permalink
Create ChapaException class to handle 4XX and 5XX response codes
Browse files Browse the repository at this point in the history
  • Loading branch information
yaphet17 committed Jun 1, 2023
1 parent 733c948 commit 1fe71df
Show file tree
Hide file tree
Showing 4 changed files with 53 additions and 2 deletions.
25 changes: 25 additions & 0 deletions src/main/java/com/yaphet/chapa/Chapa.java
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@

import com.yaphet.chapa.client.ChapaClient;
import com.yaphet.chapa.client.ChapaClientImpl;
import com.yaphet.chapa.exception.ChapaException;
import com.yaphet.chapa.model.*;
import com.yaphet.chapa.utility.Util;

Expand Down Expand Up @@ -94,6 +95,10 @@ public InitializeResponseData initialize(PostData postData) throws Throwable { /
responseBody = chapaClient.post(BASE_URL + "/transaction/initialize", fields, SECRETE_KEY);
statusCode = chapaClient.getStatusCode();

if(!Util.is2xxSuccessful(chapaClient.getStatusCode())) {
throw new ChapaException(responseBody);
}

InitializeResponseData initializeResponseData = Util.jsonToInitializeResponseData(responseBody)
.setRawJson(responseBody)
.setStatusCode(statusCode);
Expand All @@ -115,6 +120,10 @@ public InitializeResponseData initialize(String jsonData) throws Throwable {
responseBody = chapaClient.post(BASE_URL + "/transaction/initialize", jsonData, SECRETE_KEY);
statusCode = chapaClient.getStatusCode();

if(!Util.is2xxSuccessful(chapaClient.getStatusCode())) {
throw new ChapaException(responseBody);
}

InitializeResponseData initializeResponseData = Util.jsonToInitializeResponseData(responseBody)
.setRawJson(responseBody)
.setStatusCode(statusCode);
Expand All @@ -137,6 +146,10 @@ public VerifyResponseData verify(String transactionRef) throws Throwable {
responseBody = chapaClient.get(BASE_URL + "/transaction/verify/" + transactionRef, SECRETE_KEY);
statusCode = chapaClient.getStatusCode();

if(!Util.is2xxSuccessful(chapaClient.getStatusCode())) {
throw new ChapaException(responseBody);
}

VerifyResponseData verifyResponseData = Util.jsonToVerifyResponseData(responseBody)
.setRawJson(responseBody)
.setStatusCode(statusCode);
Expand All @@ -152,6 +165,10 @@ public List<Bank> banks() throws Throwable {
responseBody = chapaClient.get(BASE_URL + "/banks", SECRETE_KEY);
statusCode = chapaClient.getStatusCode();

if(!Util.is2xxSuccessful(chapaClient.getStatusCode())) {
throw new ChapaException(responseBody);
}

return Util.extractBanks(responseBody);
}

Expand All @@ -176,6 +193,10 @@ public SubAccountResponseData createSubAccount(SubAccount subAccount) throws Thr
responseBody = chapaClient.post(BASE_URL + "/subaccount", fields, SECRETE_KEY);
statusCode = chapaClient.getStatusCode();

if(!Util.is2xxSuccessful(chapaClient.getStatusCode())) {
throw new ChapaException(responseBody);
}

SubAccountResponseData subAccountResponseData = Util.jsonToSubAccountResponseData(responseBody)
.setRawJson(responseBody)
.setStatusCode(statusCode);
Expand All @@ -196,6 +217,10 @@ public SubAccountResponseData createSubAccount(String jsonData) throws Throwable
responseBody = chapaClient.post(BASE_URL + "/subaccount", jsonData, SECRETE_KEY);
statusCode = chapaClient.getStatusCode();

if(!Util.is2xxSuccessful(chapaClient.getStatusCode())) {
throw new ChapaException(responseBody);
}

SubAccountResponseData subAccountResponseData = Util.jsonToSubAccountResponseData(responseBody)
.setRawJson(responseBody)
.setStatusCode(statusCode);
Expand Down
19 changes: 19 additions & 0 deletions src/main/java/com/yaphet/chapa/exception/ChapaException.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
package com.yaphet.chapa.exception;

/**
* A ChapaException is thrown to signal a problem during SDK execution.
*/
public class ChapaException extends Exception {

public ChapaException(String message) {
super(message);
}

public ChapaException(Throwable cause) {
super(cause);
}

public ChapaException(String message, Throwable cause) {
super(message, cause);
}
}
4 changes: 4 additions & 0 deletions src/main/java/com/yaphet/chapa/utility/Util.java
Original file line number Diff line number Diff line change
Expand Up @@ -124,4 +124,8 @@ public static String generateToken() {
public static boolean notNullAndEmpty(String value) {
return value != null && !value.isEmpty();
}

public static boolean is2xxSuccessful(int statucCode) {
return (statucCode / 100) == 2;
}
}
7 changes: 5 additions & 2 deletions src/test/java/com/yaphet/chapa/ChapaTest.java
Original file line number Diff line number Diff line change
Expand Up @@ -47,6 +47,7 @@ void setUp() {
.setEmail("abebe@bikila.com")
.setTxRef(Util.generateToken())
.setCallbackUrl("https://chapa.co")
.setReturnUrl("https://chapa.co")
.setSubAccountId("testSubAccountId")
.setCustomization(customization);
postDataString = " { " +
Expand All @@ -57,6 +58,7 @@ void setUp() {
"'last_name': 'Bikila'," +
"'tx_ref': 'tx-myecommerce12345'," +
"'callback_url': 'https://chapa.co'," +
"'return_url': 'https://chapa.co'," +
"'subaccount[id]': 'testSubAccountId'," +
"'customizations':{'customization[title]':'E-commerce','customization[description]':'It is time to pay','customization[logo]':'https://mylogo.com/log.png'}" +
" }";
Expand Down Expand Up @@ -220,7 +222,7 @@ public void shouldCreateSubAccount_asResponseData() throws Throwable {

// This should not run in the pipeline
@Test
@Disabled
// @Disabled
public void testDefault() throws Throwable {
// given
Customization customization = new Customization()
Expand All @@ -232,9 +234,10 @@ public void testDefault() throws Throwable {
.setCurrency("ETB")
.setFirstName("Abebe")
.setLastName("Bikila")
.setEmail("abebe@bikila.com")
.setEmail("abebe@bikila")
.setTxRef(Util.generateToken())
.setCallbackUrl("https://chapa.co")
.setReturnUrl("https://chapa.co")
.setSubAccountId("testSubAccountId")
.setCustomization(customization);
subAccount = new SubAccount()
Expand Down

0 comments on commit 1fe71df

Please sign in to comment.