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 public HttpTransport httpTransport;
24 public JsonFactory jsonFactory;
25 public PersistentStore store;
26 public String authErrorMessage;
28 public Oracle(final Resources res, final PersistentStore store) {
29 authErrorMessage = res.getString(R.string.autherror);
32 httpTransport = AndroidHttp.newCompatibleTransport();
33 jsonFactory = new JacksonFactory();
36 private class MyAccessProtectedResource
37 extends GoogleAccessProtectedResource {
39 // Why on earth contructors are not inherited?!?!
40 public MyAccessProtectedResource(
42 HttpTransport transport,
43 JsonFactory jsonFactory,
46 String refreshToken) {
47 super(accessToken, transport, jsonFactory,
48 clientId, clientSecret, refreshToken);
52 public void onAccessToken(String accessToken) {
53 Log.v(TAG, "Update access token to \""
54 + accessToken + "\"");
55 store.updateAccessToken( accessToken);
59 protected boolean executeRefreshToken() throws IOException {
60 Log.v(TAG, "executeRefreshToken was called");
61 return super.executeRefreshToken();
65 public MyAccessProtectedResource accessProtectedResource() {
66 AccessTokenResponse token = store.readTokens();
67 Log.v(TAG, "tokens - access: \"" + token.accessToken +
68 "\", refresh: \"" + token.refreshToken +
69 "\", client_id: \"" + ClientCredentials.CLIENT_ID +
70 "\", client_secret: \"" +
71 ClientCredentials.CLIENT_SECRET +
73 return new MyAccessProtectedResource(
74 token.accessToken, httpTransport, jsonFactory,
75 ClientCredentials.CLIENT_ID,
76 ClientCredentials.CLIENT_SECRET,
80 abstract public String getResult();