package org.ryu22e.nico2cal.servlet; import java.io.IOException; import java.util.Collections; import javax.servlet.ServletException; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import org.ryu22e.nico2cal.model.MyCalendar; import org.ryu22e.nico2cal.service.CalendarService; import org.ryu22e.nico2cal.util.GoogleApiKeyUtil; import com.google.api.client.auth.oauth2.AuthorizationCodeFlow; import com.google.api.client.auth.oauth2.AuthorizationCodeResponseUrl; import com.google.api.client.auth.oauth2.Credential; import com.google.api.client.extensions.appengine.auth.oauth2.AbstractAppEngineAuthorizationCodeCallbackServlet; import com.google.api.client.extensions.appengine.auth.oauth2.AppEngineCredentialStore; import com.google.api.client.extensions.appengine.http.urlfetch.UrlFetchTransport; import com.google.api.client.googleapis.auth.oauth2.GoogleAuthorizationCodeFlow; import com.google.api.client.http.GenericUrl; import com.google.api.client.json.jackson.JacksonFactory; import com.google.api.services.calendar.CalendarScopes; /** * @author ryu22e * */ public final class ConnectGoogleApiCallback extends AbstractAppEngineAuthorizationCodeCallbackServlet { /** * */ private static final long serialVersionUID = 1L; /** * */ private CalendarService calendarService = new CalendarService(); /* * (non-Javadoc) {@inheritDoc} */ @Override protected void onSuccess(HttpServletRequest req, HttpServletResponse resp, Credential credential) throws ServletException, IOException { MyCalendar myCalendar = calendarService.getCurrentMyCalendar(); if (myCalendar != null) { myCalendar.setDisabled(false); calendarService.putMyCalendar(myCalendar); } resp.sendRedirect("/myCalendar"); } /* * (non-Javadoc) {@inheritDoc} */ @Override protected void onError(HttpServletRequest req, HttpServletResponse resp, AuthorizationCodeResponseUrl errorResponse) throws ServletException, IOException { resp.sendRedirect("/myCalendar"); } /* * (non-Javadoc) {@inheritDoc} */ @Override protected String getRedirectUri(HttpServletRequest req) throws ServletException, IOException { GenericUrl url = new GenericUrl(req.getRequestURL().toString()); url.setRawPath("/oauth2callback"); return url.build(); } /* * (non-Javadoc) {@inheritDoc} */ @Override protected AuthorizationCodeFlow initializeFlow() throws IOException { return new GoogleAuthorizationCodeFlow.Builder( new UrlFetchTransport(), new JacksonFactory(), GoogleApiKeyUtil.getClientId(), GoogleApiKeyUtil.getClientSecret(), Collections.singleton(CalendarScopes.CALENDAR)).setCredentialStore( new AppEngineCredentialStore()).build(); } }