Initial commit

This commit is contained in:
2019-06-04 15:18:39 +02:00
commit 6163be7e40
16 changed files with 547 additions and 0 deletions
+161
View File
@@ -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);
}
}