All Downloads are FREE. Search and download functionalities are using the official Maven repository.

org.springframework.social.google.api.impl.GoogleTemplate Maven / Gradle / Ivy

There is a newer version: 1.1.3
Show newest version
/**
 * Copyright 2011-2017 the original author or authors.
 *
 * 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 org.springframework.social.google.api.impl;

import static com.fasterxml.jackson.annotation.JsonInclude.Include.NON_NULL;
import static com.fasterxml.jackson.databind.DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES;
import static com.fasterxml.jackson.databind.SerializationFeature.FAIL_ON_EMPTY_BEANS;
import static com.fasterxml.jackson.databind.SerializationFeature.WRITE_DATES_AS_TIMESTAMPS;

import java.util.ArrayList;
import java.util.List;

import com.fasterxml.jackson.databind.ObjectMapper;
import org.springframework.http.converter.ByteArrayHttpMessageConverter;
import org.springframework.http.converter.FormHttpMessageConverter;
import org.springframework.http.converter.HttpMessageConverter;
import org.springframework.http.converter.ResourceHttpMessageConverter;
import org.springframework.http.converter.json.MappingJackson2HttpMessageConverter;
import org.springframework.social.google.api.Google;
import org.springframework.social.google.api.calendar.CalendarOperations;
import org.springframework.social.google.api.calendar.impl.CalendarTemplate;
import org.springframework.social.google.api.drive.DriveOperations;
import org.springframework.social.google.api.drive.impl.DriveTemplate;
import org.springframework.social.google.api.oauth2.OAuth2Operations;
import org.springframework.social.google.api.oauth2.impl.OAuth2Template;
import org.springframework.social.google.api.plus.PlusOperations;
import org.springframework.social.google.api.plus.impl.PlusTemplate;
import org.springframework.social.google.api.tasks.TaskOperations;
import org.springframework.social.google.api.tasks.impl.TaskTemplate;
import org.springframework.social.oauth2.AbstractOAuth2ApiBinding;
import org.springframework.social.oauth2.OAuth2Version;
import org.springframework.social.oauth2.TokenStrategy;
import org.springframework.web.client.RestOperations;

/**
 * 

* The central class for interacting with Google APIs. *

*

* Most of the APIs, specifically all GData APIs and Google+ usage of "me", require OAuth2 authentication. * To use methods that require OAuth2 authentication, {@link GoogleTemplate} must be constructed with * an access token which is authorized for the appropriate scope. * For using Google+ without authenticating, {@link GoogleTemplate} default constructor can be used. *

* @author Gabriel Axel */ public class GoogleTemplate extends AbstractOAuth2ApiBinding implements Google { private String accessToken; private OAuth2Operations oauth2Operations; private PlusOperations plusOperations; private TaskOperations taskOperations; private DriveOperations driveOperations; private CalendarOperations calendarOperations; /** * Creates a new instance of GoogleTemplate. * This constructor creates a new GoogleTemplate able to perform unauthenticated operations against Google+. */ public GoogleTemplate() { initialize(); } /** * Creates a new instance of GoogleTemplate. * This constructor creates the FacebookTemplate using a given access token. * @param accessToken an access token granted by Google after OAuth2 authentication */ public GoogleTemplate(final String accessToken) { super(accessToken, TokenStrategy.ACCESS_TOKEN_PARAMETER); this.accessToken = accessToken; initialize(); } private void initialize() { oauth2Operations = new OAuth2Template(getRestTemplate(), isAuthorized()); plusOperations = new PlusTemplate(getRestTemplate(), isAuthorized()); taskOperations = new TaskTemplate(getRestTemplate(), isAuthorized()); driveOperations = new DriveTemplate(getRestTemplate(), isAuthorized()); calendarOperations = new CalendarTemplate(getRestTemplate(), isAuthorized()); } @Override protected List> getMessageConverters() { final MappingJackson2HttpMessageConverter jsonConverter = new MappingJackson2HttpMessageConverter(); final ObjectMapper objectMapper = new ObjectMapper(); objectMapper.configure(FAIL_ON_UNKNOWN_PROPERTIES, false); objectMapper.configure(WRITE_DATES_AS_TIMESTAMPS, false); objectMapper.configure(FAIL_ON_EMPTY_BEANS, false); objectMapper.setSerializationInclusion(NON_NULL); jsonConverter.setObjectMapper(objectMapper); final FormHttpMessageConverter formHttpMessageConverter = new FormHttpMessageConverter(); formHttpMessageConverter.addPartConverter(jsonConverter); final List> messageConverters = new ArrayList<>(); messageConverters.add(jsonConverter); messageConverters.add(new ByteArrayHttpMessageConverter()); messageConverters.add(formHttpMessageConverter); messageConverters.add(new ResourceHttpMessageConverter()); return messageConverters; } @Override protected OAuth2Version getOAuth2Version() { return OAuth2Version.BEARER; } @Override public PlusOperations plusOperations() { return plusOperations; } @Override public TaskOperations taskOperations() { return taskOperations; } @Override public DriveOperations driveOperations() { return driveOperations; } @Override public CalendarOperations calendarOperations() { return calendarOperations; } @Override public String getAccessToken() { return accessToken; } @Override public OAuth2Operations oauth2Operations() { return oauth2Operations; } @Override public RestOperations restOperations() { return getRestTemplate(); } }




© 2015 - 2024 Weber Informatics LLC | Privacy Policy