/*
* Copyright 2012 GitHub Inc.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package com.github.mobile.accounts;
import static android.util.Log.DEBUG;
import android.text.TextUtils;
import android.util.Log;
import com.github.mobile.DefaultClient;
import com.google.inject.Provider;
import java.net.HttpURLConnection;
import org.eclipse.egit.github.core.client.GitHubClient;
/**
* {@link GitHubClient} extensions that integrates with the Android account
* manager to provide request credentials
*/
public class AccountClient extends DefaultClient {
private static final String TAG = "AccountGitHubClient";
private final Provider<GitHubAccount> accountProvider;
/**
* Create account-aware client
*
* @param accountProvider
*/
public AccountClient(final Provider<GitHubAccount> accountProvider) {
super();
this.accountProvider = accountProvider;
}
@Override
protected HttpURLConnection configureRequest(final HttpURLConnection request) {
GitHubAccount account = accountProvider.get();
if (Log.isLoggable(TAG, DEBUG))
Log.d(TAG, "Authenticating using " + account);
// Credentials setting must come before super call
String token = account.getAuthToken();
if (!TextUtils.isEmpty(token))
setOAuth2Token(token);
else
setCredentials(account.getUsername(), account.getPassword());
return super.configureRequest(request);
}
}