/**
* galaxy inc.
* meetup client for android
*/
package com.galaxy.meetup.client.android.network.http;
import java.util.Locale;
import org.apache.http.client.methods.HttpRequestBase;
import android.content.Context;
import android.text.TextUtils;
import android.util.Log;
import com.galaxy.meetup.client.android.content.EsAccount;
import com.galaxy.meetup.client.android.network.ApiaryAuthDataFactory;
import com.galaxy.meetup.client.android.realtimechat.RealTimeChatService;
import com.galaxy.meetup.client.util.EsLog;
/**
*
* @author sihai
*
*/
public class ApiaryHttpRequestConfiguration implements HttpRequestConfiguration {
private static ApiaryAuthDataFactory sAuthDataFactory = new ApiaryAuthDataFactory();
private final EsAccount mAccount;
private final String mBackendOverrideUrl;
private final String mContentType;
private final Context mContext;
private final String mScope;
public ApiaryHttpRequestConfiguration(Context context, EsAccount esaccount, String s, String s1) {
this(context, esaccount, s, s1, "application/json");
}
public ApiaryHttpRequestConfiguration(Context context, EsAccount esaccount, String s, String s1, String s2) {
mContext = context;
mAccount = esaccount;
mScope = s;
mBackendOverrideUrl = s1;
mContentType = s2;
}
public void addHeaders(HttpRequestBase httprequestbase) {
String s;
String s1;
String s2;
httprequestbase.addHeader("Accept-Encoding", "gzip");
httprequestbase.addHeader("Accept-Language", Locale.getDefault().toString());
httprequestbase.addHeader("User-Agent", getUserAgentHeader(mContext));
httprequestbase.addHeader("Content-Type", mContentType);
if (mAccount != null) {
try {
ApiaryAuthDataFactory.ApiaryAuthData apiaryauthdata = ApiaryAuthDataFactory.getAuthData(mScope);
s1 = apiaryauthdata.getAuthToken(mContext, mAccount.getName());
s2 = Long.toString(apiaryauthdata.getAuthTime(s1).longValue());
} catch (Exception exception) {
throw new RuntimeException(
"Cannot obtain authentication token", exception);
}
httprequestbase.addHeader("Authorization", (new StringBuilder(
"Bearer ")).append(s1).toString());
httprequestbase.addHeader("X-Auth-Time", s2);
}
s = RealTimeChatService.getStickyC2dmId(mContext);
if (s != null)
httprequestbase.addHeader("X-Android-App-ID", s);
if (!TextUtils.isEmpty(mBackendOverrideUrl)) {
if (EsLog.isLoggable("HttpTransaction", 3))
Log.d("HttpTransaction",
(new StringBuilder("Setting backend override url "))
.append(mBackendOverrideUrl).toString());
httprequestbase.addHeader("X-Google-Backend-Override",
mBackendOverrideUrl);
}
}
protected String getUserAgentHeader(Context context) {
return (new StringBuilder()).append(UserAgent.from(context))
.append(" (gzip)").toString();
}
public final void invalidateAuthToken() {
if(mAccount == null)
return;
try {
ApiaryAuthDataFactory.getAuthData(mScope).invalidateAuthToken(mContext, mAccount.getName());
} catch (Exception e) {
throw new RuntimeException("Cannot invalidate authentication token", e);
}
}
}