From 6f784555a96bfb9c84b04f673cb01f8dc716d301 Mon Sep 17 00:00:00 2001 From: Alex Eng Date: Mon, 29 Sep 2014 19:50:30 +1000 Subject: [PATCH] Add user info end point --- .../org/zanata/rest/service/UserService.java | 63 +++++++++++++++++++ .../org/zanata/service/GravatarService.java | 2 + .../service/impl/GravatarServiceImpl.java | 7 ++- 3 files changed, 71 insertions(+), 1 deletion(-) create mode 100644 zanata-war/src/main/java/org/zanata/rest/service/UserService.java diff --git a/zanata-war/src/main/java/org/zanata/rest/service/UserService.java b/zanata-war/src/main/java/org/zanata/rest/service/UserService.java new file mode 100644 index 0000000000..ae5bd75032 --- /dev/null +++ b/zanata-war/src/main/java/org/zanata/rest/service/UserService.java @@ -0,0 +1,63 @@ +package org.zanata.rest.service; + +import javax.ws.rs.Path; +import javax.ws.rs.PathParam; +import javax.ws.rs.core.GenericEntity; +import javax.ws.rs.core.Response; + +import org.jboss.resteasy.util.GenericType; +import org.jboss.seam.annotations.In; +import org.jboss.seam.annotations.Name; +import org.jboss.seam.security.management.JpaIdentityStore; +import org.zanata.dao.AccountDAO; +import org.zanata.model.HAccount; +import org.zanata.model.HPerson; +import org.zanata.rest.dto.Locale; +import org.zanata.rest.dto.TransUnitStatus; +import org.zanata.rest.dto.User; +import org.zanata.rest.dto.VersionInfo; +import org.zanata.service.GravatarService; +import org.zanata.util.VersionUtility; + +import org.zanata.rest.service.UserResource; + +import java.lang.reflect.Type; +import java.util.List; + +@Name("userService") +@Path(UserResource.SERVICE_PATH) +public class UserService implements UserResource { + + @In(value = JpaIdentityStore.AUTHENTICATED_USER) + private HAccount authenticatedAccount; + + @In + private GravatarService gravatarServiceImpl; + + @In + private AccountDAO accountDAO; + + @Override + public Response getMyInfo() { + return createUser(authenticatedAccount); + } + + @Override + public Response getUserInfo(String username) { + HAccount account = accountDAO.getByUsername(username); + return createUser(account); + } + + private Response createUser(HAccount account) { + if (account == null) { + return Response.status(Response.Status.NOT_FOUND).build(); + } + + HPerson person = account.getPerson(); + User user = + new User(account.getUsername(), person.getEmail(), + person.getName(), + gravatarServiceImpl.getGravatarHash(person.getEmail())); + return Response.ok(user).build(); + } +} diff --git a/zanata-war/src/main/java/org/zanata/service/GravatarService.java b/zanata-war/src/main/java/org/zanata/service/GravatarService.java index 1b6e336a84..8cac6f58cf 100644 --- a/zanata-war/src/main/java/org/zanata/service/GravatarService.java +++ b/zanata-war/src/main/java/org/zanata/service/GravatarService.java @@ -4,4 +4,6 @@ public interface GravatarService { String getUserImageUrl(int size); String getUserImageUrl(int size, String email); + + String getGravatarHash(String email); } diff --git a/zanata-war/src/main/java/org/zanata/service/impl/GravatarServiceImpl.java b/zanata-war/src/main/java/org/zanata/service/impl/GravatarServiceImpl.java index 0b14e35c62..c1924852cf 100644 --- a/zanata-war/src/main/java/org/zanata/service/impl/GravatarServiceImpl.java +++ b/zanata-war/src/main/java/org/zanata/service/impl/GravatarServiceImpl.java @@ -31,10 +31,15 @@ public String getUserImageUrl(int size) { @Override public String getUserImageUrl(int size, String email) { StringBuilder url = new StringBuilder(GRAVATAR_URL); - url.append(HashUtil.md5Hex(email.toLowerCase().trim())); + url.append(getGravatarHash(email)); url.append("?d=mm&r=g&s="); // d = default image, r = rating, s = size url.append(size); return url.toString(); } + @Override + public String getGravatarHash(String email) { + return HashUtil.md5Hex(email.toLowerCase().trim()); + } + }