| | |
| | | package de.uhilger.neon.adoc; |
| | | |
| | | import com.sun.net.httpserver.Filter; |
| | | import com.sun.net.httpserver.HttpContext; |
| | | import com.sun.net.httpserver.HttpExchange; |
| | | import de.uhilger.neon.FileServer; |
| | | import de.uhilger.neon.HttpHelper; |
| | | import java.io.File; |
| | | import java.io.IOException; |
| | | import java.net.URI; |
| | | |
| | | /** |
| | | * AdocFilter prueft, ob fuer eine Asciidoctor-Quelldatei bereits eine HTML-Version vorliegt. Wenn |
| | |
| | | |
| | | @Override |
| | | public void doFilter(HttpExchange exchange, Chain chain) throws IOException { |
| | | String fileBase = exchange.getHttpContext().getAttributes() |
| | | .get(FileServer.ATTR_FILE_BASE).toString(); |
| | | String fileName = exchange |
| | | .getRequestURI() |
| | | .getPath() |
| | | .substring(exchange |
| | | .getHttpContext() |
| | | .getPath() |
| | | .length()); |
| | | if(fileName.endsWith(".adoc")) { |
| | | String query = exchange.getRequestURI().getQuery(); |
| | | if (query instanceof String && query.contains("pdf=true")) { |
| | | processAdocFile(new File(fileBase, fileName), true); |
| | | } else { |
| | | processAdocFile(new File(fileBase, fileName), false); |
| | | URI uri = exchange.getRequestURI(); |
| | | //String path = uri.getPath(); |
| | | try { |
| | | String path = new HttpHelper().getFileName(exchange); |
| | | if(path.endsWith(".adoc")) { |
| | | HttpContext ctx = exchange.getHttpContext(); |
| | | String fileBase = ctx.getAttributes().get(FileServer.ATTR_FILE_BASE).toString(); |
| | | String fileName = path.substring(ctx.getPath().length()); |
| | | String query = uri.getQuery(); |
| | | if (query instanceof String && query.contains("pdf=true")) { |
| | | processAdocFile(new File(fileBase, fileName), true); |
| | | } else { |
| | | processAdocFile(new File(fileBase, fileName), false); |
| | | } |
| | | } |
| | | } catch (IllegalArgumentException ex) { |
| | | // ungueltiger Dateiname, keine Transformation noetig, also tue nichts |
| | | } finally { |
| | | chain.doFilter(exchange); |
| | | } |
| | | chain.doFilter(exchange); |
| | | |
| | | } |
| | | |
| | | /** |