From Sharp Earthworm, 4 Years ago, written in Java.
This paste is a reply to Untitled from Mungo Ibis
- view diff
Embed
  1. public boolean hasFeatureFileTransferHttp(long filesize) {
  2.             if (Config.DISABLE_HTTP_UPLOAD) {
  3.                 return false;
  4.             } else {
  5.                 List<Entry<Jid, ServiceDiscoveryResult>> items = findDiscoItemsByFeature(FileTransferHttp.NAMESPACE);
  6.                 if (items.size() > 0) {
  7.                     try {
  8.                         long maxsize = this.parseMaxHttpUploadSize(items.get(0), FileTransferHttp.NAMESPACE);
  9.                         return filesize <= maxsize;
  10.                     } catch (Exception e) {
  11.                         return true;
  12.                     }
  13.                 } else {
  14.                     return false;
  15.                 }
  16.             }
  17.         }
  18.  
  19.                 public boolean httpUpload(long filesize) {
  20.                         if (Config.DISABLE_HTTP_UPLOAD) {
  21.                                 return false;
  22.                         } else {
  23.                 if (hasFeatureFileTransferHttp(filesize)) {
  24.                     return true;
  25.                 } else {
  26.                     List<Entry<Jid, ServiceDiscoveryResult>> items = findDiscoItemsByFeature(HttpUpload.NAMESPACE);
  27.                     if (items.size() > 0) {
  28.                         long maxsize = this.parseMaxHttpUploadSize(items.get(0), HttpUpload.NAMESPACE);
  29.                         return filesize <= maxsize;
  30.                     } else {
  31.                         return false;
  32.                     }
  33.                 }
  34.                         }
  35.                 }
  36.  
  37.         private long parseMaxHttpUploadSize(Entry<Jid, ServiceDiscoveryResult> item, String namespace) {
  38.             long maxsize = Long.MAX_VALUE;
  39.             if (null != item && null != namespace) {
  40.                 try {
  41.                     maxsize = Long.parseLong(item.getValue().getExtendedDiscoInformation(namespace, "max-file-size"));
  42.                 } catch (Exception e) {
  43.                     // Suppress exception
  44.                 }
  45.             }
  46.             return maxsize;
  47.         }
  48.  
  49.                 public long getMaxHttpUploadSize() {
  50.                         List<Entry<Jid, ServiceDiscoveryResult>> items = findDiscoItemsByFeature(HttpUpload.NAMESPACE);
  51.                                 if (items.size() > 0) {
  52.                     long maxsize = this.parseMaxHttpUploadSize(items.get(0), HttpUpload.NAMESPACE);
  53.                     if (Long.MAX_VALUE == maxsize) { // For code compatibility - legacy behavior returns -1 in case of no max-file-size
  54.                         return -1;
  55.                     } else {
  56.                         return maxsize;
  57.                     }
  58.                                 } else {
  59.                                         return -1;
  60.                                 }
  61.                 }