public void directory(String regex, final File directory, final boolean list) { assert directory.isDirectory(); addAction( "GET", regex, new HttpServerRequestCallback() { @Override public void onRequest( AsyncHttpServerRequest request, final AsyncHttpServerResponse response) { String path = request.getMatcher().replaceAll(""); File file = new File(directory, path); if (file.isDirectory() && list) { ArrayList<File> dirs = new ArrayList<File>(); ArrayList<File> files = new ArrayList<File>(); for (File f : file.listFiles()) { if (f.isDirectory()) dirs.add(f); else files.add(f); } Comparator<File> c = new Comparator<File>() { @Override public int compare(File lhs, File rhs) { return lhs.getName().compareTo(rhs.getName()); } }; Collections.sort(dirs, c); Collections.sort(files, c); files.addAll(0, dirs); return; } if (!file.isFile()) { response.responseCode(404); response.end(); return; } try { FileInputStream is = new FileInputStream(file); response.responseCode(200); Util.pump( is, response, new CompletedCallback() { @Override public void onCompleted(Exception ex) { response.end(); } }); } catch (Exception ex) { response.responseCode(404); response.end(); return; } } }); }
public void directory(Context context, String regex, final String assetPath) { final Context _context = context.getApplicationContext(); addAction( AsyncHttpGet.METHOD, regex, new HttpServerRequestCallback() { @Override public void onRequest( AsyncHttpServerRequest request, final AsyncHttpServerResponse response) { String path = request.getMatcher().replaceAll(""); android.util.Pair<Integer, InputStream> pair = getAssetStream(_context, assetPath + path); final InputStream is = pair.second; response.getHeaders().getHeaders().set("Content-Length", String.valueOf(pair.first)); if (is == null) { response.responseCode(404); response.end(); return; } response.responseCode(200); response .getHeaders() .getHeaders() .add("Content-Type", getContentType(assetPath + path)); Util.pump( is, response, new CompletedCallback() { @Override public void onCompleted(Exception ex) { response.end(); StreamUtility.closeQuietly(is); } }); } }); addAction( AsyncHttpHead.METHOD, regex, new HttpServerRequestCallback() { @Override public void onRequest( AsyncHttpServerRequest request, final AsyncHttpServerResponse response) { String path = request.getMatcher().replaceAll(""); android.util.Pair<Integer, InputStream> pair = getAssetStream(_context, assetPath + path); final InputStream is = pair.second; StreamUtility.closeQuietly(is); response.getHeaders().getHeaders().set("Content-Length", String.valueOf(pair.first)); if (is == null) { response.responseCode(404); response.end(); return; } response.responseCode(200); response .getHeaders() .getHeaders() .add("Content-Type", getContentType(assetPath + path)); response.writeHead(); response.end(); } }); }
public void post(String regex, HttpServerRequestCallback callback) { addAction(AsyncHttpPost.METHOD, regex, callback); }