package org.gdg.frisbee.android.app; import android.content.Context; import android.support.annotation.Nullable; import android.support.v4.app.FragmentActivity; import com.google.android.gms.appindexing.AppIndex; import com.google.android.gms.auth.api.Auth; import com.google.android.gms.auth.api.signin.GoogleSignInOptions; import com.google.android.gms.common.Scopes; import com.google.android.gms.common.api.Api; import com.google.android.gms.common.api.Api.ApiOptions.NotRequiredOptions; import com.google.android.gms.common.api.GoogleApiClient; import com.google.android.gms.common.api.GoogleApiClient.OnConnectionFailedListener; import com.google.android.gms.common.api.Scope; import org.gdg.frisbee.android.R; public final class GoogleApiClientFactory { private GoogleApiClientFactory() { } public static GoogleApiClient createWith(Context context) { return createBuilder(context) .build(); } public static GoogleApiClient createWithApi(Context context, Api<? extends NotRequiredOptions> api) { return createBuilder(context) .addApi(api) .build(); } private static GoogleApiClient.Builder createBuilder(Context context) { return new GoogleApiClient.Builder(context) .addApi(AppIndex.API); } public static GoogleApiClient createForSignIn(Context context) { return createBuilderForSignIn(context) .build(); } public static GoogleApiClient createForSignIn(FragmentActivity fragmentActivity, @Nullable OnConnectionFailedListener onConnectionFailedListener) { return createBuilderForSignIn(fragmentActivity) .enableAutoManage(fragmentActivity, onConnectionFailedListener) .build(); } private static GoogleApiClient.Builder createBuilderForSignIn(Context context) { GoogleSignInOptions gso = new GoogleSignInOptions.Builder(GoogleSignInOptions.DEFAULT_SIGN_IN) .requestEmail() .requestScopes(new Scope(Scopes.PLUS_LOGIN)) .requestIdToken(context.getString(R.string.default_web_client_id)) .build(); return new GoogleApiClient.Builder(context) .addApi(Auth.GOOGLE_SIGN_IN_API, gso); } }