package com.gertherb.login;
import android.os.Bundle;
import com.gertherb.BuildConfig;
import com.gertherb.R;
import com.gertherb.api.GithubApi;
import com.gertherb.api.GithubApiFactory;
import com.gertherb.api.TokenRequest;
import com.gertherb.api.TokenResponse;
import com.gertherb.authentication.Token;
import com.gertherb.base.GertHerbAuthenticationActivity;
import com.novoda.notils.caster.Views;
import rx.Observable;
import rx.functions.Func1;
public class LoginActivity extends GertHerbAuthenticationActivity {
private static final String CLIENT_ID = BuildConfig.GITHUB_CLIENT_ID;
private static final String CLIENT_SECRET = BuildConfig.GITHUB_CLIENT_SECRET;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_login);
}
@Override
protected Observable<UserCredentials> getCredentialsObservable() {
LoginView loginView = Views.findById(this, R.id.login_view);
return loginView.newLoginObservable();
}
@Override
protected Observable<Token> getTokenObservable(final UserCredentials credentials) {
GithubApi authorizationApi = new GithubApiFactory().createAuthorizationApi(credentials.username, credentials.password);
return authorizationApi.authorize(CLIENT_ID, TokenRequest.from(CLIENT_SECRET)).map(new Func1<TokenResponse, Token>() {
@Override
public Token call(TokenResponse tokenResponse) {
return new Token(credentials.username, tokenResponse.getToken());
}
});
}
}