Search in sources :

Example 1 with I2PSocketEepGet

use of net.i2p.client.streaming.I2PSocketEepGet in project i2p.i2p by i2p.

the class FetchAndAdd method get.

/**
 *  Copied from I2PSnarkUtil so we may add ourselves as a status listener
 *  @return null on failure
 */
private File get() {
    if (_log.shouldLog(Log.DEBUG))
        _log.debug("Fetching [" + _url + "]");
    File out = null;
    try {
        out = SecureFile.createTempFile("torrentFile", null, _mgr.util().getTempDir());
    } catch (IOException ioe) {
        _log.error("temp file error", ioe);
        _mgr.addMessage("Temp file error: " + ioe);
        if (out != null)
            out.delete();
        return null;
    }
    out.deleteOnExit();
    if (!_mgr.util().connected()) {
        _mgr.addMessage(_t("Opening the I2P tunnel"));
        if (!_mgr.util().connect())
            return null;
    }
    I2PSocketManager manager = _mgr.util().getSocketManager();
    if (manager == null)
        return null;
    _eepGet = new I2PSocketEepGet(_ctx, manager, RETRIES, out.getAbsolutePath(), _url);
    _eepGet.addStatusListener(this);
    _eepGet.addHeader("User-Agent", I2PSnarkUtil.EEPGET_USER_AGENT);
    if (_eepGet.fetch()) {
        if (_log.shouldLog(Log.DEBUG))
            _log.debug("Fetch successful [" + _url + "]: size=" + out.length());
        return out;
    } else {
        if (_log.shouldLog(Log.DEBUG))
            _log.debug("Fetch failed [" + _url + ']');
        out.delete();
        return null;
    }
}
Also used : I2PSocketManager(net.i2p.client.streaming.I2PSocketManager) I2PSocketEepGet(net.i2p.client.streaming.I2PSocketEepGet) IOException(java.io.IOException) SecureFile(net.i2p.util.SecureFile) File(java.io.File)

Example 2 with I2PSocketEepGet

use of net.i2p.client.streaming.I2PSocketEepGet in project i2p.i2p by i2p.

the class I2PSnarkUtil method get.

/**
 * @param retries if < 0, set timeout to a few seconds
 */
public File get(String url, boolean rewrite, int retries) {
    if (_log.shouldLog(Log.DEBUG))
        _log.debug("Fetching [" + url + "] proxy=" + _proxyHost + ":" + _proxyPort + ": " + _shouldProxy);
    File out = null;
    try {
        // we could use the system tmp dir but deleteOnExit() doesn't seem to work on all platforms...
        out = SecureFile.createTempFile("i2psnark", null, _tmpDir);
    } catch (IOException ioe) {
        _log.error("temp file error", ioe);
        if (out != null)
            out.delete();
        return null;
    }
    out.deleteOnExit();
    String fetchURL = url;
    if (rewrite)
        fetchURL = rewriteAnnounce(url);
    // _log.debug("Rewritten url [" + fetchURL + "]");
    // EepGet get = new EepGet(_context, _shouldProxy, _proxyHost, _proxyPort, retries, out.getAbsolutePath(), fetchURL);
    // Use our tunnel for announces and .torrent fetches too! Make sure we're connected first...
    int timeout;
    if (retries < 0) {
        if (!connected())
            return null;
        timeout = EEPGET_CONNECT_TIMEOUT_SHORT;
        retries = 0;
    } else {
        timeout = EEPGET_CONNECT_TIMEOUT;
        if (!connected()) {
            if (!connect())
                return null;
        }
    }
    EepGet get = new I2PSocketEepGet(_context, _manager, retries, out.getAbsolutePath(), fetchURL);
    get.addHeader("User-Agent", EEPGET_USER_AGENT);
    if (get.fetch(timeout)) {
        if (_log.shouldLog(Log.DEBUG))
            _log.debug("Fetch successful [" + url + "]: size=" + out.length());
        return out;
    } else {
        if (_log.shouldLog(Log.WARN))
            _log.warn("Fetch failed [" + url + "]");
        out.delete();
        return null;
    }
}
Also used : I2PSocketEepGet(net.i2p.client.streaming.I2PSocketEepGet) EepGet(net.i2p.util.EepGet) I2PSocketEepGet(net.i2p.client.streaming.I2PSocketEepGet) IOException(java.io.IOException) SecureFile(net.i2p.util.SecureFile) File(java.io.File)

Aggregations

File (java.io.File)2 IOException (java.io.IOException)2 I2PSocketEepGet (net.i2p.client.streaming.I2PSocketEepGet)2 SecureFile (net.i2p.util.SecureFile)2 I2PSocketManager (net.i2p.client.streaming.I2PSocketManager)1 EepGet (net.i2p.util.EepGet)1