Skip to content

Commit a5a84d7

Browse files
authored
Merge pull request #15 from utsavdotpro/LIB-13
create ResponseParser and allow custom parser
2 parents 7624b6e + 2e5b11a commit a5a84d7

2 files changed

Lines changed: 22 additions & 1 deletion

File tree

Connection/src/main/java/com/isolpro/library/connection/Connection.kt

Lines changed: 17 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@ import com.google.gson.Gson
88
import com.google.gson.reflect.TypeToken
99
import com.isolpro.custom.Callback
1010
import com.isolpro.library.connection.helpers.Utils
11+
import com.isolpro.library.connection.interfaces.ResponseParser
1112
import org.json.JSONException
1213
import org.json.JSONObject
1314
import 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

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
package com.isolpro.library.connection.interfaces;
2+
3+
public interface ResponseParser<T> {
4+
T parse(String data);
5+
}

0 commit comments

Comments
 (0)