Initial commit
This commit is contained in:
@@ -0,0 +1,161 @@
|
||||
import java.io.FileNotFoundException;
|
||||
import java.io.IOException;
|
||||
import java.io.InputStream;
|
||||
import java.io.InputStreamReader;
|
||||
import java.security.GeneralSecurityException;
|
||||
import java.util.Collections;
|
||||
import java.util.List;
|
||||
|
||||
import com.google.api.client.auth.oauth2.Credential;
|
||||
import com.google.api.client.extensions.java6.auth.oauth2.AuthorizationCodeInstalledApp;
|
||||
import com.google.api.client.extensions.jetty.auth.oauth2.LocalServerReceiver;
|
||||
import com.google.api.client.googleapis.auth.oauth2.GoogleAuthorizationCodeFlow;
|
||||
import com.google.api.client.googleapis.auth.oauth2.GoogleClientSecrets;
|
||||
import com.google.api.client.googleapis.javanet.GoogleNetHttpTransport;
|
||||
import com.google.api.client.http.javanet.NetHttpTransport;
|
||||
import com.google.api.client.json.JsonFactory;
|
||||
import com.google.api.client.json.jackson2.JacksonFactory;
|
||||
import com.google.api.client.util.DateTime;
|
||||
import com.google.api.client.util.store.FileDataStoreFactory;
|
||||
import com.google.api.services.calendar.Calendar;
|
||||
import com.google.api.services.calendar.CalendarScopes;
|
||||
import com.google.api.services.calendar.model.CalendarListEntry;
|
||||
import com.google.api.services.calendar.model.Event;
|
||||
import com.google.api.services.calendar.model.Events;
|
||||
|
||||
public class CalendarQuickstart {
|
||||
private static final String APPLICATION_NAME = "Google Calendar API Java Quickstart";
|
||||
private static final JsonFactory JSON_FACTORY = JacksonFactory.getDefaultInstance();
|
||||
private static final String TOKENS_DIRECTORY_PATH = "tokens";
|
||||
|
||||
/**
|
||||
* Global instance of the scopes required by this quickstart.
|
||||
* If modifying these scopes, delete your previously saved tokens/ folder.
|
||||
*/
|
||||
private static final List<String> SCOPES = Collections.singletonList(CalendarScopes.CALENDAR);
|
||||
private static final String CREDENTIALS_FILE_PATH = "/credentials.json";
|
||||
|
||||
/**
|
||||
* Creates an authorized Credential object.
|
||||
* @param HTTP_TRANSPORT The network HTTP Transport.
|
||||
* @return An authorized Credential object.
|
||||
* @throws IOException If the credentials.json file cannot be found.
|
||||
*/
|
||||
private static Credential getCredentials(final NetHttpTransport HTTP_TRANSPORT) throws IOException {
|
||||
// Load client secrets.
|
||||
InputStream in = CalendarQuickstart.class.getResourceAsStream(CREDENTIALS_FILE_PATH);
|
||||
if (in == null) {
|
||||
throw new FileNotFoundException("Resource not found: " + CREDENTIALS_FILE_PATH);
|
||||
}
|
||||
GoogleClientSecrets clientSecrets = GoogleClientSecrets.load(JSON_FACTORY, new InputStreamReader(in));
|
||||
|
||||
// Build flow and trigger user authorization request.
|
||||
GoogleAuthorizationCodeFlow flow = new GoogleAuthorizationCodeFlow.Builder(
|
||||
HTTP_TRANSPORT, JSON_FACTORY, clientSecrets, SCOPES)
|
||||
.setDataStoreFactory(new FileDataStoreFactory(new java.io.File(TOKENS_DIRECTORY_PATH)))
|
||||
.setAccessType("offline")
|
||||
.build();
|
||||
LocalServerReceiver receiver = new LocalServerReceiver.Builder().setPort(8888).build();
|
||||
return new AuthorizationCodeInstalledApp(flow, receiver).authorize("user");
|
||||
}
|
||||
|
||||
public static void main(String... args) throws IOException, GeneralSecurityException {
|
||||
// Build a new authorized API client service.
|
||||
final NetHttpTransport HTTP_TRANSPORT = GoogleNetHttpTransport.newTrustedTransport();
|
||||
Calendar service = new Calendar.Builder(HTTP_TRANSPORT, JSON_FACTORY, getCredentials(HTTP_TRANSPORT))
|
||||
.setApplicationName(APPLICATION_NAME)
|
||||
.build();
|
||||
|
||||
System.out.println("The list:");
|
||||
com.google.api.services.calendar.model.CalendarList calList = service.calendarList().list().execute();
|
||||
|
||||
System.out.println("size: " + calList.size());
|
||||
for (CalendarListEntry entry : calList.getItems()) {
|
||||
System.out.println("ID " + entry.getId() + ", Description " + entry.getDescription() + ", Summary: " + entry.getSummary());
|
||||
}
|
||||
|
||||
// List the next 10 events from the primary calendar.
|
||||
DateTime now = new DateTime(System.currentTimeMillis());
|
||||
|
||||
// System.exit(0);
|
||||
|
||||
System.out.println("\nEvents:");
|
||||
int ct = 0;
|
||||
int ex = 0;
|
||||
|
||||
String srcId = "tero23q0dqqfc45r4jjcecl7bs@group.calendar.google.com";
|
||||
String trgId = "rpg91b8ls4e437a2gu63jhmlfk@group.calendar.google.com";
|
||||
|
||||
Events events = null;
|
||||
int pageCt = 0;
|
||||
|
||||
do {
|
||||
String nextPage = null;
|
||||
if (events != null) {
|
||||
nextPage = events.getNextPageToken();
|
||||
events = service.events().list(srcId)
|
||||
// .setSingleEvents(true)
|
||||
.setPageToken(nextPage)
|
||||
.execute();
|
||||
}
|
||||
else {
|
||||
events = service.events().list(srcId)
|
||||
// .setMaxResults(2450)
|
||||
// .setTimeMin(new DateTime(1230800400000l)) // 1230800400000l 1497690000000l
|
||||
// .setOrderBy("startTime")
|
||||
// .setShowDeleted(false)
|
||||
// .setOrderBy("updated")
|
||||
// .setUpdatedMin(new DateTime(1559379600000l))
|
||||
// .setSingleEvents(true)
|
||||
.execute();
|
||||
}
|
||||
|
||||
|
||||
List<Event> items = events.getItems();
|
||||
if (items.isEmpty()) {
|
||||
System.out.println("No upcoming events found.");
|
||||
} else {
|
||||
System.out.println("Upcoming events");
|
||||
for (Event event : items) {
|
||||
|
||||
String startStr = null;
|
||||
if (event.getStart() != null && event.getStart().getDateTime() != null)
|
||||
startStr = event.getStart().getDateTime().toString();
|
||||
|
||||
System.out.println("ID: " + event.getId()
|
||||
+ ", CREATED: " + event.getCreated()
|
||||
+ ", UPDATED: " + event.getUpdated()
|
||||
+ ", COLOR: " + event.getColorId()
|
||||
+ ", START: " + startStr
|
||||
+ ", " + (++ct)
|
||||
+ ", DESCRIPTION: " + event.getDescription()
|
||||
+ ", SUMMARY: " + event.getSummary());
|
||||
|
||||
|
||||
event.setCreated(now);
|
||||
|
||||
// try {
|
||||
// Event eventCopy = service.events().insert(trgId, event).execute();
|
||||
// System.out.println("Copy: " + "ID: " + eventCopy.getId()
|
||||
// + ", Created: " + eventCopy.getCreated()
|
||||
// + ", Updated: " + eventCopy.getUpdated()
|
||||
// + ", "+ eventCopy.getSummary());
|
||||
// }
|
||||
// catch (Exception e) {
|
||||
// System.out.println((++ex) + " Exception while copying " + event.getId() + ", " + e.getMessage());
|
||||
// }
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
pageCt++;
|
||||
|
||||
} while (events.getNextPageToken() != null);
|
||||
|
||||
System.out.println("Page count: " + pageCt);
|
||||
|
||||
|
||||
|
||||
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user