@@ -8,6 +8,7 @@ import com.google.gson.Gson
88import com.google.gson.reflect.TypeToken
99import com.isolpro.custom.Callback
1010import com.isolpro.library.connection.helpers.Utils
11+ import com.isolpro.library.connection.interfaces.ResponseParser
1112import org.json.JSONException
1213import org.json.JSONObject
1314import java.io.*
@@ -29,6 +30,7 @@ abstract class Connection<T>() {
2930 private var payload: Any? = JSONObject ()
3031 private var success: Callback <T >? = null
3132 private var failure: Callback <T >? = null
33+ private var parser: ResponseParser <T >? = null
3234 private var loader = true
3335
3436 private var endpoint: String = " "
@@ -144,6 +146,11 @@ abstract class Connection<T>() {
144146 return this ;
145147 }
146148
149+ fun parser (parser : ResponseParser <T >): Connection <T > {
150+ this .parser = parser;
151+ return this ;
152+ }
153+
147154 private fun hasOfflineEndpoint (): Boolean {
148155 return offlineEndpoint != null && offlineEndpoint != " "
149156 }
@@ -230,7 +237,16 @@ abstract class Connection<T>() {
230237 onResponseReceived(mutatedResponseString)
231238
232239 try {
233- val res = Gson ().fromJson<T >(mutatedResponseString, object : TypeToken <Connection <T >>() {}.type);
240+ val res: T ? = if (parser == null ) {
241+ Gson ().fromJson<T >(mutatedResponseString, object : TypeToken <Connection <T >>() {}.type);
242+ } else {
243+ mutatedResponseString?.let { parser!! .parse(it) };
244+ }
245+
246+ if (res != null ) {
247+ onFailure();
248+ return
249+ }
234250
235251 onSuccess(res);
236252
0 commit comments