package de.fau.cs.mad.fablab.android.model;
import android.util.Base64;
import de.fau.cs.mad.fablab.android.model.events.UserRetrievedEvent;
import de.fau.cs.mad.fablab.rest.core.User;
import de.fau.cs.mad.fablab.rest.myapi.UserApi;
import de.greenrobot.event.EventBus;
import retrofit.Callback;
import retrofit.RequestInterceptor;
import retrofit.RestAdapter;
import retrofit.RetrofitError;
import retrofit.client.Response;
public class UserModel {
private UserApi mUserApi;
private RestAdapter.Builder mRestAdapterBuilder;
EventBus mEventBus = EventBus.getDefault();
private Callback<User> mUserCallback = new Callback<User>() {
@Override
public void success(User user, Response response) {
mEventBus.post(new UserRetrievedEvent(user));
}
@Override
public void failure(RetrofitError error) {
mEventBus.post(new UserRetrievedEvent(new User()));
}
};
public UserModel(RestAdapter.Builder restAdapterBuilder)
{
mRestAdapterBuilder = restAdapterBuilder;
}
public void getUser(String username, String password)
{
final String credentials = username + ":" + password;
mRestAdapterBuilder.setRequestInterceptor(new RequestInterceptor() {
@Override
public void intercept(RequestFacade request) {
// create Base64 encodet string
String string = "Basic " + Base64.encodeToString(credentials.getBytes(), Base64.NO_WRAP);
request.addHeader("Authorization", string);
request.addHeader("Accept", "application/json");
}
});
mUserApi = mRestAdapterBuilder.build().create(UserApi.class);
mUserApi.getUserInfo(mUserCallback);
}
}