package de.anomic.http.server; import java.io.BufferedWriter; import java.io.ByteArrayOutputStream; import java.io.FilterOutputStream; import java.io.IOException; import java.io.OutputStream; import java.io.OutputStreamWriter; import java.io.Writer; import java.nio.charset.Charset; import net.yacy.cora.protocol.RequestHeader; import net.yacy.interaction.AugmentHtmlStream; import net.yacy.kelondro.data.meta.DigestURI; public class AugmentedHtmlStream extends FilterOutputStream { private final Writer out; private final ByteArrayOutputStream buffer; private final Charset charset; private final DigestURI url; private final String urls; private final RequestHeader requestHeader; public AugmentedHtmlStream(OutputStream out, Charset charset, DigestURI url, RequestHeader requestHeader) { super(out); this.out = new BufferedWriter(new OutputStreamWriter(out, charset)); this.buffer = new ByteArrayOutputStream(); this.charset = charset; this.url = url; this.urls = this.url.toNormalform(false, true); this.requestHeader = requestHeader; } @Override public void write(int b) throws IOException { this.buffer.write(b); } @Override public void write(byte[] b, int off, int len) throws IOException { this.buffer.write(b, off, len); } @Override public void close() throws IOException { StringBuffer b = new StringBuffer(this.buffer.toString(this.charset.name())); b = process(b); this.out.write(b.toString()); this.out.close(); } public StringBuffer process(StringBuffer data) { if (this.urls.contains("currentyacypeer/")) { return data; } return AugmentHtmlStream.process(data, this.url, this.requestHeader); } public static boolean supportsMime(String mime) { // System.out.println("mime" +mime); return mime.split(";")[0].equals("text/html"); } }