package com.google.api.services.samples.googleplus.cmdline.simple; |
|
import com.google.api.client.http.GenericUrl; |
import com.google.api.client.http.HttpRequest; |
import com.google.api.client.http.HttpRequestFactory; |
import com.google.api.client.http.HttpRequestInitializer; |
import com.google.api.client.http.HttpResponse; |
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.GenericJson; |
import com.google.api.client.json.JsonFactory; |
import com.google.api.client.json.JsonObjectParser; |
import com.google.api.client.json.jackson2.JacksonFactory; |
import com.google.api.client.util.Key; |
|
import java.io.IOException; |
import java.util.List; |
|
/** |
* Simple example that demonstrates how to use <a |
* href="code.google.com/p/google-http-java-client/">Google HTTP Client Library for Java</a> with |
* the <a href="https://developers.google.com/+/api/">Google+ API</a>. |
* |
* <p> |
* Note that in the case of the Google+ API, there is a much better custom library built on top of |
* this HTTP library that is much easier to use and hides most of these details for you. See <a |
* href="http://code.google.com/p/google-api-java-client/wiki/APIs#Google+_API">Google+ API for |
* Java</a>. |
* </p> |
* |
* @author Yaniv Inbar |
*/ |
publicclassGooglePlusSample{ |
|
privatestaticfinalString API_KEY = |
"Enter API Key from https://code.google.com/apis/console/?api=plus into API_KEY"; |
|
privatestaticfinalString USER_ID ="116899029375914044550"; |
privatestaticfinalint MAX_RESULTS =3; |
|
staticfinalHttpTransport HTTP_TRANSPORT =newNetHttpTransport(); |
staticfinalJsonFactory JSON_FACTORY =newJacksonFactory(); |
|
/** Feed of Google+ activities. */ |
publicstaticclassActivityFeed{ |
|
/** List of Google+ activities. */ |
@Key("items") |
privateList<Activity> activities; |
|
publicList<Activity> getActivities(){ |
return activities; |
} |
} |
|
/** Google+ activity. */ |
publicstaticclassActivityextendsGenericJson{ |
|
/** Activity URL. */ |
@Key |
privateString url; |
|
publicString getUrl(){ |
return url; |
} |
|
/** Activity object. */ |
@Key("object") |
privateActivityObject activityObject; |
|
publicActivityObject getActivityObject(){ |
return activityObject; |
} |
} |
|
/** Google+ activity object. */ |
publicstaticclassActivityObject{ |
|
/** HTML-formatted content. */ |
@Key |
privateString content; |
|
publicString getContent(){ |
return content; |
} |
|
/** People who +1'd this activity. */ |
@Key |
privatePlusOners plusoners; |
|
publicPlusOners getPlusOners(){ |
return plusoners; |
} |
} |
|
/** People who +1'd an activity. */ |
publicstaticclassPlusOners{ |
|
/** Total number of people who +1'd this activity. */ |
@Key |
privatelong totalItems; |
|
publiclong getTotalItems(){ |
return totalItems; |
} |
} |
|
/** Google+ URL. */ |
publicstaticclassPlusUrlextendsGenericUrl{ |
|
publicPlusUrl(String encodedUrl){ |
super(encodedUrl); |
} |
|
@SuppressWarnings("unused") |
@Key |
privatefinalString key = API_KEY; |
|
/** Maximum number of results. */ |
@Key |
privateint maxResults; |
|
publicint getMaxResults(){ |
return maxResults; |
} |
|
publicPlusUrl setMaxResults(int maxResults){ |
this.maxResults = maxResults; |
returnthis; |
} |
|
/** Lists the public activities for the given Google+ user ID. */ |
publicstaticPlusUrl listPublicActivities(String userId){ |
returnnewPlusUrl( |
"https://www.googleapis.com/plus/v1/people/"+ userId +"/activities/public"); |
} |
} |
|
privatestaticvoid parseResponse(HttpResponse response)throwsIOException{ |
ActivityFeed feed = response.parseAs(ActivityFeed.class); |
if(feed.getActivities().isEmpty()){ |
System.out.println("No activities found."); |
}else{ |
if(feed.getActivities().size()== MAX_RESULTS){ |
System.out.print("First "); |
} |
System.out.println(feed.getActivities().size()+" activities found:"); |
for(Activity activity : feed.getActivities()){ |
System.out.println(); |
System.out.println("-----------------------------------------------"); |
System.out.println("HTML Content: "+ activity.getActivityObject().getContent()); |
System.out.println("+1's: "+ activity.getActivityObject().getPlusOners().getTotalItems()); |
System.out.println("URL: "+ activity.getUrl()); |
System.out.println("ID: "+ activity.get("id")); |
} |
} |
} |
|
privatestaticvoid run()throwsIOException{ |
HttpRequestFactory requestFactory = |
HTTP_TRANSPORT.createRequestFactory(newHttpRequestInitializer(){ |
@Override |
publicvoid initialize(HttpRequest request){ |
request.setParser(newJsonObjectParser(JSON_FACTORY)); |
} |
}); |
PlusUrl url =PlusUrl.listPublicActivities(USER_ID).setMaxResults(MAX_RESULTS); |
url.put("fields","items(id,url,object(content,plusoners/totalItems))"); |
HttpRequest request = requestFactory.buildGetRequest(url); |
parseResponse(request.execute()); |
} |
|
publicstaticvoid main(String[] args){ |
if(API_KEY.startsWith("Enter ")){ |
System.err.println(API_KEY); |
System.exit(1); |
} |
try{ |
try{ |
run(); |
return; |
}catch(HttpResponseException e){ |
System.err.println(e.getMessage()); |
} |
}catch(Throwable t){ |
t.printStackTrace(); |
} |
System.exit(1); |
} |
} |