package com.alorma.github.sdk.services.login; import com.alorma.github.sdk.bean.dto.request.RequestTokenDTO; import com.alorma.github.sdk.bean.dto.response.Token; import com.alorma.github.sdk.services.client.GithubClient; import retrofit.RestAdapter; import rx.Observable; /** * Created by Bernat on 13/07/2014. */ public class RequestTokenClient extends GithubClient<Token> { private final String clientId; private final String clientSecret; private final String redirectUri; private String code; public RequestTokenClient(String code, String clientId, String clientSecret, String redirectUri) { super(); this.code = code; this.clientId = clientId; this.clientSecret = clientSecret; this.redirectUri = redirectUri; } @Override protected RestAdapter getRestAdapter() { return new RestAdapter.Builder().setEndpoint(getClient().getApiOauthUrlEndpoint()) .setRequestInterceptor(this) .setLogLevel(RestAdapter.LogLevel.FULL) .build(); } @Override public void intercept(RequestFacade request) { request.addHeader("Accept", "application/json"); } @Override protected Observable<Token> getApiObservable(RestAdapter restAdapter) { LoginService loginService = restAdapter.create(LoginService.class); RequestTokenDTO tokenDTO = new RequestTokenDTO(); tokenDTO.client_id = clientId; tokenDTO.client_secret = clientSecret; tokenDTO.redirect_uri = redirectUri; tokenDTO.code = code; return loginService.requestToken(tokenDTO); } }