X-Git-Url: http://www.average.org/gitweb/?p=WhereAmI.git;a=blobdiff_plain;f=src%2Forg%2Faverage%2Fwhereami%2FOracle.java;h=7ba16a5ec2dfde72e118e4b339783a6979895760;hp=4043451bce61cc35d10764bd7f3bfa501efae3e9;hb=e7ecf60a526f2f410d586895429e208370517bc9;hpb=5a1b41dd22020796d527c226012c5f37bfdc9a73 diff --git a/src/org/average/whereami/Oracle.java b/src/org/average/whereami/Oracle.java index 4043451..7ba16a5 100644 --- a/src/org/average/whereami/Oracle.java +++ b/src/org/average/whereami/Oracle.java @@ -1,5 +1,62 @@ 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 PersistentStore store; + + + public String authErrorMessage; + + public Oracle(final Resources res, final PersistentStore store) { + authErrorMessage = res.getString(R.string.autherror); + this.store = store; + + httpTransport = AndroidHttp.newCompatibleTransport(); + jsonFactory = new JacksonFactory(); +} + + public GoogleAccessProtectedResource accessProtectedResource() { + AccessTokenResponse token = store.readTokens(); + Log.v(TAG, "tokens - access: \"" + token.accessToken + + "\", refresh: \"" + token.refreshToken + + "\", client_id: \"" + ClientCredentials.CLIENT_ID + + "\", client_secret: \"" + + ClientCredentials.CLIENT_SECRET + + "\""); + return 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(); }