Search in sources :

Example 1 with ResourceDownloaderFactory

use of com.biglybt.pif.utils.resourcedownloader.ResourceDownloaderFactory in project BiglyBT by BiglySoftware.

the class WelcomeWindow method getWhatsNew.

private void getWhatsNew(final int phase) {
    String helpFile = null;
    if (phase == 1) {
        helpFile = MessageText.getString("window.welcome.file");
        if (!helpFile.toLowerCase().startsWith(Constants.PLUGINS_WEB_SITE)) {
            getWhatsNew(2);
            return;
        }
    } else {
        helpFile = MessageText.getString("window.welcome.file");
        InputStream stream;
        stream = getClass().getResourceAsStream(helpFile);
        if (stream == null) {
            String helpFullPath = "/com/biglybt/internat/whatsnew/" + helpFile;
            stream = getClass().getResourceAsStream(helpFullPath);
        }
        if (stream == null) {
            stream = getClass().getResourceAsStream("/ChangeLog.txt");
        }
        if (stream == null) {
            sWhatsNew = "Welcome Window: Error loading resource: " + helpFile;
        } else {
            try {
                sWhatsNew = FileUtil.readInputStreamAsString(stream, 65535, "utf8");
                stream.close();
            } catch (IOException e) {
                Debug.out(e);
            }
        }
        setWhatsNew();
        return;
    }
    final String url = helpFile;
    new AEThread2("getWhatsNew", true) {

        @Override
        public void run() {
            String s;
            ResourceDownloaderFactory rdf = ResourceDownloaderFactoryImpl.getSingleton();
            try {
                ResourceDownloader rd = rdf.create(new URL(url));
                InputStream is = rd.download();
                int length = is.available();
                byte[] data = new byte[length];
                is.read(data);
                is.close();
                s = new String(data);
            } catch (ResourceDownloaderException rde) {
                // We don't need a stack trace - it's arguable that we even need any
                // errors at all - the below line is better, but suppressed output might
                // be better.
                // Debug.outNoStack("Error downloading from " + url + ", " + rde, true);
                s = "";
            } catch (Exception e) {
                Debug.out(e);
                s = "";
            }
            sWhatsNew = s;
            if (sWhatsNew == null || sWhatsNew.length() == 0) {
                getWhatsNew(phase + 1);
                return;
            }
            Utils.execSWTThread(new AERunnable() {

                @Override
                public void runSupport() {
                    if (cWhatsNew != null && !cWhatsNew.isDisposed()) {
                        setWhatsNew();
                    }
                }
            });
        }
    }.start();
}
Also used : InputStream(java.io.InputStream) ResourceDownloaderException(com.biglybt.pif.utils.resourcedownloader.ResourceDownloaderException) ResourceDownloaderFactory(com.biglybt.pif.utils.resourcedownloader.ResourceDownloaderFactory) IOException(java.io.IOException) ResourceDownloader(com.biglybt.pif.utils.resourcedownloader.ResourceDownloader) URL(java.net.URL) IOException(java.io.IOException) ResourceDownloaderException(com.biglybt.pif.utils.resourcedownloader.ResourceDownloaderException)

Example 2 with ResourceDownloaderFactory

use of com.biglybt.pif.utils.resourcedownloader.ResourceDownloaderFactory in project BiglyBT by BiglySoftware.

the class UPnPImpl method downloadXMLSupport.

protected SimpleXMLParserDocument downloadXMLSupport(String friendly_name, URL url) throws UPnPException {
    String url_str = url.toExternalForm();
    boolean record_failure = true;
    try {
        TorrentUtils.setTLSDescription("UPnP Device" + (friendly_name == null ? "" : (": " + friendly_name)));
        ResourceDownloaderFactory rdf = adapter.getResourceDownloaderFactory();
        int retries;
        synchronized (failed_urls) {
            long[] fails = failed_urls.get(url_str);
            if (fails == null) {
                retries = 3;
            } else {
                long consec_fails = fails[0];
                long last_fail = fails[1];
                long max_period = 10 * 60 * 1000;
                long period = 60 * 1000;
                for (int i = 0; i < consec_fails; i++) {
                    period <<= 1;
                    if (period >= max_period) {
                        period = max_period;
                        break;
                    }
                }
                if (SystemTime.getMonotonousTime() - last_fail < period) {
                    record_failure = false;
                    throw (new UPnPException("Download failed too recently, ignoring"));
                }
                retries = 1;
            }
        }
        ResourceDownloader rd = rdf.getRetryDownloader(rdf.create(url, true), retries);
        rd.addListener(this);
        InputStream data = rd.download();
        try {
            SimpleXMLParserDocument res = parseXML(data);
            synchronized (failed_urls) {
                failed_urls.remove(url_str);
            }
            return (res);
        } finally {
            data.close();
        }
    } catch (Throwable e) {
        if (record_failure) {
            synchronized (failed_urls) {
                if (failed_urls.size() >= 64) {
                    failed_urls.clear();
                }
                long[] fails = failed_urls.get(url_str);
                if (fails == null) {
                    fails = new long[2];
                    failed_urls.put(url_str, fails);
                }
                fails[0]++;
                fails[1] = SystemTime.getMonotonousTime();
            }
            adapter.log("Failed to parse XML from :" + url_str + ": " + Debug.getNestedExceptionMessageAndStack(e));
        }
        if (e instanceof UPnPException) {
            throw ((UPnPException) e);
        }
        throw (new UPnPException("Root device location '" + url + "' - data read failed", e));
    } finally {
        TorrentUtils.setTLSDescription(null);
    }
}
Also used : SimpleXMLParserDocument(com.biglybt.pif.utils.xml.simpleparser.SimpleXMLParserDocument) ResourceDownloaderFactory(com.biglybt.pif.utils.resourcedownloader.ResourceDownloaderFactory) ResourceDownloader(com.biglybt.pif.utils.resourcedownloader.ResourceDownloader)

Example 3 with ResourceDownloaderFactory

use of com.biglybt.pif.utils.resourcedownloader.ResourceDownloaderFactory in project BiglyBT by BiglySoftware.

the class PlatformManagerUpdateChecker method checkForUpdate.

@Override
public void checkForUpdate(final UpdateChecker checker) {
    try {
        SFPluginDetails sf_details = SFPluginDetailsLoaderFactory.getSingleton().getPluginDetails(plugin_interface.getPluginID());
        String current_version = plugin_interface.getPluginVersion();
        if (Logger.isEnabled())
            Logger.log(new LogEvent(LOGID, "PlatformManager:OSX update check starts: current = " + current_version));
        boolean current_az_is_cvs = Constants.isCVSVersion();
        String sf_plugin_version = sf_details.getVersion();
        String sf_comp_version = sf_plugin_version;
        if (current_az_is_cvs) {
            String sf_cvs_version = sf_details.getCVSVersion();
            if (sf_cvs_version.length() > 0) {
                // sf cvs version ALWAYS entry in _CVS
                sf_plugin_version = sf_cvs_version;
                sf_comp_version = sf_plugin_version.substring(0, sf_plugin_version.length() - 4);
            }
        }
        String target_version = null;
        if (sf_comp_version.length() == 0 || !Character.isDigit(sf_comp_version.charAt(0))) {
            if (Logger.isEnabled())
                Logger.log(new LogEvent(LOGID, LogEvent.LT_WARNING, "PlatformManager:OSX no valid version to check against (" + sf_comp_version + ")"));
        } else if (Constants.compareVersions(current_version, sf_comp_version) < 0) {
            target_version = sf_comp_version;
        }
        checker.reportProgress("OSX: current = " + current_version + ", latest = " + sf_comp_version);
        if (Logger.isEnabled())
            Logger.log(new LogEvent(LOGID, "PlatformManager:OSX update required = " + (target_version != null)));
        if (target_version != null) {
            String target_download = sf_details.getDownloadURL();
            if (current_az_is_cvs) {
                String sf_cvs_version = sf_details.getCVSVersion();
                if (sf_cvs_version.length() > 0) {
                    target_download = sf_details.getCVSDownloadURL();
                }
            }
            ResourceDownloaderFactory rdf = ResourceDownloaderFactoryImpl.getSingleton();
            ResourceDownloader direct_rdl = rdf.create(new URL(target_download));
            String torrent_download = Constants.URL_PLUGINS_TORRENT_BASE;
            int slash_pos = target_download.lastIndexOf("/");
            if (slash_pos == -1) {
                torrent_download += target_download;
            } else {
                torrent_download += target_download.substring(slash_pos + 1);
            }
            torrent_download += ".torrent";
            if (I2PHelpers.isI2PInstalled()) {
                torrent_download += "?i2p=1";
            }
            ResourceDownloader torrent_rdl = rdf.create(new URL(torrent_download));
            torrent_rdl = rdf.getSuffixBasedDownloader(torrent_rdl);
            // create an alternate downloader with torrent attempt first
            ResourceDownloader alternate_rdl = rdf.getAlternateDownloader(new ResourceDownloader[] { torrent_rdl, direct_rdl });
            // get size here so it is cached
            rdf.getTimeoutDownloader(rdf.getRetryDownloader(alternate_rdl, RD_SIZE_RETRIES), RD_SIZE_TIMEOUT).getSize();
            List update_desc = new ArrayList();
            List desc_lines = HTMLUtils.convertHTMLToText("", sf_details.getDescription());
            update_desc.addAll(desc_lines);
            List comment_lines = HTMLUtils.convertHTMLToText("    ", sf_details.getComment());
            update_desc.addAll(comment_lines);
            String[] update_d = new String[update_desc.size()];
            update_desc.toArray(update_d);
            final Update update = checker.addUpdate(UPDATE_NAME, update_d, current_version, target_version, alternate_rdl, Update.RESTART_REQUIRED_YES);
            update.setDescriptionURL(sf_details.getInfoURL());
            alternate_rdl.addListener(new ResourceDownloaderAdapter() {

                @Override
                public boolean completed(final ResourceDownloader downloader, InputStream data) {
                    installUpdate(checker, update, downloader, data);
                    return (true);
                }

                @Override
                public void failed(ResourceDownloader downloader, ResourceDownloaderException e) {
                    Debug.out(downloader.getName() + " failed", e);
                    update.complete(false);
                }
            });
        }
    } catch (Throwable e) {
        Debug.printStackTrace(e);
        checker.reportProgress("Failed to load plugin details for the platform manager: " + Debug.getNestedExceptionMessage(e));
        checker.failed();
    } finally {
        checker.completed();
    }
}
Also used : LogEvent(com.biglybt.core.logging.LogEvent) ZipInputStream(java.util.zip.ZipInputStream) InputStream(java.io.InputStream) ResourceDownloaderException(com.biglybt.pif.utils.resourcedownloader.ResourceDownloaderException) ArrayList(java.util.ArrayList) ResourceDownloader(com.biglybt.pif.utils.resourcedownloader.ResourceDownloader) Update(com.biglybt.pif.update.Update) URL(java.net.URL) ResourceDownloaderAdapter(com.biglybt.pif.utils.resourcedownloader.ResourceDownloaderAdapter) ResourceDownloaderFactory(com.biglybt.pif.utils.resourcedownloader.ResourceDownloaderFactory) ArrayList(java.util.ArrayList) List(java.util.List) SFPluginDetails(com.biglybt.pifimpl.update.sf.SFPluginDetails)

Example 4 with ResourceDownloaderFactory

use of com.biglybt.pif.utils.resourcedownloader.ResourceDownloaderFactory in project BiglyBT by BiglySoftware.

the class PluginUpdatePlugin method checkForUpdateSupport.

protected int checkForUpdateSupport(UpdateChecker checker, // explicit ids or null for all
String[] ids_to_check, boolean mandatory) {
    int num_updates_found = 0;
    try {
        if ((!mandatory) && // allow custom actions through
        (ids_to_check == null) && (!plugin_interface.getPluginconfig().getPluginBooleanParameter("enable.update", true))) {
            return (num_updates_found);
        }
        PluginInterface[] plugins = plugin_interface.getPluginManager().getPlugins();
        List plugins_to_check = new ArrayList();
        List plugins_to_check_ids = new ArrayList();
        Map plugins_to_check_names = new HashMap();
        for (int i = 0; i < plugins.length; i++) {
            PluginInterface pi = plugins[i];
            if (pi.getPluginState().isDisabled()) {
                if (!pi.getPluginState().hasFailed()) {
                    continue;
                }
            }
            String mand = pi.getPluginProperties().getProperty("plugin.mandatory");
            boolean pi_mandatory = mand != null && mand.trim().toLowerCase().equals("true");
            if (pi_mandatory != mandatory) {
                continue;
            }
            String id = pi.getPluginID();
            String version = pi.getPluginVersion();
            String name = pi.getPluginName();
            if (ids_to_check != null) {
                boolean id_selected = false;
                for (int j = 0; j < ids_to_check.length; j++) {
                    if (ids_to_check[j].equals(id)) {
                        id_selected = true;
                        break;
                    }
                }
                if (!id_selected) {
                    continue;
                }
            }
            if (version != null) {
                if (plugins_to_check_ids.contains(id)) {
                    String s = (String) plugins_to_check_names.get(id);
                    if (!name.equals(id)) {
                        plugins_to_check_names.put(id, s + "," + name);
                    }
                } else {
                    plugins_to_check_ids.add(id);
                    plugins_to_check.add(pi);
                    plugins_to_check_names.put(id, name.equals(id) ? "" : name);
                }
            }
            String location = pi.getPluginDirectoryName();
            log.log(LoggerChannel.LT_INFORMATION, (mandatory ? "*" : "-") + pi.getPluginName() + ", id = " + id + (version == null ? "" : (", version = " + pi.getPluginVersion())) + (location == null ? "" : (", loc = " + location)));
        }
        SFPluginDetailsLoader loader = SFPluginDetailsLoaderFactory.getSingleton();
        if (!loader_listener_added) {
            loader_listener_added = true;
            loader.addListener(new SFPluginDetailsLoaderListener() {

                @Override
                public void log(String str) {
                    log.log(LoggerChannel.LT_INFORMATION, "[" + str + "]");
                }
            });
        }
        String[] ids = loader.getPluginIDs();
        String id_info = "";
        for (int i = 0; i < ids.length; i++) {
            String id = ids[i];
            SFPluginDetails details = loader.getPluginDetails(id);
            id_info += (i == 0 ? "" : ",") + ids[i] + "=" + details.getVersion() + "/" + details.getCVSVersion();
        }
        if (!id_info.equals(last_id_info)) {
            last_id_info = id_info;
            log.log(LoggerChannel.LT_INFORMATION, "Downloaded plugin info = " + id_info);
        }
        for (int i = 0; i < plugins_to_check.size(); i++) {
            if (checker.getCheckInstance().isCancelled()) {
                // XXX: Uh?
                throw (new Exception("Update check cancelled"));
            }
            final PluginInterface pi_being_checked = (PluginInterface) plugins_to_check.get(i);
            final String plugin_id = pi_being_checked.getPluginID();
            boolean found = false;
            for (int j = 0; j < ids.length; j++) {
                if (ids[j].equalsIgnoreCase(plugin_id)) {
                    found = true;
                    break;
                }
            }
            if (!found) {
                if (!pi_being_checked.getPluginState().isBuiltIn()) {
                    log.log(LoggerChannel.LT_INFORMATION, "Skipping " + plugin_id + " as not listed on web site");
                }
                continue;
            }
            String plugin_names = (String) plugins_to_check_names.get(plugin_id);
            // final boolean	plugin_unloadable 	= ((Boolean)plugins_to_check_unloadable.get( plugin_id )).booleanValue();
            log.log(LoggerChannel.LT_INFORMATION, "Checking " + plugin_id);
            try {
                checker.reportProgress("Loading details for " + plugin_id + "/" + pi_being_checked.getPluginName());
                SFPluginDetails details = loader.getPluginDetails(plugin_id);
                if (plugin_names.length() == 0) {
                    plugin_names = details.getName();
                }
                boolean az_cvs = plugin_interface.getUtilities().isCVSVersion();
                String pi_version_info = pi_being_checked.getPluginProperties().getProperty("plugin.version.info");
                String az_plugin_version = pi_being_checked.getPluginVersion();
                String sf_plugin_version = details.getVersion();
                String sf_comp_version = sf_plugin_version;
                if (az_cvs) {
                    String sf_cvs_version = details.getCVSVersion();
                    if (sf_cvs_version.length() > 0) {
                        // sf cvs version ALWAYS ends in _CVS
                        sf_plugin_version = sf_cvs_version;
                        sf_comp_version = sf_plugin_version.substring(0, sf_plugin_version.length() - 4);
                    }
                }
                if (sf_comp_version.length() == 0 || !Character.isDigit(sf_comp_version.charAt(0))) {
                    log.log(LoggerChannel.LT_INFORMATION, "Skipping " + plugin_id + " as no valid version to check");
                    continue;
                }
                // System.out.println("comp version = " + sf_comp_version );
                int comp = PluginUtils.comparePluginVersions(az_plugin_version, sf_comp_version);
                // if they're the same version and latest is CVS then stick a _CVS on
                // the end of current to avoid confusion
                log.log(LoggerChannel.LT_INFORMATION, "    Current: " + az_plugin_version + (comp == 0 && sf_plugin_version.endsWith("_CVS") ? "_CVS" : "") + ", Latest: " + sf_plugin_version + (pi_version_info == null ? "" : " [" + pi_version_info + "]"));
                checker.reportProgress("    current=" + az_plugin_version + (comp == 0 && sf_plugin_version.endsWith("_CVS") ? "_CVS" : "") + ", latest=" + sf_plugin_version);
                if (comp < 0 && !(pi_being_checked.getPlugin() instanceof UpdatableComponent)) {
                    // only update if newer verison + plugin itself doesn't handle
                    // the update
                    String sf_plugin_download = details.getDownloadURL();
                    if (az_cvs) {
                        String sf_cvs_version = details.getCVSVersion();
                        if (sf_cvs_version.length() > 0) {
                            sf_plugin_download = details.getCVSDownloadURL();
                        }
                    }
                    log.log(LoggerChannel.LT_INFORMATION, "    Description:");
                    List update_desc = new ArrayList();
                    List desc_lines = HTMLUtils.convertHTMLToText("", details.getDescription());
                    logMultiLine("        ", desc_lines);
                    update_desc.addAll(desc_lines);
                    log.log(LoggerChannel.LT_INFORMATION, "    Comment:");
                    List comment_lines = HTMLUtils.convertHTMLToText("    ", details.getComment());
                    logMultiLine("    ", comment_lines);
                    update_desc.addAll(comment_lines);
                    String msg = "A newer version (version " + sf_plugin_version + ") of plugin '" + plugin_id + "' " + (plugin_names.length() == 0 ? "" : "(" + plugin_names + ") ") + "is available. ";
                    log.log(LoggerChannel.LT_INFORMATION, "");
                    log.log(LoggerChannel.LT_INFORMATION, "        " + msg + "Download from " + sf_plugin_download);
                    ResourceDownloaderFactory rdf = plugin_interface.getUtilities().getResourceDownloaderFactory();
                    ResourceDownloader direct_rdl = rdf.create(new URL(sf_plugin_download));
                    ResourceDownloader direct_ap_rdl = rdf.createWithAutoPluginProxy(new URL(sf_plugin_download));
                    // work out what the torrent download will be, if it exists
                    // sf_plugin_download will be something like ../plugins/safepeer_2.4.zip
                    // torrent is safepeer_2.4.zip.torrent
                    String torrent_download = Constants.URL_PLUGINS_TORRENT_BASE;
                    int slash_pos = sf_plugin_download.lastIndexOf("/");
                    if (slash_pos == -1) {
                        torrent_download += sf_plugin_download;
                    } else {
                        torrent_download += sf_plugin_download.substring(slash_pos + 1);
                    }
                    torrent_download += ".torrent";
                    if (I2PHelpers.isI2PInstalled()) {
                        torrent_download += "?i2p=1";
                    }
                    ResourceDownloader torrent_rdl = rdf.create(new URL(torrent_download));
                    // ResourceDownloader torrent_ap_rdl 	= rdf.createWithAutoPluginProxy( new URL( torrent_download ));
                    torrent_rdl = rdf.getSuffixBasedDownloader(torrent_rdl);
                    // create an alternate downloader with torrent attempt first
                    ResourceDownloader alternate_rdl = rdf.getAlternateDownloader(new ResourceDownloader[] { torrent_rdl, direct_rdl, direct_ap_rdl });
                    // get size so it is cached
                    rdf.getTimeoutDownloader(rdf.getRetryDownloader(alternate_rdl, RD_SIZE_RETRIES), RD_SIZE_TIMEOUT).getSize();
                    String[] update_d = new String[update_desc.size()];
                    update_desc.toArray(update_d);
                    num_updates_found++;
                    // see if unloadable
                    boolean plugin_unloadable = true;
                    for (int j = 0; j < plugins.length; j++) {
                        PluginInterface pi = plugins[j];
                        if (pi.getPluginID().equals(plugin_id)) {
                            plugin_unloadable &= pi.getPluginState().isUnloadable();
                        }
                    }
                    if (plugin_unloadable) {
                        checker.reportProgress("Plugin is unloadable");
                    }
                    Update update = addUpdate(pi_being_checked, checker, plugin_id + "/" + plugin_names, update_d, az_plugin_version, sf_plugin_version, alternate_rdl, sf_plugin_download.toLowerCase().endsWith(".jar"), plugin_unloadable ? Update.RESTART_REQUIRED_NO : Update.RESTART_REQUIRED_YES, true);
                    update.setRelativeURLBase(details.getRelativeURLBase());
                    update.setDescriptionURL(details.getInfoURL());
                }
            } catch (Throwable e) {
                checker.reportProgress("Failed to load details for plugin '" + plugin_id + "': " + Debug.getNestedExceptionMessage(e));
                log.log("    Plugin check failed", e);
            }
        }
    } catch (Throwable e) {
        if (!"Update check cancelled".equals(e.getMessage())) {
            log.log("Failed to load plugin details", e);
        }
        checker.reportProgress("Failed to load plugin details: " + Debug.getNestedExceptionMessage(e));
        checker.failed();
    } finally {
        // any prior failure will take precedence
        checker.completed();
    }
    return (num_updates_found);
}
Also used : SFPluginDetailsLoaderListener(com.biglybt.pifimpl.update.sf.SFPluginDetailsLoaderListener) ResourceDownloader(com.biglybt.pif.utils.resourcedownloader.ResourceDownloader) ResourceDownloaderException(com.biglybt.pif.utils.resourcedownloader.ResourceDownloaderException) URL(java.net.URL) ResourceDownloaderFactory(com.biglybt.pif.utils.resourcedownloader.ResourceDownloaderFactory) SFPluginDetails(com.biglybt.pifimpl.update.sf.SFPluginDetails) SFPluginDetailsLoader(com.biglybt.pifimpl.update.sf.SFPluginDetailsLoader)

Example 5 with ResourceDownloaderFactory

use of com.biglybt.pif.utils.resourcedownloader.ResourceDownloaderFactory in project BiglyBT by BiglySoftware.

the class MetaSearchImpl method updateEngine.

protected boolean updateEngine(EngineImpl engine) {
    String update_url = engine.getUpdateURL();
    int pos = update_url.indexOf('?');
    if (pos == -1) {
        update_url += "?";
    } else {
        update_url += "&";
    }
    update_url += "az_template_uid=" + engine.getUID() + "&az_template_version=" + engine.getVersion() + "&az_version=" + Constants.AZUREUS_VERSION + "&az_locale=" + MessageText.getCurrentLocale().toString() + "&az_rand=" + RandomUtils.nextAbsoluteLong();
    log("Engine " + engine.getName() + ": auto-update check via " + update_url);
    try {
        ResourceDownloaderFactory rdf = StaticUtilities.getResourceDownloaderFactory();
        ResourceDownloader url_rd = rdf.create(new URL(update_url));
        ResourceDownloader rd = rdf.getMetaRefreshDownloader(url_rd);
        InputStream is = rd.download();
        try {
            Map<String, Object> map = BDecoder.decode(new BufferedInputStream(is));
            log("    update check reply: " + map);
            // reply is either "response" meaning "no update" and giving possibly changed update secs
            // or Vuze file with updated template
            Map<String, Object> response = (Map<String, Object>) map.get("response");
            if (response != null) {
                Long update_secs = (Long) response.get("update_url_check_secs");
                if (update_secs == null) {
                    engine.setLocalUpdateCheckSecs(0);
                } else {
                    int check_secs = update_secs.intValue();
                    if (check_secs < MIN_UPDATE_CHECK_SECS) {
                        log("    update check secs for to small, min is " + MIN_UPDATE_CHECK_SECS);
                        check_secs = MIN_UPDATE_CHECK_SECS;
                    }
                    engine.setLocalUpdateCheckSecs(check_secs);
                }
                return (true);
            } else {
                VuzeFile vf = VuzeFileHandler.getSingleton().loadVuzeFile(map);
                if (vf == null) {
                    log("    failed to decode vuze file");
                    return (false);
                }
                Engine[] updated_engines = manager.loadFromVuzeFile(vf);
                if (updated_engines.length > 0) {
                    String existing_uid = engine.getUID();
                    boolean found = false;
                    String engine_str = "";
                    for (int i = 0; i < updated_engines.length; i++) {
                        Engine updated_engine = updated_engines[i];
                        engine_str += (i == 0 ? "" : ",") + updated_engine.getName() + ": uid=" + updated_engine.getUID() + ",version=" + updated_engine.getVersion();
                        if (updated_engine.getUID().equals(existing_uid)) {
                            found = true;
                        }
                    }
                    if (!found) {
                        log("    existing engine not found in updated set, deleting");
                        engine.delete();
                    }
                    log("    update complete: new engines=" + engine_str);
                } else {
                    log("    no engines found in vuze file");
                }
                return (true);
            }
        } finally {
            is.close();
        }
    } catch (Throwable e) {
        log("    update check failed", e);
        return (false);
    }
}
Also used : BufferedInputStream(java.io.BufferedInputStream) InputStream(java.io.InputStream) ResourceDownloader(com.biglybt.pif.utils.resourcedownloader.ResourceDownloader) URL(java.net.URL) BufferedInputStream(java.io.BufferedInputStream) VuzeFile(com.biglybt.core.vuzefile.VuzeFile) ResourceDownloaderFactory(com.biglybt.pif.utils.resourcedownloader.ResourceDownloaderFactory) PluginEngine(com.biglybt.core.metasearch.impl.plugin.PluginEngine) RSSEngine(com.biglybt.core.metasearch.impl.web.rss.RSSEngine) WebEngine(com.biglybt.core.metasearch.impl.web.WebEngine)

Aggregations

ResourceDownloader (com.biglybt.pif.utils.resourcedownloader.ResourceDownloader)11 ResourceDownloaderFactory (com.biglybt.pif.utils.resourcedownloader.ResourceDownloaderFactory)11 InputStream (java.io.InputStream)8 URL (java.net.URL)8 ResourceDownloaderException (com.biglybt.pif.utils.resourcedownloader.ResourceDownloaderException)7 ResourceDownloaderAdapter (com.biglybt.pif.utils.resourcedownloader.ResourceDownloaderAdapter)4 Update (com.biglybt.pif.update.Update)3 SFPluginDetails (com.biglybt.pifimpl.update.sf.SFPluginDetails)3 ArrayList (java.util.ArrayList)3 ZipInputStream (java.util.zip.ZipInputStream)3 LogEvent (com.biglybt.core.logging.LogEvent)2 WebEngine (com.biglybt.core.metasearch.impl.web.WebEngine)2 PluginProxy (com.biglybt.core.proxy.AEProxyFactory.PluginProxy)2 VuzeFile (com.biglybt.core.vuzefile.VuzeFile)2 List (java.util.List)2 Engine (com.biglybt.core.metasearch.Engine)1 SearchException (com.biglybt.core.metasearch.SearchException)1 SearchLoginException (com.biglybt.core.metasearch.SearchLoginException)1 SearchParameter (com.biglybt.core.metasearch.SearchParameter)1 PluginEngine (com.biglybt.core.metasearch.impl.plugin.PluginEngine)1