package org.average.whereami;
+import org.average.whereami.PersistentStore;
+
+import com.google.api.client.extensions.android2.AndroidHttp;
+import com.google.api.client.auth.oauth2.draft10.AccessTokenResponse;
+import com.google.api.client.googleapis.auth.oauth2.draft10.GoogleAccessProtectedResource;
+import com.google.api.client.http.HttpResponseException;
+import com.google.api.client.http.HttpTransport;
+import com.google.api.client.http.javanet.NetHttpTransport;
+import com.google.api.client.json.JsonFactory;
+import com.google.api.client.json.jackson.JacksonFactory;
+
+import android.content.res.Resources;
+import android.util.Log;
+
abstract public class Oracle {
- abstract String getResult();
+
+ final String TAG = getClass().getName();
+
+ public HttpTransport httpTransport;
+ public JsonFactory jsonFactory;
+
+ public GoogleAccessProtectedResource accessProtectedResource;
+
+ public String authErrorMessage;
+
+ public Oracle(final Resources res, final PersistentStore store) {
+ authErrorMessage = res.getString(R.string.autherror);
+
+ httpTransport = AndroidHttp.newCompatibleTransport();
+ jsonFactory = new JacksonFactory();
+ AccessTokenResponse token = store.readTokens();
+ Log.v(TAG, "tokens - access: \"" + token.accessToken +
+ "\", refresh: \"" + token.refreshToken +
+ "\", client_id: \"" + ClientCredentials.CLIENT_ID +
+ "\", client_secret: \"" +
+ ClientCredentials.CLIENT_SECRET +
+ "\"");
+ accessProtectedResource = new GoogleAccessProtectedResource(
+ token.accessToken, httpTransport, jsonFactory,
+ ClientCredentials.CLIENT_ID,
+ ClientCredentials.CLIENT_SECRET,
+ token.refreshToken)
+ {
+ @Override
+ public void onAccessToken(
+ String accessToken) {
+ Log.v(TAG, "Update access token to \""
+ + accessToken + "\"");
+ store.updateAccessToken(
+ accessToken);
+ }
+ };
+ }
+
+ abstract public String getResult();
}