package com.mossle.user.rs; import java.io.InputStream; import javax.annotation.Resource; import javax.ws.rs.DefaultValue; import javax.ws.rs.GET; import javax.ws.rs.Path; import javax.ws.rs.Produces; import javax.ws.rs.QueryParam; import javax.ws.rs.core.MediaType; import com.mossle.api.tenant.TenantHolder; import com.mossle.user.service.UserAvatarService; import org.apache.commons.lang3.StringUtils; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.stereotype.Component; @Component @Path("avatar") public class AvatarResource { private static Logger logger = LoggerFactory .getLogger(AvatarResource.class); private UserAvatarService userAvatarService; private TenantHolder tenantHolder; @GET @Produces("image/png") public InputStream view(@QueryParam("id") String id, @QueryParam("width") @DefaultValue("16") int width) throws Exception { if (StringUtils.isBlank(id)) { logger.info("id cannot be blank"); return null; } if (id.indexOf("_") != -1) { String text = id; logger.info("process : {}", text); int index = text.indexOf("_"); int nextIndex = text.indexOf("x"); id = text.substring(0, index); width = Integer.parseInt(text.substring(index + 1, nextIndex)); logger.info("id : {}, width : {}", id, width); } logger.debug("width : {}", width); String tenantId = tenantHolder.getTenantId(); Long longId = null; try { longId = Long.parseLong(id); } catch (Exception ex) { logger.error(ex.getMessage(), ex); } return userAvatarService.viewAvatarById(longId, width, tenantId) .getInputStream(); } @GET @Path("username") @Produces(MediaType.APPLICATION_OCTET_STREAM) public InputStream username(@QueryParam("username") String username, @QueryParam("width") @DefaultValue("16") int width) throws Exception { logger.debug("width : {}", width); String tenantId = tenantHolder.getTenantId(); return userAvatarService .viewAvatarByUsername(username, width, tenantId) .getInputStream(); } // ~ ====================================================================== @Resource public void setUserAvatarService(UserAvatarService userAvatarService) { this.userAvatarService = userAvatarService; } @Resource public void setTenantHolder(TenantHolder tenantHolder) { this.tenantHolder = tenantHolder; } }