/** * galaxy inc. * meetup client for android */ package com.galaxy.meetup.client.android.network.http; import org.apache.http.client.methods.HttpRequestBase; import android.content.Context; import android.text.TextUtils; import com.galaxy.meetup.client.android.AuthData; import com.galaxy.meetup.client.android.ClientVersion; import com.galaxy.meetup.client.android.content.EsAccount; /** * * @author sihai * */ public class DefaultHttpRequestConfiguration implements HttpRequestConfiguration { private static final String sEnabledFeatures[] = { "278", "296", "301", "342", "383" }; private final EsAccount mAccount; private final String mAuthTokenType; private final Context mContext; //=========================================================================== // Constructor //=========================================================================== public DefaultHttpRequestConfiguration(Context context, EsAccount esaccount) { this(context, esaccount, "webupdates"); } public DefaultHttpRequestConfiguration(Context context, EsAccount esaccount, String s) { mContext = context; mAccount = esaccount; mAuthTokenType = s; } @Override public void addHeaders(HttpRequestBase httprequestbase) { httprequestbase.addHeader("Cache-Control", "no-cache, no-transform"); httprequestbase.addHeader("X-Wap-Proxy-Cookie", "none"); httprequestbase.addHeader("X-Mobile-Google-Client", "1"); httprequestbase.addHeader("Accept-Encoding", "gzip"); httprequestbase.addHeader("User-Agent", (new StringBuilder()).append(UserAgent.from(mContext)).append(" (gzip)").toString()); if(httprequestbase.getURI().getScheme().equalsIgnoreCase("https") || httprequestbase.getURI().getHost().equals("10.0.2.2")) { String s; try { s = AuthData.getAuthToken(mContext, mAccount.getName(), mAuthTokenType); } catch(Exception exception) { throw new RuntimeException("Cannot obtain authentication token", exception); } httprequestbase.addHeader("Authorization", (new StringBuilder("GoogleLogin auth=")).append(s).toString()); } httprequestbase.addHeader("X-Mobile-Google-Client-Version", Integer.toString(ClientVersion.from(mContext))); if(sEnabledFeatures != null && sEnabledFeatures.length > 0) httprequestbase.addHeader("X-Mobile-Google-Features", TextUtils.join(",", sEnabledFeatures)); } @Override public void invalidateAuthToken() { try { AuthData.invalidateAuthToken(mContext, mAccount.getName(), mAuthTokenType); return; } catch(Exception exception) { throw new RuntimeException("Cannot invalidate authentication token", exception); } } }