From 69a73477111341bdf9d858def7029a388d8bf180 Mon Sep 17 00:00:00 2001
From: charlesagyemang <micnkru@gmail.com>
Date: Tue, 29 Aug 2017 17:50:39 +0000
Subject: [PATCH] Feat: Call back for Full Response

---
 .idea/markdown-exported-files.xml             |   8 ++
 .idea/misc.xml                                |   2 +-
 .../io/devlesssdkofficial/MainActivity.java   | 130 ++++++++++++++++--
 .../io/devless/interfaces/DeleteResponse.java |   1 +
 .../devless/interfaces/EditDataResponse.java  |   1 +
 .../devless/interfaces/GetDataResponse.java   |   1 +
 .../io/devless/interfaces/LoginResponse.java  |   1 +
 .../io/devless/interfaces/LogoutResponse.java |   1 +
 .../devless/interfaces/PostDataResponse.java  |   1 +
 .../devless/interfaces/RequestResponse.java   |   1 +
 .../io/devless/interfaces/SearchResponse.java |   1 +
 .../io/devless/interfaces/SignUpResponse.java |   2 +
 .../devless/io/devless/main/Devless.java      | 126 +++++++++++++----
 13 files changed, 240 insertions(+), 36 deletions(-)
 create mode 100644 .idea/markdown-exported-files.xml

diff --git a/.idea/markdown-exported-files.xml b/.idea/markdown-exported-files.xml
new file mode 100644
index 0000000..5d1f129
--- /dev/null
+++ b/.idea/markdown-exported-files.xml
@@ -0,0 +1,8 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project version="4">
+  <component name="MarkdownExportedFiles">
+    <htmlFiles />
+    <imageFiles />
+    <otherFiles />
+  </component>
+</project>
\ No newline at end of file
diff --git a/.idea/misc.xml b/.idea/misc.xml
index d2e6725..cbd46bd 100644
--- a/.idea/misc.xml
+++ b/.idea/misc.xml
@@ -27,7 +27,7 @@
       </value>
     </option>
   </component>
-  <component name="ProjectRootManager" version="2" languageLevel="JDK_1_8" default="true" assert-keyword="true" jdk-15="true" project-jdk-name="1.8" project-jdk-type="JavaSDK">
+  <component name="ProjectRootManager" version="2" languageLevel="JDK_1_7" default="true" assert-keyword="true" jdk-15="true" project-jdk-name="1.8" project-jdk-type="JavaSDK">
     <output url="file://$PROJECT_DIR$/build/classes" />
   </component>
   <component name="ProjectType">
diff --git a/app/src/main/java/androidsdk/devless/io/devlesssdkofficial/MainActivity.java b/app/src/main/java/androidsdk/devless/io/devlesssdkofficial/MainActivity.java
index 591b7f9..6cd5cd0 100644
--- a/app/src/main/java/androidsdk/devless/io/devlesssdkofficial/MainActivity.java
+++ b/app/src/main/java/androidsdk/devless/io/devlesssdkofficial/MainActivity.java
@@ -6,7 +6,15 @@
 import android.os.Bundle;
 import android.util.Log;
 
+import java.util.HashMap;
+import java.util.Map;
+
+import androidsdk.devless.io.devless.interfaces.DeleteResponse;
+import androidsdk.devless.io.devless.interfaces.EditDataResponse;
 import androidsdk.devless.io.devless.interfaces.GetDataResponse;
+import androidsdk.devless.io.devless.interfaces.LoginResponse;
+import androidsdk.devless.io.devless.interfaces.PostDataResponse;
+import androidsdk.devless.io.devless.interfaces.SearchResponse;
 import androidsdk.devless.io.devless.interfaces.SignUpResponse;
 import androidsdk.devless.io.devless.main.Devless;
 import androidsdk.devless.io.devless.messages.ErrorMessage;
@@ -37,39 +45,145 @@ protected void onCreate(Bundle savedInstanceState) {
           setUpDevlessUserToken Right under the instance and pass in the
           name of your shared preference variable. Im my case I called my shared preference *sp*
           */
-          //devless.addUserToken(sp);
+        devless.addUserToken(sp);
 
-        /*
 
-        devless.signUpWithEmailAndPassword("email@email.com", "password", sp, new SignUpResponse() {
+        // Sign Up
+        /*
+        devless.signUpWithEmailAndPassword("email1@email.com", "password", sp, new SignUpResponse() {
             @Override
             public void onSignUpSuccess(Payload payload) {
-                Log.e("hey", payload.toString());
+                Log.e("==Success==", payload.toString());
             }
 
             @Override
             public void onSignUpFailed(ErrorMessage errorMessage) {
-                Log.e("hey", errorMessage.toString());
+                Log.e("==Failure==", errorMessage.toString());
+            }
+        });
+        */
+
+
+        /*
+        devless.loginWithEmailAndPassword("email@email.com", "password", sp, new LoginResponse() {
+            @Override
+            public void onLogInSuccess(ResponsePayload response) {
+                Log.e("==Success==", response.toString());
+            }
+
+            @Override
+            public void onLogInFailed(ErrorMessage errorMessage) {
+                Log.e("==Failure==", errorMessage.toString());
+            }
+        });
+        */
+
+
+
+        /* Post Data
+        Map<String, Object> data = new HashMap<String, Object>();
+        data.put("name", "koobi");
+
+        devless.postData("plans", "test_table", data, new PostDataResponse() {
+            @Override
+            public void onSuccess(ResponsePayload response) {
+                Log.e("success", response.toString());
+            }
+
+            @Override
+            public void onFailed(ErrorMessage errorMessage) {
+                Log.e("Failed", errorMessage.toString());
+            }
+
+            @Override
+            public void userNotAuthenticated(ErrorMessage message) {
+                Log.e("UnAuth", message.toString());
+            }
+
+            @Override
+            public void fullPostDataResponse(ResponsePayload response) {
+                Log.e("FullPostdata", response.toString());
             }
         });
         */
 
-        devless.getData("plans", "plans_table", new GetDataResponse() {
+        /* get data
+        devless.getData("plans", "test_table", new GetDataResponse() {
             @Override
             public void onSuccess(ResponsePayload response) {
-                Log.e("==success==", response.toString());
+                Log.e("success", response.toString());
             }
 
             @Override
             public void onFailed(ErrorMessage errorMessage) {
-                Log.e("==failed==", errorMessage.toString());
+                Log.e("Failed", errorMessage.toString());
             }
 
             @Override
             public void userNotAuthenticated(ErrorMessage message) {
+                Log.e("UnAuth", message.toString());
+            }
 
+            @Override
+            public void fullRequestResponse(ResponsePayload response) {
+                Log.e("FullPostData", response.toString());
             }
         });
+        */
+
+
+        /*
+        Map<String, Object> change = new HashMap<>();
+        change.put("name", "kulee");
+
+        devless.edit("plans", "test_table", change, "1", new EditDataResponse() {
+            @Override
+            public void onSuccess(ResponsePayload response) {
+                Log.e("success", response.toString());
+            }
+
+            @Override
+            public void onFailed(ErrorMessage errorMessage) {
+                Log.e("Failed", errorMessage.toString());
+            }
+
+            @Override
+            public void userNotAuthenticated(ErrorMessage message) {
+                Log.e("UnAuth", message.toString());
+            }
+
+            @Override
+            public void fullEditDataResponse(ResponsePayload response) {
+                Log.e("FullPostData", response.toString());
+            }
+        });
+        */
+
+        /* Delete Message
+        devless.delete("plans", "test_table", "1", new DeleteResponse() {
+            @Override
+            public void onSuccess(ResponsePayload response) {
+                Log.e("success", response.toString());
+            }
+
+            @Override
+            public void onFailed(ErrorMessage errorMessage) {
+                Log.e("Failed", errorMessage.toString());
+            }
+
+            @Override
+            public void userNotAuthenticated(ErrorMessage message) {
+                Log.e("UnAuth", message.toString());
+            }
+
+            @Override
+            public void fullDeleteResponse(ResponsePayload response) {
+                Log.e("FullPostData", response.toString());
+            }
+        });
+        */
+
+
 
     }
 
diff --git a/dv-android-sdk-1.0/src/main/java/androidsdk/devless/io/devless/interfaces/DeleteResponse.java b/dv-android-sdk-1.0/src/main/java/androidsdk/devless/io/devless/interfaces/DeleteResponse.java
index e85c832..7aa5ce4 100644
--- a/dv-android-sdk-1.0/src/main/java/androidsdk/devless/io/devless/interfaces/DeleteResponse.java
+++ b/dv-android-sdk-1.0/src/main/java/androidsdk/devless/io/devless/interfaces/DeleteResponse.java
@@ -12,5 +12,6 @@ public interface DeleteResponse {
     void onSuccess(ResponsePayload response);
     void onFailed(ErrorMessage errorMessage);
     void userNotAuthenticated(ErrorMessage message);
+    void fullDeleteResponse (ResponsePayload response);
 
 }
diff --git a/dv-android-sdk-1.0/src/main/java/androidsdk/devless/io/devless/interfaces/EditDataResponse.java b/dv-android-sdk-1.0/src/main/java/androidsdk/devless/io/devless/interfaces/EditDataResponse.java
index f0e08dd..279dc6b 100644
--- a/dv-android-sdk-1.0/src/main/java/androidsdk/devless/io/devless/interfaces/EditDataResponse.java
+++ b/dv-android-sdk-1.0/src/main/java/androidsdk/devless/io/devless/interfaces/EditDataResponse.java
@@ -12,4 +12,5 @@ public interface EditDataResponse {
     void onSuccess(ResponsePayload response);
     void onFailed(ErrorMessage errorMessage);
     void userNotAuthenticated(ErrorMessage message);
+    void fullEditDataResponse(ResponsePayload response);
 }
diff --git a/dv-android-sdk-1.0/src/main/java/androidsdk/devless/io/devless/interfaces/GetDataResponse.java b/dv-android-sdk-1.0/src/main/java/androidsdk/devless/io/devless/interfaces/GetDataResponse.java
index 044e820..6f6af97 100644
--- a/dv-android-sdk-1.0/src/main/java/androidsdk/devless/io/devless/interfaces/GetDataResponse.java
+++ b/dv-android-sdk-1.0/src/main/java/androidsdk/devless/io/devless/interfaces/GetDataResponse.java
@@ -11,4 +11,5 @@ public interface GetDataResponse {
     void onSuccess(ResponsePayload response);
     void onFailed(ErrorMessage errorMessage);
     void userNotAuthenticated(ErrorMessage message);
+    void fullRequestResponse (ResponsePayload response);
 }
diff --git a/dv-android-sdk-1.0/src/main/java/androidsdk/devless/io/devless/interfaces/LoginResponse.java b/dv-android-sdk-1.0/src/main/java/androidsdk/devless/io/devless/interfaces/LoginResponse.java
index e73f41b..3a3cbb0 100644
--- a/dv-android-sdk-1.0/src/main/java/androidsdk/devless/io/devless/interfaces/LoginResponse.java
+++ b/dv-android-sdk-1.0/src/main/java/androidsdk/devless/io/devless/interfaces/LoginResponse.java
@@ -10,4 +10,5 @@
 public interface LoginResponse {
     void onLogInSuccess(ResponsePayload response);
     void onLogInFailed(ErrorMessage errorMessage);
+
 }
diff --git a/dv-android-sdk-1.0/src/main/java/androidsdk/devless/io/devless/interfaces/LogoutResponse.java b/dv-android-sdk-1.0/src/main/java/androidsdk/devless/io/devless/interfaces/LogoutResponse.java
index ad8c13e..21637cc 100644
--- a/dv-android-sdk-1.0/src/main/java/androidsdk/devless/io/devless/interfaces/LogoutResponse.java
+++ b/dv-android-sdk-1.0/src/main/java/androidsdk/devless/io/devless/interfaces/LogoutResponse.java
@@ -8,4 +8,5 @@
 
 public interface LogoutResponse {
     void onLogOutSuccess(ResponsePayload response);
+    void fullLogoutResponse(ResponsePayload response);
 }
diff --git a/dv-android-sdk-1.0/src/main/java/androidsdk/devless/io/devless/interfaces/PostDataResponse.java b/dv-android-sdk-1.0/src/main/java/androidsdk/devless/io/devless/interfaces/PostDataResponse.java
index e4ac641..3296844 100644
--- a/dv-android-sdk-1.0/src/main/java/androidsdk/devless/io/devless/interfaces/PostDataResponse.java
+++ b/dv-android-sdk-1.0/src/main/java/androidsdk/devless/io/devless/interfaces/PostDataResponse.java
@@ -11,4 +11,5 @@ public interface PostDataResponse {
     void onSuccess(ResponsePayload response);
     void onFailed(ErrorMessage errorMessage);
     void userNotAuthenticated(ErrorMessage message);
+    void fullPostDataResponse(ResponsePayload response);
 }
diff --git a/dv-android-sdk-1.0/src/main/java/androidsdk/devless/io/devless/interfaces/RequestResponse.java b/dv-android-sdk-1.0/src/main/java/androidsdk/devless/io/devless/interfaces/RequestResponse.java
index 051ec52..1b30be7 100644
--- a/dv-android-sdk-1.0/src/main/java/androidsdk/devless/io/devless/interfaces/RequestResponse.java
+++ b/dv-android-sdk-1.0/src/main/java/androidsdk/devless/io/devless/interfaces/RequestResponse.java
@@ -10,4 +10,5 @@
 public interface RequestResponse {
     void onSuccess(ResponsePayload response);
     void userNotAuthenticated(ErrorMessage message);
+    void fullRequestResponse(ResponsePayload response);
 }
diff --git a/dv-android-sdk-1.0/src/main/java/androidsdk/devless/io/devless/interfaces/SearchResponse.java b/dv-android-sdk-1.0/src/main/java/androidsdk/devless/io/devless/interfaces/SearchResponse.java
index 445e93d..e41c40f 100644
--- a/dv-android-sdk-1.0/src/main/java/androidsdk/devless/io/devless/interfaces/SearchResponse.java
+++ b/dv-android-sdk-1.0/src/main/java/androidsdk/devless/io/devless/interfaces/SearchResponse.java
@@ -10,4 +10,5 @@
 public interface SearchResponse {
     void onSuccess(ResponsePayload response);
     void userNotAuthenticated(ErrorMessage errorMessage);
+    void fullSearchResponse(ResponsePayload responsePayload);
 }
diff --git a/dv-android-sdk-1.0/src/main/java/androidsdk/devless/io/devless/interfaces/SignUpResponse.java b/dv-android-sdk-1.0/src/main/java/androidsdk/devless/io/devless/interfaces/SignUpResponse.java
index 726d9fc..8badc5c 100644
--- a/dv-android-sdk-1.0/src/main/java/androidsdk/devless/io/devless/interfaces/SignUpResponse.java
+++ b/dv-android-sdk-1.0/src/main/java/androidsdk/devless/io/devless/interfaces/SignUpResponse.java
@@ -2,6 +2,7 @@
 
 import androidsdk.devless.io.devless.messages.ErrorMessage;
 import androidsdk.devless.io.devless.messages.Payload;
+import androidsdk.devless.io.devless.messages.ResponsePayload;
 
 /**
  * Created by pianoafrik on 6/8/17.
@@ -10,4 +11,5 @@
 public interface SignUpResponse {
     void onSignUpSuccess(Payload payload);
     void onSignUpFailed(ErrorMessage errorMessage);
+
 }
diff --git a/dv-android-sdk-1.0/src/main/java/androidsdk/devless/io/devless/main/Devless.java b/dv-android-sdk-1.0/src/main/java/androidsdk/devless/io/devless/main/Devless.java
index 4b4d474..1804ce8 100644
--- a/dv-android-sdk-1.0/src/main/java/androidsdk/devless/io/devless/main/Devless.java
+++ b/dv-android-sdk-1.0/src/main/java/androidsdk/devless/io/devless/main/Devless.java
@@ -65,8 +65,11 @@ public void getData(String serviceName, String tableName, final GetDataResponse
         result.enqueue(new Callback<ResponseBody>() {
             @Override
             public void onResponse(Call<ResponseBody> call, Response<ResponseBody> response) {
+                //TODO::Display Full Result and let the dev manipulate it to his suit
+
                 try {
                     String result = response.body().string();
+                    requestResponse.fullRequestResponse(new ResponsePayload(result));
                     boolean bool = DevlessBuilder.checkAuth(result);
                     if (bool){
 
@@ -93,7 +96,7 @@ public void onFailure(Call<ResponseBody> call, Throwable t) {
         });
     }
 
-    public void postData(String serviceName, String tableName,  Map<String, Object> dataToAdd, final PostDataResponse requestResponseresponse) {
+    public void postData(String serviceName, String tableName,  Map<String, Object> dataToAdd, final PostDataResponse postDataResponse) {
         Retrofit retrofit = new Retrofit.Builder()
                 .baseUrl(DevlessBuilder.formUrl(rootUrl, serviceName))
                 .addConverterFactory(GsonConverterFactory.create())
@@ -109,27 +112,28 @@ public void onResponse(Call<ResponseBody> call, Response<ResponseBody> response)
 
                     String result = response.body().string();
                     boolean bool = DevlessBuilder.checkAuth(result);
+                    postDataResponse.fullPostDataResponse(new ResponsePayload(result));
                     if (bool){
 
                         int successPull = DevlessBuilder.checkPostSuccess(result);
                         if(successPull == 1){
                             // successful
-                            requestResponseresponse.onSuccess(new ResponsePayload(result));
+                            postDataResponse.onSuccess(new ResponsePayload(result));
 
                         } else if (successPull == 0){
                             //wrong fieldname
                             String errorMessage = "Error: Post failed because there was a  wrong fieldName please check it";
-                            requestResponseresponse.onFailed(new ErrorMessage(errorMessage));
+                            postDataResponse.onFailed(new ErrorMessage(errorMessage));
 
                         } else {
                             // errorMessage
                             String errorMessage = "Error: The ServiceName or TableName doesn't exist";
-                            requestResponseresponse.onFailed(new ErrorMessage(errorMessage));
+                            postDataResponse.onFailed(new ErrorMessage(errorMessage));
                         }
 
 
                     }  else{
-                        requestResponseresponse.userNotAuthenticated( new ErrorMessage("Token expired please log in again"));
+                        postDataResponse.userNotAuthenticated( new ErrorMessage("Token expired please log in again"));
                     }
 
                 } catch (IOException e) {
@@ -139,12 +143,12 @@ public void onResponse(Call<ResponseBody> call, Response<ResponseBody> response)
 
             @Override
             public void onFailure(Call<ResponseBody> call, Throwable t) {
-                requestResponseresponse.onSuccess( new ResponsePayload( t.toString()));
+                postDataResponse.onSuccess( new ResponsePayload( t.toString()));
             }
         });
     }
 
-    public void edit(String serviceName, String tableName, Map<String, Object> update,  String id, final EditDataResponse requestResponseresponse) {
+    public void edit(String serviceName, String tableName, Map<String, Object> update,  String id, final EditDataResponse editDataResponse) {
         Retrofit retrofit = new Retrofit.Builder()
                 .baseUrl(DevlessBuilder.formUrl(rootUrl, serviceName))
                 .addConverterFactory(GsonConverterFactory.create())
@@ -158,30 +162,32 @@ public void onResponse(Call<ResponseBody> call, Response<ResponseBody> response)
                 try {
                     String result = response.body().string();
                     boolean bool = DevlessBuilder.checkAuth(result);
+                    editDataResponse.fullEditDataResponse(new ResponsePayload(result));
+
                     if (bool){
                         int successPull = DevlessBuilder.checkPostSuccess(result);
                         if(successPull == 1){
                             // successful
-                            requestResponseresponse.onSuccess(new ResponsePayload(result));
+                            editDataResponse.onSuccess(new ResponsePayload(result));
 
                         } else if (successPull == 0){
                             //wrong fieldname
                             String errorMessage = "Error: Edit failed because there was a  wrong fieldName please check it";
-                            requestResponseresponse.onFailed(new ErrorMessage(errorMessage));
+                            editDataResponse.onFailed(new ErrorMessage(errorMessage));
                         } else if (successPull == 2){
                             //wrong fieldname
                             String errorMessage = "Error: Edit Failed Because Id does not exist";
-                            requestResponseresponse.onFailed(new ErrorMessage(errorMessage));
+                            editDataResponse.onFailed(new ErrorMessage(errorMessage));
 
                         } else {
                             // errorMessage
                             String errorMessage = "Error: The ServiceName or TableName doesn't exist";
-                            requestResponseresponse.onFailed(new ErrorMessage(errorMessage));
+                            editDataResponse.onFailed(new ErrorMessage(errorMessage));
                         }
 
 
                     }  else{
-                        requestResponseresponse.userNotAuthenticated(new ErrorMessage("Token expired please log in again"));
+                        editDataResponse.userNotAuthenticated(new ErrorMessage("Token expired please log in again"));
                     }
 
                 } catch (IOException e) {
@@ -190,13 +196,13 @@ public void onResponse(Call<ResponseBody> call, Response<ResponseBody> response)
             }
             @Override
             public void onFailure(Call<ResponseBody> call, Throwable t) {
-                requestResponseresponse.onSuccess( new ResponsePayload(t.toString()));
+                editDataResponse.onSuccess( new ResponsePayload(t.toString()));
             }
         });
     }
 
 
-    public void delete(String serviceName, String tableName,  String id, final DeleteResponse requestResponse) {
+    public void delete(String serviceName, String tableName,  String id, final DeleteResponse deleteResponse) {
         Retrofit retrofit = new Retrofit.Builder()
                 .baseUrl(DevlessBuilder.formUrl(rootUrl, serviceName))
                 .addConverterFactory(GsonConverterFactory.create())
@@ -211,23 +217,25 @@ public void onResponse(Call<ResponseBody> call, Response<ResponseBody> response)
 
                     String result = response.body().string();
                     boolean bool = DevlessBuilder.checkAuth(result);
+                    deleteResponse.fullDeleteResponse(new ResponsePayload(result));
+
                     if (bool){
                         int successPull = DevlessBuilder.checkPostSuccess(result);
                         if(successPull == 1){
                             // successful
-                            requestResponse.onSuccess(new ResponsePayload(result));
+                            deleteResponse.onSuccess(new ResponsePayload(result));
                         } else if (successPull == 2){
                             //wrong fieldName
                             String errorMessage = "Error: Delete Failed Because Id does not exist";
-                            requestResponse.onFailed(new ErrorMessage(errorMessage));
+                            deleteResponse.onFailed(new ErrorMessage(errorMessage));
 
                         } else {
                             // errorMessage
                             String errorMessage = "Error: The ServiceName or TableName doesn't exist";
-                            requestResponse.onFailed(new ErrorMessage(errorMessage));
+                            deleteResponse.onFailed(new ErrorMessage(errorMessage));
                         }
                     }  else{
-                        requestResponse.userNotAuthenticated(new ErrorMessage("Token expired please log in again"));
+                        deleteResponse.userNotAuthenticated(new ErrorMessage("Token expired please log in again"));
                     }
 
                 } catch (IOException e) {
@@ -236,7 +244,7 @@ public void onResponse(Call<ResponseBody> call, Response<ResponseBody> response)
             }
             @Override
             public void onFailure(Call<ResponseBody> call, Throwable t) {
-                requestResponse.onSuccess(new ResponsePayload(t.toString()));
+                deleteResponse.onSuccess(new ResponsePayload(t.toString()));
             }
         });
     }
@@ -255,8 +263,9 @@ public void onResponse(Call<ResponseBody> call, Response<ResponseBody> response)
                 try {
 
                     String result = response.body().string();
-
                     boolean bool = DevlessBuilder.checkAuth(result);
+                    requestResponse.fullRequestResponse(new ResponsePayload(result));
+
                     if (bool){
                         requestResponse.onSuccess(new ResponsePayload(result));
                     }  else{
@@ -315,7 +324,12 @@ public void onSuccess(ResponsePayload response) {
 
             @Override
             public void userNotAuthenticated(ErrorMessage errorMessage) {
-                //
+                // Do Nothing Here
+            }
+
+            @Override
+            public void fullRequestResponse(ResponsePayload response) {
+                // Do Nothing Here
             }
 
         });
@@ -360,7 +374,12 @@ public void onSuccess(ResponsePayload response) {
 
             @Override
             public void userNotAuthenticated(ErrorMessage errorMessage) {
-                //
+                // Do Nothing
+            }
+
+            @Override
+            public void fullRequestResponse(ResponsePayload response) {
+                //Do Nothing
             }
 
         });
@@ -407,11 +426,16 @@ public void userNotAuthenticated(ErrorMessage errorMessage) {
                 //signUpResponse.onSignUpFailed(message);
             }
 
+            @Override
+            public void fullRequestResponse(ResponsePayload response) {
+                // Do Nothing
+            }
+
         });
 
     }
 
-    public void methodCall(String serviceName, String actionName, List<String> params, final RequestResponse requestResponseresponse) {
+    public void methodCall(String serviceName, String actionName, List<String> params, final RequestResponse requestResponse) {
         Retrofit retrofit = new Retrofit.Builder()
                 .baseUrl(rootUrl + "/api/v1/service/"+ serviceName + "/")
                 .addConverterFactory(GsonConverterFactory.create())
@@ -424,16 +448,20 @@ public void methodCall(String serviceName, String actionName, List<String> param
             @Override
             public void onResponse(Call<ResponseBody> call, Response<ResponseBody> response) {
                 try {
-                    requestResponseresponse.onSuccess( new ResponsePayload( response.body().string()));
+
+                    requestResponse.onSuccess( new ResponsePayload( response.body().string()));
+                    requestResponse.fullRequestResponse(new ResponsePayload( response.body().string()));
 
                 } catch (IOException e) {
                     e.printStackTrace();
+                    requestResponse.fullRequestResponse(new ResponsePayload(e.toString()));
                 }
             }
 
             @Override
             public void onFailure(Call<ResponseBody> call, Throwable t) {
-                requestResponseresponse.onSuccess(new ResponsePayload(t.toString()));
+                requestResponse.onSuccess(new ResponsePayload(t.toString()));
+                requestResponse.fullRequestResponse(new ResponsePayload(t.toString()));
             }
         });
     }
@@ -463,6 +491,7 @@ public void onSuccess(ResponsePayload response) {
                         editor.putString("devlessUserToken", token);
                         editor.commit();
                         ResponsePayload responsePayload = new ResponsePayload(result);
+
                         loginResponse.onLogInSuccess(responsePayload);
                     } else {
                         ErrorMessage errorMessage = new ErrorMessage("Wrong Email or Password");
@@ -476,7 +505,12 @@ public void onSuccess(ResponsePayload response) {
 
             @Override
             public void userNotAuthenticated(ErrorMessage errorMessage) {
-                //
+                //Do nothing
+            }
+
+            @Override
+            public void fullRequestResponse(ResponsePayload response) {
+                //DO NOTHING
             }
         });
 
@@ -519,8 +553,15 @@ public void onSuccess(ResponsePayload response) {
 
             @Override
             public void userNotAuthenticated(ErrorMessage errorMessage) {
+                // Do Nothing
+            }
 
+            @Override
+            public void fullRequestResponse(ResponsePayload response) {
+                // Do Nothing
             }
+
+
         });
 
     }
@@ -562,7 +603,12 @@ public void onSuccess(ResponsePayload response) {
 
             @Override
             public void userNotAuthenticated(ErrorMessage errorMessage) {
-                //
+                //Do Nothing
+            }
+
+            @Override
+            public void fullRequestResponse(ResponsePayload response) {
+                //Do Nothing
             }
         });
 
@@ -578,7 +624,12 @@ public void onSuccess(ResponsePayload response) {
 
             @Override
             public void userNotAuthenticated(ErrorMessage errorMessage) {
+                // Do Nothing
+            }
 
+            @Override
+            public void fullRequestResponse(ResponsePayload response) {
+                logoutResponse.fullLogoutResponse(response);
             }
         });
     }
@@ -622,6 +673,7 @@ public void onResponse(Call<ResponseBody> call, Response<ResponseBody> response)
                     try {
                         //searchResponse.onSuccess(response.body().string());
                         String result = response.body().string();
+                        searchResponse.fullSearchResponse(new ResponsePayload(result));
 
                         boolean bool = DevlessBuilder.checkAuth(result);
                         if (bool){
@@ -634,12 +686,14 @@ public void onResponse(Call<ResponseBody> call, Response<ResponseBody> response)
 
                     } catch (IOException e) {
                         e.printStackTrace();
+                        searchResponse.fullSearchResponse(new ResponsePayload(e.toString()));
                     }
                 }
 
                 @Override
                 public void onFailure(Call<ResponseBody> call, Throwable t) {
                     searchResponse.onSuccess(new ResponsePayload(t.toString()));
+                    searchResponse.fullSearchResponse(new ResponsePayload(t.toString()));
                 }
             });
         } else {
@@ -655,6 +709,7 @@ public void onResponse(Call<ResponseBody> call, Response<ResponseBody> response)
                         String result = response.body().string();
 
                         boolean bool = DevlessBuilder.checkAuth(result);
+                        searchResponse.fullSearchResponse(new ResponsePayload(result));
                        if (bool){
                             searchResponse.onSuccess(new ResponsePayload(result));
                        }  else{
@@ -663,6 +718,7 @@ public void onResponse(Call<ResponseBody> call, Response<ResponseBody> response)
 
                     } catch (IOException e) {
                         e.printStackTrace();
+                        searchResponse.fullSearchResponse(new ResponsePayload(e.toString()));
                     }
                 }
 
@@ -698,6 +754,7 @@ public void onResponse(Call<ResponseBody> call, Response<ResponseBody> response)
                         String result = response.body().string();
 
                         boolean bool = DevlessBuilder.checkAuth(result);
+                        searchResponse.fullSearchResponse(new ResponsePayload(result));
                         if (bool){
                             searchResponse.onSuccess(new ResponsePayload(result));
                         }  else{
@@ -707,12 +764,14 @@ public void onResponse(Call<ResponseBody> call, Response<ResponseBody> response)
 
                     } catch (IOException e) {
                         e.printStackTrace();
+                        searchResponse.fullSearchResponse(new ResponsePayload(e.toString()));
                     }
                 }
 
                 @Override
                 public void onFailure(Call<ResponseBody> call, Throwable t) {
                     searchResponse.onSuccess(new ResponsePayload(t.toString()));
+                    searchResponse.fullSearchResponse(new ResponsePayload(t.toString()));
                 }
             });
 
@@ -740,6 +799,7 @@ public void onResponse(Call<ResponseBody> call, Response<ResponseBody> response)
                     String result = response.body().string();
 
                     boolean bool = DevlessBuilder.checkAuth(result);
+                    searchResponse.fullSearchResponse(new ResponsePayload(result));
                     if (bool){
                         searchResponse.onSuccess(new ResponsePayload(result) );
                         queryParams.clear();
@@ -753,6 +813,7 @@ public void onResponse(Call<ResponseBody> call, Response<ResponseBody> response)
 
                 } catch (IOException e) {
                     e.printStackTrace();
+                    searchResponse.fullSearchResponse(new ResponsePayload(e.toString()));
                     queryParams.clear();
                 }
             }
@@ -760,6 +821,7 @@ public void onResponse(Call<ResponseBody> call, Response<ResponseBody> response)
             @Override
             public void onFailure(Call<ResponseBody> call, Throwable t) {
                 searchResponse.onSuccess(new ResponsePayload(t.toString()));
+                searchResponse.fullSearchResponse(new ResponsePayload(t.toString()));
                 queryParams .clear();
             }
         });
@@ -823,6 +885,11 @@ public void onSuccess(ResponsePayload response) {
             public void userNotAuthenticated(ErrorMessage message) {
                 requestResponse.userNotAuthenticated(message);
             }
+
+            @Override
+            public void fullRequestResponse(ResponsePayload response) {
+                requestResponse.fullRequestResponse(response);
+            }
         });
     }
 
@@ -851,6 +918,11 @@ public void onSuccess(ResponsePayload response) {
             public void userNotAuthenticated(ErrorMessage message) {
                 requestResponse.userNotAuthenticated(message);
             }
+
+            @Override
+            public void fullRequestResponse(ResponsePayload response) {
+                requestResponse.fullRequestResponse(response);
+            }
         });
     }