List of usage examples for com.google.common.net MediaType PNG
MediaType PNG
To view the source code for com.google.common.net MediaType PNG.
Click Source Link
From source file:org.haiku.haikudepotserver.pkg.controller.PkgIconController.java
private void handleHeadOrGetPkgIcon(RequestMethod requestMethod, HttpServletResponse response, Integer size, String format, String pkgName, Boolean fallback) throws IOException { if (null == format) { throw new MissingOrBadFormat(); }// w ww .j a va 2 s .c o m if (Strings.isNullOrEmpty(pkgName) || !Pkg.PATTERN_NAME.matcher(pkgName).matches()) { throw new MissingPkgName(); } ObjectContext context = serverRuntime.newContext(); Optional<Pkg> pkg = Pkg.tryGetByName(context, pkgName); // cached if (!pkg.isPresent()) { LOGGER.debug("request for icon for package '{}', but no such package was able to be found", pkgName); throw new PkgNotFound(); } switch (format) { case org.haiku.haikudepotserver.dataobjects.MediaType.EXTENSION_HAIKUVECTORICONFILE: Optional<PkgIcon> hvifPkgIcon = pkg.get().getPkgIcon( org.haiku.haikudepotserver.dataobjects.MediaType.getByExtension(context, format).get(), null); if (hvifPkgIcon.isPresent()) { byte[] data = hvifPkgIcon.get().getPkgIconImage().getData(); response.setHeader(HttpHeaders.CONTENT_LENGTH, Integer.toString(data.length)); response.setContentType( org.haiku.haikudepotserver.dataobjects.MediaType.MEDIATYPE_HAIKUVECTORICONFILE); response.setDateHeader(HttpHeaders.LAST_MODIFIED, pkg.get().getModifyTimestampSecondAccuracy().getTime()); if (requestMethod == RequestMethod.GET) { OutputStream outputStream = response.getOutputStream(); outputStream.write(data); outputStream.flush(); } } else { throw new PkgIconNotFound(); } break; case org.haiku.haikudepotserver.dataobjects.MediaType.EXTENSION_PNG: if (null == size) { throw new IllegalArgumentException("the size must be provided when requesting a PNG"); } size = normalizeSize(size); Optional<byte[]> pngImageData = renderedPkgIconRepository.render(size, context, pkg.get()); if (!pngImageData.isPresent()) { if ((null == fallback) || !fallback) { throw new PkgIconNotFound(); } handleGenericHeadOrGet(requestMethod, response, size, true); } else { byte[] data = pngImageData.get(); response.setHeader(HttpHeaders.CONTENT_LENGTH, Integer.toString(data.length)); response.setContentType(MediaType.PNG.toString()); response.setDateHeader(HttpHeaders.LAST_MODIFIED, pkg.get().getModifyTimestampSecondAccuracy().getTime()); if (requestMethod == RequestMethod.GET) { OutputStream outputStream = response.getOutputStream(); outputStream.write(data); outputStream.flush(); } } break; default: throw new IllegalStateException("unexpected format; " + format); } }