package com.ciandt.techgallery.service.endpoint;
import java.io.IOException;
import javax.servlet.http.HttpServletRequest;
import com.ciandt.techgallery.Constants;
import com.ciandt.techgallery.service.SocialNetworkCommunicationService;
import com.ciandt.techgallery.service.enums.FeatureEnum;
import com.ciandt.techgallery.service.impl.GooglePlusCommunicationServiceImpl;
import com.google.api.server.spi.config.Api;
import com.google.api.server.spi.config.ApiMethod;
import com.google.api.server.spi.config.Named;
import com.google.api.server.spi.config.AuthLevel;
import com.google.api.server.spi.config.ApiReference;
import com.google.api.server.spi.config.Nullable;
import com.google.api.server.spi.response.BadRequestException;
import com.google.api.server.spi.response.InternalServerErrorException;
import com.google.api.server.spi.response.NotFoundException;
import com.google.appengine.api.users.User;
/**
* Endpoint controller class for Social networks communications requests.
*
* @author Thulio Ribeiro
*
*/
@ApiReference(TechGalleryApiDefinition.class)
public class SocialNetworkCommunicationEndpoint {
private SocialNetworkCommunicationService service = GooglePlusCommunicationServiceImpl.getInstance();
/**
* Endpoint to post the content in users Google+ according the feature
* performed by front-end
*
* @param feature
* is the feature performed by front-end
* @param score
* is the positive or negative recommendation in case of
* recommendation feature
* @param currentUserMail
* is the email of the user logged in.
* @param endorsedMail
* is the email of the endorsed user in case of endorse feature.
* @param technologyName
* is the name of technology performed by feature.
* @param appLink
* is the link to the page that made a endpoint call.
* @param comment
* is the comment in case of comment feature.
* @param user
* is the user logged in
* @param req
* is the current http servlet request
* @throws InternalServerErrorException
* @throws BadRequestException
* @throws NotFoundException
* @throws IOException
*/
@ApiMethod(name = "postComment", path = "googleplus/post", httpMethod = "post")
public void postGooglePlus(@Named("feature") FeatureEnum feature, @Named("score") @Nullable Boolean score,
@Named("comment") @Nullable String comment, @Named("currentUserMail") String currentUserMail,
@Named("endorsedMail") @Nullable String endorsedMail, @Named("technologyName") String technologyName,
@Named("appLink") String appLink, User user, HttpServletRequest req)
throws InternalServerErrorException, BadRequestException, NotFoundException, IOException {
String header = req.getHeader("Authorization");
String accesstoken = header.substring(header.indexOf(' ')).trim();
service.postInUserProfile(feature, score, comment, currentUserMail, endorsedMail, technologyName, appLink, user,
accesstoken);
}
}