Commit e7fb4d04 authored by Tiago Cunha's avatar Tiago Cunha

Isolate the networking api servion fetch logic

parent 9291b79e
package chat.rocket.android.helper;
import android.support.annotation.NonNull;
import org.json.JSONObject;
import chat.rocket.android.api.rest.ServerPolicyApi;
public class ServerPolicyApiValidationHelper {
public static void getApiVersion(@NonNull ServerPolicyApi serverPolicyApi,
@NonNull Callback callback) {
trySecurely(serverPolicyApi, new Callback() {
@Override
public void onSuccess(boolean usesSecureConnection, JSONObject apiInfo) {
callback.onSuccess(usesSecureConnection, apiInfo);
}
@Override
public void onResponseError() {
callback.onResponseError();
}
@Override
public void onNetworkError() {
tryInsecurely(serverPolicyApi, callback);
}
});
}
private static void trySecurely(@NonNull ServerPolicyApi serverPolicyApi,
@NonNull Callback callback) {
serverPolicyApi.getApiInfoSecurely(getServerPolicyApiCallback(true, callback));
}
private static void tryInsecurely(@NonNull ServerPolicyApi serverPolicyApi,
@NonNull Callback callback) {
serverPolicyApi.getApiInfoInsecurely(getServerPolicyApiCallback(false, callback));
}
private static ServerPolicyApi.Callback getServerPolicyApiCallback(boolean isSecureConnection,
@NonNull Callback callback) {
return new ServerPolicyApi.Callback() {
@Override
public void onSuccess(JSONObject jsonObject) {
callback.onSuccess(isSecureConnection, jsonObject);
}
@Override
public void onResponseError() {
callback.onResponseError();
}
@Override
public void onNetworkError() {
callback.onNetworkError();
}
};
}
interface Callback {
void onSuccess(boolean usesSecureConnection, JSONObject apiInfo);
void onResponseError();
void onNetworkError();
}
}
......@@ -21,22 +21,27 @@ public class ServerPolicyHelper {
public static void isApiVersionValid(@NonNull ServerPolicyApi serverPolicyApi,
@NonNull Callback callback) {
trySecureValidation(serverPolicyApi, new Callback() {
@Override
public void isValid(boolean usesSecureConnection) {
callback.isValid(usesSecureConnection);
}
@Override
public void isNotValid() {
callback.isNotValid();
}
@Override
public void onNetworkError() {
tryInsecureValidation(serverPolicyApi, callback);
}
});
ServerPolicyApiValidationHelper.getApiVersion(serverPolicyApi,
new ServerPolicyApiValidationHelper.Callback() {
@Override
public void onSuccess(boolean usesSecureConnection, JSONObject apiInfo) {
if (isValid(apiInfo)) {
callback.isValid(usesSecureConnection);
return;
}
callback.isNotValid();
}
@Override
public void onResponseError() {
callback.isNotValid();
}
@Override
public void onNetworkError() {
callback.onNetworkError();
}
});
}
@NonNull
......@@ -84,40 +89,6 @@ public class ServerPolicyHelper {
return versionParts.length >= 3 && Integer.parseInt(versionParts[1]) >= 49;
}
private static void trySecureValidation(@NonNull ServerPolicyApi serverPolicyApi,
@NonNull Callback callback) {
serverPolicyApi.getApiInfoSecurely(getServerPolicyApiCallback(true, callback));
}
private static void tryInsecureValidation(@NonNull ServerPolicyApi serverPolicyApi,
@NonNull Callback callback) {
serverPolicyApi.getApiInfoInsecurely(getServerPolicyApiCallback(false, callback));
}
private static ServerPolicyApi.Callback getServerPolicyApiCallback(boolean isSecureConnection,
@NonNull Callback callback) {
return new ServerPolicyApi.Callback() {
@Override
public void onSuccess(JSONObject jsonObject) {
if (isValid(jsonObject)) {
callback.isValid(isSecureConnection);
return;
}
callback.isNotValid();
}
@Override
public void onResponseError() {
callback.isNotValid();
}
@Override
public void onNetworkError() {
callback.onNetworkError();
}
};
}
public interface Callback {
void isValid(boolean usesSecureConnection);
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment