1 50 51 package org.openlaszlo.iv.flash.url; 52 53 import java.io.*; 54 import java.net.*; 55 import java.util.*; 56 import org.openlaszlo.iv.flash.util.*; 57 import org.openlaszlo.iv.flash.api.*; 58 59 import com.enterprisedt.net.ftp.*; 60 61 66 public class FTPUrl extends IVUrl { 67 68 private FTPClient client; 69 private String username; 70 private String pwd; 71 private int port; 72 73 private URL url; 74 private long lastConnect = 0; 75 76 83 public FTPUrl( String urlString, Boolean fgftp ) throws IVException { 84 if ( fgftp.booleanValue() ) 85 { 86 urlString = urlString.replace( '|', ':' ); 88 urlString = urlString.substring(2, urlString.length()); 90 } 91 try { 92 url = new URL( urlString ); 93 } catch (MalformedURLException e ) { 94 throw new IVException(e.getClass().getName() + "\r\n" + e.getMessage()); 95 } 96 97 this.port = url.getPort(); 98 if (port < 0 ) 99 port = 21; 100 username = "anonymous"; 101 pwd = ""; 102 String infos = url.getUserInfo(); 103 if ( infos!=null && !infos.trim().equals("") ) 104 { 105 int index = infos.indexOf(":"); 106 if (index < 0 ) 107 username = infos; 108 else 109 { 110 username = infos.substring( 0, index ); 111 pwd = infos.substring( index+1, infos.length()); 112 } 113 } 114 } 115 116 public String getName() { 117 return url.toExternalForm(); 118 } 119 120 public InputStream getInputStream() throws IOException { 121 connect(); 122 Log.logRB( Resource.RETRIEVINGCONTENT, new Object [] { getName() } ); 123 byte[] readBytes; 124 try { 125 readBytes = client.get( url.getPath() ); 126 client.quit(); 127 } catch (FTPException ex) { 128 throw new IOException( ex.getClass().getName() + "\n" + ex.getMessage() ); 129 } 130 return (InputStream) new ByteArrayInputStream( readBytes ); 131 } 132 133 private synchronized void connect() throws IOException { 134 long now = System.currentTimeMillis(); 135 if( lastConnect == 0 || lastConnect+500 < now ) { 136 137 Log.logRB( Resource.CONNECTINGTO, new Object [] { getName() } ); 138 try { 139 140 client = new FTPClient( url.getHost(), port ); 141 client.login( username, pwd ); 142 client.setType( FTPTransferType.BINARY ); 143 144 } catch (FTPException ex) { 145 throw new IOException( ex.getClass().getName() + "\n" + ex.getMessage() ); 146 } 147 lastConnect = System.currentTimeMillis(); 148 } 149 } 150 151 } 152 | Popular Tags |