I want to apply a facade (or façade) pattern to not directly access the retrofit methods from the main activity and I need to return objects. How can I do it?
My facade method would be something like this:
public GitHubUser getUser(String user){
final GitHubUserEndPoints apiService =
APIClient.getClient().create(GitHubUserEndPoints.class);
//call our GitHubUser and getUser
Call<GitHubUser> call = apiService.getUser(user);
call.enqueue(new Callback<GitHubUser>() {
//handle information recieved
@Override
public void onResponse(Call<GitHubUser> call, Response<GitHubUser> response) {
myDataGitHubUser = new GitHubUser(response.body().getLogin(),
response.body().getName(),
response.body().getFollowers(),
response.body().getFollowing(),
response.body().getAvatar(),
response.body().getEmail());
}
@Override
public void onFailure(Call<GitHubUser> call, Throwable t) {
//information not found in the server
}
});
return myDataGitHubUser;
}
I tried to do it this way but myDataGitHubUser
is a null object since being an asynchronous method, the return
is performed before the method.
Any ideas on how it would be done?