1 package org.average.whereami;
3 import org.average.whereami.PersistentStore;
5 import java.io.IOException;
7 import com.google.api.client.extensions.android2.AndroidHttp;
8 import com.google.api.client.auth.oauth2.draft10.AccessTokenResponse;
9 import com.google.api.client.googleapis.auth.oauth2.draft10.GoogleAccessProtectedResource;
10 import com.google.api.client.http.HttpResponseException;
11 import com.google.api.client.http.HttpTransport;
12 import com.google.api.client.http.javanet.NetHttpTransport;
13 import com.google.api.client.json.JsonFactory;
14 import com.google.api.client.json.jackson.JacksonFactory;
16 import android.content.res.Resources;
17 import android.util.Log;
19 abstract public class Oracle {
21 final String TAG = getClass().getName();
23 static public PersistentStore store;
24 static public HttpTransport httpTransport =
25 AndroidHttp.newCompatibleTransport();
26 static public JsonFactory jsonFactory = new JacksonFactory();
27 static public String authErrorMessage;
29 public Oracle(final Resources res, final PersistentStore store) {
30 authErrorMessage = res.getString(R.string.autherror);
34 private class MyAccessProtectedResource
35 extends GoogleAccessProtectedResource {
37 public MyAccessProtectedResource(
39 HttpTransport transport,
40 JsonFactory jsonFactory,
43 String refreshToken) {
44 super(accessToken, transport, jsonFactory,
45 clientId, clientSecret, refreshToken);
49 public void onAccessToken(String accessToken) {
50 Log.v(TAG, "Update access token to \""
51 + accessToken + "\"");
52 store.updateAccessToken( accessToken);
56 protected boolean executeRefreshToken() throws IOException {
57 Log.v(TAG, "executeRefreshToken was called");
58 return super.executeRefreshToken();
62 public MyAccessProtectedResource
63 newMyAccessProtectedResource() {
64 AccessTokenResponse token = store.readTokens();
65 Log.v(TAG, "tokens - access: \"" + token.accessToken +
66 "\", refresh: \"" + token.refreshToken +
67 "\", client_id: \"" + ClientCredentials.CLIENT_ID +
68 "\", client_secret: \"" +
69 ClientCredentials.CLIENT_SECRET +
71 return new MyAccessProtectedResource(
72 token.accessToken, httpTransport, jsonFactory,
73 ClientCredentials.CLIENT_ID,
74 ClientCredentials.CLIENT_SECRET,
78 abstract public String getResult();