package plugins.TestGallery; import java.util.Random; import freenet.client.HighLevelSimpleClient; import freenet.keys.FreenetURI; import freenet.pluginmanager.FredPlugin; import freenet.pluginmanager.FredPluginHTTP; import freenet.pluginmanager.FredPluginThreadless; import freenet.pluginmanager.PluginHTTPException; import freenet.pluginmanager.PluginRespirator; import freenet.support.api.HTTPRequest; public class TestGallery implements FredPlugin, FredPluginHTTP, FredPluginThreadless { private final static String DEFAULT_GALLERY_URI = "CHK@sTcjGeT~bWxycEvhidh7QYh9J9fBT6YjiXrfkzsC5fQ,~dt~6lS7idVfF09oqnzMI~nXo8V-HN4T6Y7FisfyWDU,AAEA--8"; private volatile boolean goon = true; Random rnd = new Random(); PluginRespirator pr; private static final String plugName = "TestGallery"; public void terminate() { goon = false; } private String getArrayElement(String[] array, int element) { try { return array[element]; } catch (Exception e) { //e.printStackTrace(); return ""; } } public String handleHTTPPost(HTTPRequest request) throws PluginHTTPException { return null; } private String mkDefaultPage() { StringBuilder out = new StringBuilder(); out.append("" + plugName + "\n"); out.append("

" + plugName + "




\n"); out.append("Load gallery from the following key:
"); out.append("
"); out.append(""); out.append("
\n"); out.append("
"); return out.toString(); } public String handleHTTPGet(HTTPRequest request) throws PluginHTTPException { StringBuilder out = new StringBuilder(); int page = request.getIntParam("page", 1); String uri = request.getParam("uri", request.getPath()); if (uri.equals("")) { return mkDefaultPage(); } try { int i = 0; /* Cache later! */ HighLevelSimpleClient hlsc = pr.getHLSimpleClient(); String imglist = new String(hlsc.fetch(new FreenetURI(uri)).asByteArray()).trim(); imglist = imglist.replaceAll("\r","\n"); imglist = imglist.replaceAll("\n\n", "\n"); imglist = imglist.replaceAll("\n\n", "\n"); imglist = imglist.replaceAll("\n\n", "\n"); imglist = imglist.replaceAll("\n\n", "\n"); imglist = imglist.replaceAll("\n\n", "\n"); /* /Cache! */ String[] imgarr = imglist.split("\n"); String title = (imgarr[0].trim().replaceAll("^freenet:", "").indexOf("@") == 3)?"Untitled":imgarr[i++]; //imgarr[0] == title; out.append("").append(title).append("\n"); out.append("

").append(title).append("


Page ").append(page).append("

\n"); mkPageIndex(out, imgarr.length, page, uri+ '?'); out.append("\n"); int images = 0; int flush = (page - 1)*6*4; for(i = 1 ; (i < imgarr.length && images < 6*4); i++) { // url | name | size if (imgarr[i].trim().length() < 5) continue; if (flush > 0) { flush--; continue; } images++; String imginfo[] = imgarr[i].split("\\|"); String iname = getArrayElement(imginfo, 1).trim(); String isname = iname; if (iname.length() > 15) isname = iname.substring(0,11) + "..." + iname.substring(iname.lastIndexOf(".")); // f2="`echo "$f" | rev | cut -d . -f2- | rev | cut -c-13`...`echo "$f" | rev | cut -d . -f1 | rev`" //String isize = getArrayElement(imginfo, 2).trim(); String iurl = getArrayElement(imginfo, 0).trim(); iurl = iurl.replaceAll("^URI: ", ""); iurl = iurl.replaceAll("^freenet:", ""); if (!iurl.startsWith("/")) iurl = '/' + iurl; out.append("\n"); // new row? if (i%6 == 0) { out.append("\n"); } } out.append("
\n"); out.append("
\n"); if (imginfo.length > 1) { out.append(" \"").append(isname).append("\"\n"); } out.append("
\n"); for (int j = 2 ; j < imginfo.length ; j++) out.append("
").append(imginfo[j].trim()).append("\n"); out.append("
\n"); mkPageIndex(out, imgarr.length, page, uri+ '?'); out.append(""); return out.toString(); } catch (Exception e) { // TODO Auto-generated catch block return e.toString();// e.printStackTrace(); } } private void mkPageIndex(StringBuilder out, int imgarrlength, int page, String uri) { for (int pg = 1 ; pg <= (int)Math.ceil((imgarrlength-1)/(6*4)) ; pg++) { out.append(" "); if (pg != page) out.append("[").append(pg).append("]"); else out.append('[').append(pg).append(']'); out.append(" \n"); } } public void runPlugin(PluginRespirator pr) { this.pr = pr; /* while(goon){ try{ Thread.sleep(300000); }catch (InterruptedException e) { } } */ } }