/* WebBox - Dein Server. Copyright (C) 2017 Ulrich Hilger, http://uhilger.de This program is free software: you can redistribute it and/or modify it under the terms of the GNU Affero General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Affero General Public License for more details. You should have received a copy of the GNU Affero General Public License along with this program. If not, see . */ package de.uhilger.wbx.web; import com.github.rjeschke.txtmark.Processor; import java.io.IOException; import java.io.OutputStream; import java.util.logging.Logger; import javax.servlet.FilterChain; import javax.servlet.FilterConfig; import javax.servlet.ServletException; import javax.servlet.ServletRequest; import javax.servlet.ServletResponse; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import org.markdown4j.Markdown4jProcessor; /** * Ein Filter zur Verwandlung von Markdown-Text in HTML * * @author ulrich */ public class MarkdownFilter implements javax.servlet.Filter { private static final Logger logger = Logger.getLogger(MarkdownFilter.class.getName()); private static final String EXT_MD = ".md"; public FilterConfig filterConfig; @Override public void doFilter(final ServletRequest request, final ServletResponse response, FilterChain chain) throws IOException, ServletException { response.setCharacterEncoding("UTF-8"); HttpServletRequest hr = (HttpServletRequest) request; String servletPath = hr.getServletPath(); if(servletPath.toLowerCase().endsWith(EXT_MD)) { OutputStream out = response.getOutputStream(); //out.write(new String("
PRE
").getBytes()); GenericResponseWrapper wrapper = new GenericResponseWrapper((HttpServletResponse) response); wrapper.setCharacterEncoding("UTF-8"); //wrapper.setContentLength(100000); chain.doFilter(request, wrapper); String responseContent = new String(wrapper.getData(), "UTF-8"); String html = new Markdown4jProcessor().process(responseContent); //String result = Processor.process(responseContent); out.write(html.getBytes()); //out.write(new String("
POST
").getBytes()); out.close(); } else { chain.doFilter(request, response); } /* logger.info("requestURL: " + hr.getRequestURL().toString()); logger.info("ContextPath: " + hr.getContextPath()); logger.info("ServletPath: " + hr.getServletPath()); logger.info("PathInfo: " + hr.getPathInfo()); */ } @Override public void init(FilterConfig filterConfig) throws ServletException { this.filterConfig = filterConfig; } @Override public void destroy() { // .. } }