Download Reference Manual
The Developer's Library for D
About Wiki Forums Source Search Contact

Changeset 3383

Show
Ignore:
Timestamp:
03/20/08 18:44:36 (9 months ago)
Author:
lmartin92
Message:

Finally finished the new version of FtpFolder?. Testing will be underway. Then a rewrite of FtpClient?.d..........

Files:

Legend:

Unmodified
Added
Removed
Modified
Copied
Moved
  • branches/lmartin/ftp/tango/io/vfs/FtpFolder.d

    r3382 r3383  
    99import tango.io.vfs.model.Vfs; 
    1010import tango.io.Conduit; 
     11import tango.text.Util; 
    1112 
    1213class FtpFolderEntry: VfsFolderEntry { 
     
    375376    VfsFilter ffilter_; 
    376377    bool useFilter_ = false; 
     378    bool doFilter_ = true; 
    377379 
    378380    public this(char[] server, char[] path, char[] username = "anonymous", 
     
    392394        port_ = port; 
    393395        filter_ = filtPattern; 
     396 
    394397        useFilter_ = true; 
    395398    } 
     
    414417 
    415418    int opApply(int delegate(inout VfsFile) dg) { 
    416         return null; 
     419        int result; 
     420        foreach(FtpFileInfo inf; getFileInfo()) { 
     421            FtpFile x = new FtpFile(toString_, inf.name, username_, password_, 
     422                port); 
     423            if((result = dg(x)) != 0) 
     424                break; 
     425        } 
     426        return result; 
     427    } 
     428 
     429    FtpFileInfo[] getFileInfo() { 
     430        ftp_ = new FTPConnection(); 
     431        ftp_.connect(toString_, username_, password_, port_); 
     432        scope(exit) { 
     433            ftp_.close(); 
     434        } 
     435        if(doFilter_) { 
     436            FtpFileInfo[] infs = ftp_.ls(); 
     437            FtpFileInfo[] toReturn; 
     438            if(useFilter) { 
     439                foreach(FtpFileInfo inf; infs) { 
     440                    if(contains(inf.name, filter_)) { 
     441                        toReturn ~= inf; 
     442                    } 
     443                } 
     444            } else { 
     445                VfsFilterInfo[] toUse; 
     446                foreach(FtpFileInfo inf; infs) { 
     447                    VfsFilterInfo temp; 
     448                    temp.name = inf.name; 
     449                    temp.folder = toString_; 
     450                    temp.path = toString_ ~ temp.name; 
     451                    temp.bytes = inf.size; 
     452                    toUse ~= temp; 
     453                } 
     454                foreach(VfsFilterInfo inf; toUse) { 
     455                    if(ffilter_(&inf)) { 
     456                        FtpFileInfo temp; 
     457                        temp.name = inf.name; 
     458                        toReturn ~= temp; 
     459                    } 
     460                } 
     461            } 
     462            return toReturn; 
     463        } else 
     464            return ftp_.ls(); 
    417465    } 
    418466 
    419467    uint files() { 
    420         return null
     468        return getFileInfo().length
    421469    } 
    422470 
    423471    ulong bytes() { 
    424         return null; 
     472        ulong result; 
     473        foreach(FtpFileInfo inf; getFileInfo()) { 
     474            result += inf.size; 
     475        } 
     476        return result; 
    425477    } 
    426478}