/*
* Copyright (C) 2013 Chris Lacy Licensed under the Apache License, Version 2.0
* (the "License"); you may not use this file except in compliance with the
* License. You may obtain a copy of the License at
* http://www.apache.org/licenses/LICENSE-2.0 Unless required by applicable law
* or agreed to in writing, software distributed under the License is
* distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
* KIND, either express or implied. See the License for the specific language
* governing permissions and limitations under the License.
*/
package com.tweetlanes.android.core.urlservice.tweetmarker;
import android.net.Uri;
import com.tweetlanes.android.core.model.AccountDescriptor;
import com.tweetlanes.android.core.urlservice.ApiService;
import org.apache.http.HttpResponse;
import org.apache.http.ParseException;
import org.apache.http.client.ClientProtocolException;
import org.apache.http.client.HttpClient;
import org.apache.http.client.methods.HttpGet;
import org.apache.http.impl.client.DefaultHttpClient;
import org.apache.http.util.EntityUtils;
import org.asynctasktex.AsyncTaskEx;
import org.socialnetlib.android.TwitterApi;
import org.tweetalib.android.ConnectionStatus;
import org.tweetalib.android.TwitterFetchResult;
import org.tweetalib.android.TwitterManager;
import java.io.IOException;
import java.net.URI;
import java.net.URISyntaxException;
class TweetMarkerAPI extends ApiService {
private static final String BASE_URL = "http://api.tweetmarker.net/v2/";
private static final String API_LAST_READ = "lastread";
public static HttpResponse getRequest(String url, String debugName) {
HttpClient client = new DefaultHttpClient();
HttpGet request = new HttpGet();
request.addHeader("X-Auth-Service-Provider",
TwitterApi.TWITTER_VERIFY_CREDENTIALS_JSON);
request.addHeader("X-Verify-Credentials-Authorization", TwitterManager
.get().generateTwitterVerifyCredentialsAuthorizationHeader());
HttpResponse response = null;
try {
request.setURI(new URI(url));
// Log.d("tweetlanes url fetch", url);
response = client.execute(request);
// Log.d(TAG, debugName + " complete");
} catch (URISyntaxException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (ClientProtocolException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return response;
}
/*
*
*/
public interface APICallback {
public void finished(TwitterFetchResult fetchResult, String response);
}
/*
*
*/
public static void getLastRead(AccountDescriptor account,
final ConnectionStatus.Callbacks connectionStatus,
final APICallback callback) {
class TaskOutput {
TaskOutput(TwitterFetchResult fetchResult, String response) {
mFetchResult = fetchResult;
mResponse = response;
}
TwitterFetchResult mFetchResult;
String mResponse;
}
/*
*
*/
AsyncTaskEx<AccountDescriptor, Void, TaskOutput> worker = new AsyncTaskEx<AccountDescriptor, Void, TaskOutput>() {
@Override
protected TaskOutput doInBackground(AccountDescriptor... inputArray) {
String screenName = "chrismlacy";// inputArray[0];
String errorDescription = null;
if (connectionStatus != null && !connectionStatus.isOnline()) {
return new TaskOutput(new TwitterFetchResult(false,
connectionStatus.getErrorMessageNoConnection()),
null);
}
String url = String.format(BASE_URL + API_LAST_READ
+ "?api_key=%s&username=%s&collection=timeline",
Uri.encode("TW-2C4324C62DF4"), Uri.encode(screenName));
HttpResponse response = getRequest(url, "freeForLife");
String jsonAsString = null;
try {
if (response != null) {
jsonAsString = EntityUtils.toString(response
.getEntity());
// JSONObject jsonObject = new JSONObject(jsonAsString);
// success = jsonObject.getBoolean("success");
}
} catch (ParseException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return new TaskOutput(new TwitterFetchResult(
errorDescription == null,
errorDescription), jsonAsString);
}
@Override
protected void onPostExecute(TaskOutput output) {
if (callback != null) {
callback.finished(output.mFetchResult, output.mResponse);
}
super.onPostExecute(output);
}
};
worker.execute(AsyncTaskEx.PRIORITY_HIGH, "Get TwMrkr Last Read",
account);
}
}