package com.rava.resources;
import java.util.ArrayList;
import java.util.List;
import javax.ws.rs.Consumes;
import javax.ws.rs.FormParam;
import javax.ws.rs.GET;
import javax.ws.rs.HeaderParam;
import javax.ws.rs.POST;
import javax.ws.rs.Path;
import javax.ws.rs.Produces;
import javax.ws.rs.core.Context;
import javax.ws.rs.core.HttpHeaders;
import javax.ws.rs.core.MediaType;
import javax.ws.rs.core.Response;
import com.rava.data.UserDP;
import com.rava.model.UserGroup;
import com.restfb.Connection;
import com.restfb.DefaultFacebookClient;
import com.restfb.FacebookClient;
import com.restfb.exception.FacebookException;
import com.restfb.types.Group;
import com.restfb.types.User;
@Path("/login")
public class LoginService {
@POST
@Produces(MediaType.APPLICATION_JSON)
@Consumes(MediaType.APPLICATION_FORM_URLENCODED)
public Response login(@FormParam("fbtoken") String fbAccessToken) {
if (fbAccessToken == null || fbAccessToken.isEmpty()) {
return Response.status(401).entity("Token null or empty").build();
}
System.out.println(fbAccessToken);
FacebookClient fbClient = new DefaultFacebookClient(fbAccessToken);
User user;
try {
user = fbClient.fetchObject("me", User.class);
} catch (FacebookException exception) {
return Response.status(401)
.entity("Not valid token " + fbAccessToken).build();
}
System.out.println(user.getId() + " / " + user.getEmail());
int userId = UserDP.insert(user.getId(), user.getEmail());
Connection<Group> gr = fbClient.fetchConnection("me/groups",
Group.class);
List<Group> groups = gr.getData();
List<UserGroup> userGroups = new ArrayList<UserGroup>();
for (Group g : groups) {
userGroups.add(new UserGroup(g.getId(), userId, g.getName()));
System.out.println(g.getName());
}
com.rava.model.User userNative = UserDP.getUser(userId);
return Response.status(200).entity(userNative).build();
}
@GET
@Path("/info")
public Response addUser(@HeaderParam("user-agent") String userAgent) {
return Response.status(200)
.entity("addUser is called, userAgent : " + userAgent).build();
}
@GET
@Path("/getHeaders")
public Response addUser(@Context HttpHeaders headers) {
String userAgent = headers.getRequestHeader("user-agent").get(0);
return Response
.status(200)
.entity("addUser is called, userAgent : " + userAgent + "\n"
+ headers.getRequestHeaders()).build();
}
}