throws IOException {
User user = User.findByUsername(username);
if (user != null && user.getPerson() != null) {
final Photograph personalPhoto =
user.getPerson().isPhotoAvailableToCurrentUser() ? user.getPerson().getPersonalPhoto() : null;
HttpHeaders headers = new HttpHeaders();
String etag = "W/\"" + (personalPhoto == null ? "mm-av" : personalPhoto.getExternalId()) + "-" + size + "\"";
headers.setETag(etag);
headers.setExpires(DateTime.now().plusHours(12).getMillis());
headers.setCacheControl("max-age=43200");
if (etag.equals(ifNoneMatch)) {
return new ResponseEntity<>(headers, HttpStatus.NOT_MODIFIED);
}
if (personalPhoto != null) {
headers.set("Content-Type", personalPhoto.getOriginal().getPictureFileFormat().getMimeType());
return new ResponseEntity<>(personalPhoto.getCustomAvatar(size, size, PictureMode.ZOOM), headers, HttpStatus.OK);
} else {
try (InputStream mm =
PhotographController.class.getClassLoader().getResourceAsStream("META-INF/resources/img/mysteryman.png")) {
headers.set("Content-Type", "image/png");
return new ResponseEntity<>(Avatar.process(mm, "image/png", size), headers, HttpStatus.OK);