package org.alexdev.http.util; import org.apache.commons.codec.binary.Base64; import javax.imageio.ImageIO; import java.awt.image.BufferedImage; import java.io.ByteArrayOutputStream; import java.io.IOException; public class HtmlUtil { /** * Strip HTML tags. * * @param str the string to strip * @return the new string */ public static String removeHtmlTags(String str) { return str.replaceAll("\\<[^>]*>",""); } /** * Conver text to HTML. * * @param s the string to convert * @return the converted text */ public static String escape(String s) { StringBuilder builder = new StringBuilder(); boolean previousWasASpace = false; for (char c : s.toCharArray()) { if (c == ' ') { if (previousWasASpace) { builder.append(" "); previousWasASpace = false; continue; } previousWasASpace = true; } else { previousWasASpace = false; } switch (c) { case '<': builder.append("<"); break; case '>': builder.append(">"); break; case '&': builder.append("&"); break; case '"': builder.append("""); break; case '\n': builder.append("<br>"); break; // We need Tab support here, because we print StackTraces as HTML case '\t': builder.append(" "); break; default: if (c < 128) { builder.append(c); } else { builder.append("&#").append((int) c).append(";"); } } } return builder.toString(); } public static String createFigureLink(String figure, String sex) { return "https://www.habbo.com/habbo-imaging/avatarimage?figure=" + figure + "&size=s&direction=4&head_direction=4&crr=0&gesture=sml&frame=1"; } public static String encodeToString(BufferedImage image, String type) { String imageString = null; ByteArrayOutputStream bos = new ByteArrayOutputStream(); try { ImageIO.write(image, type, bos); byte[] imageBytes = bos.toByteArray(); imageString = new String(Base64.encodeBase64(imageBytes)); bos.close(); } catch (IOException e) { e.printStackTrace(); } return imageString; } }