Java tutorial
/* * Copyright (c) 2013 Google Inc. * * 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.google.api.services.samples.calendar.cmdline; import java.io.IOException; import java.io.InputStreamReader; import java.util.HashSet; import java.util.List; import java.util.Set; import org.json.JSONArray; 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.HttpTransport; import com.google.api.client.json.JsonFactory; import com.google.api.client.json.jackson2.JacksonFactory; import com.google.api.client.util.store.DataStoreFactory; 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; /** * Main class for the Calendar API command line sample. Demonstrates how to make * an authenticated API call using OAuth 2 helper classes. */ public class CalendarSample { /** * Be sure to specify the name of your application. If the application name * is {@code null} or blank, the application will log a warning. Suggested * format is "MyCompany-ProductName/1.0". */ private static final String APPLICATION_NAME = "gcal-task-warrior"; /** Directory to store user credentials. */ private static final java.io.File DATA_STORE_DIR = new java.io.File(System.getProperty("user.home"), ".store/calendar_sample"); /** * Global instance of the {@link DataStoreFactory}. The best practice is to * make it a single globally shared instance across your application. */ private static FileDataStoreFactory dataStoreFactory; /** Global instance of the JSON factory. */ private static final JsonFactory JSON_FACTORY = JacksonFactory.getDefaultInstance(); /** Global instance of the HTTP transport. */ private static HttpTransport httpTransport; @SuppressWarnings("unused") private static Calendar client; /** Authorizes the installed application to access user's protected data. */ private static Credential authorize() throws Exception { // load client secrets GoogleClientSecrets clientSecrets = GoogleClientSecrets.load(JSON_FACTORY, new InputStreamReader(CalendarSample.class.getResourceAsStream("/client_secrets.json"))); if (clientSecrets.getDetails().getClientId().startsWith("Enter") || clientSecrets.getDetails().getClientSecret().startsWith("Enter ")) { System.out.println( "Overwrite the src/main/resources/client_secrets.json file with the client secrets file " + "you downloaded from the Quickstart tool or manually enter your Client ID and Secret " + "from https://code.google.com/apis/console/?api=calendar#project:319518489594 " + "into src/main/resources/client_secrets.json"); System.exit(1); } // Set up authorization code flow. // Ask for only the permissions you need. Asking for more permissions // will // reduce the number of users who finish the process for giving you // access // to their accounts. It will also increase the amount of effort you // will // have to spend explaining to users what you are doing with their data. // Here we are listing all of the available scopes. You should remove // scopes // that you are not actually using. Set<String> scopes = new HashSet<String>(); scopes.add(CalendarScopes.CALENDAR); scopes.add(CalendarScopes.CALENDAR_READONLY); GoogleAuthorizationCodeFlow flow = new GoogleAuthorizationCodeFlow.Builder(httpTransport, JSON_FACTORY, clientSecrets, scopes).setDataStoreFactory(dataStoreFactory).build(); // authorize return new AuthorizationCodeInstalledApp(flow, new LocalServerReceiver()).authorize("user"); } public static void main(String[] args) { try { // initialize the transport httpTransport = GoogleNetHttpTransport.newTrustedTransport(); // initialize the data store factory dataStoreFactory = new FileDataStoreFactory(DATA_STORE_DIR); // authorization Credential credential = authorize(); // set up global Calendar instance client = new Calendar.Builder(httpTransport, JSON_FACTORY, credential) .setApplicationName(APPLICATION_NAME).build(); System.out.println(client.getServicePath()); System.out.println(client.getBaseUrl()); System.out.println(client.getRootUrl()); System.out.println( client.calendars().get("14tgse4ldpicq5o4pq2metp460@group.calendar.google.com").values()); System.out.println("Fields:" + client.calendars().get("14tgse4ldpicq5o4pq2metp460@group.calendar.google.com").getFields()); List<CalendarListEntry> object = (List<CalendarListEntry>) client.calendarList().list().execute() .get("items"); for (CalendarListEntry aCalendar : object) { System.out.println(aCalendar.getSummary() + "::" + aCalendar.getId() + "::" + aCalendar.getClass() + "::" + aCalendar); } System.out.println("Items: \t\t" + object); for (Object o : client.calendarList().list().execute().keySet()) { System.out.println(":::" + o); // com.google.api.client.util.Data l; } for (Object o : client.calendars().get("14tgse4ldpicq5o4pq2metp460@group.calendar.google.com") .entrySet()) { System.out.println(o); } System.out.println(client.settings().list().size()); System.out.println(client.calendarList().list().size()); // assertEquals(0, client.calendarList().list().size()); // assertEquals(0, client.events().list().size()); for (Object o : client.calendarList().list().keySet()) { System.out.println(o); } System.out.println("Success! Now add code here."); } catch (IOException e) { System.err.println(e.getMessage()); } catch (Throwable t) { t.printStackTrace(); } System.exit(1); } }