1 package org.average.whereami;
3 import org.average.whereami.PersistentStore;
5 import java.io.IOException;
6 import com.google.api.client.http.HttpTransport;
7 import java.util.logging.Handler;
8 import java.util.logging.Level;
9 import java.util.logging.LogRecord;
10 import java.util.logging.Logger;
12 import com.google.api.client.extensions.android2.AndroidHttp;
13 import com.google.api.client.auth.oauth2.draft10.AccessTokenResponse;
14 import com.google.api.client.googleapis.auth.oauth2.draft10.GoogleAccessProtectedResource;
15 import com.google.api.client.http.HttpResponseException;
16 import com.google.api.client.http.HttpTransport;
17 import com.google.api.client.http.javanet.NetHttpTransport;
18 import com.google.api.client.json.JsonFactory;
19 import com.google.api.client.json.jackson.JacksonFactory;
21 import android.content.res.Resources;
22 import android.util.Log;
24 public class APIBase {
26 final String TAG = getClass().getName();
28 public PersistentStore store;
30 public HttpTransport httpTransport =
31 AndroidHttp.newCompatibleTransport();
32 public JsonFactory jsonFactory = new JacksonFactory();
33 public MyAccessProtectedResource accessProtectedResource;
35 public String authErrorMessage;
36 public String connectErrorMessage;
38 public APIBase(final Resources res, final PersistentStore store) {
41 AccessTokenResponse token = store.readTokens();
42 Log.v(TAG, "tokens - access: \"" + token.accessToken +
43 "\", refresh: \"" + token.refreshToken +
44 "\", client_id: \"" + ClientCredentials.CLIENT_ID +
45 "\", client_secret: \"" +
46 ClientCredentials.CLIENT_SECRET +
48 accessProtectedResource = new MyAccessProtectedResource(
49 token.accessToken, httpTransport, jsonFactory,
50 ClientCredentials.CLIENT_ID,
51 ClientCredentials.CLIENT_SECRET,
53 authErrorMessage = res.getString(R.string.autherror);
54 connectErrorMessage = res.getString(R.string.connecterror);
58 private class MyAccessProtectedResource
59 extends GoogleAccessProtectedResource {
61 public MyAccessProtectedResource(
63 HttpTransport transport,
64 JsonFactory jsonFactory,
67 String refreshToken) {
68 super(accessToken, transport, jsonFactory,
69 clientId, clientSecret, refreshToken);
73 public void onAccessToken(String accessToken) {
74 Log.v(TAG, "Update access token to \""
75 + accessToken + "\"");
76 store.updateAccessToken( accessToken);
80 protected boolean executeRefreshToken() throws IOException {
81 Log.v(TAG, "executeRefreshToken was called");
82 return super.executeRefreshToken();
86 private static void enableLogging() {
87 Logger logger = Logger.getLogger(HttpTransport.class.getName());
88 logger.setLevel(Level.CONFIG);
89 logger.addHandler(new Handler() {
91 public void close() throws SecurityException {}
93 public void flush() {}
95 public void publish(LogRecord record) {
96 Log.d("HttpTransport", record.getMessage());