Part of twisted.protocols.ftp View Source View In Hierarchy
Parser for standard FTP file listings
This is the evil required to match:
-rw-r--r-- 1 root other 531 Jan 29 03:26 README
If you need different evil for a wacky FTP server, you can override
either fileLinePattern
or
parseDirectoryLine()
.
It populates the instance attribute self.files, which is a list containing dicts with the following keys (examples from the above line):
Note that the 'date' value will be formatted differently depending on the date. Check http://cr.yp.to/ftp.html if you really want to try to parse it.
It also matches the following:
-rw-r--r-- 1 root other 531 Jan 29 03:26 I HAVE\ SPACE - filename: e.g. 'I HAVE SPACE' -rw-r--r-- 1 root other 531 Jan 29 03:26 LINK -> TARGET - filename: e.g. 'LINK' - linktarget: e.g. 'TARGET' -rw-r--r-- 1 root other 531 Jan 29 03:26 N S -> L S - filename: e.g. 'N S' - linktarget: e.g. 'L S'
Instance Variable | files | list of dicts describing the files in this listing |
Method | __init__ | Undocumented |
Method | lineReceived | Override this for when each line is received. |
Method | parseDirectoryLine | Return a dictionary of fields, or None if line cannot be parsed. |
Method | addFile | Append file information dictionary to the list of known files. |
Method | unknownLine | Deal with received lines which could not be parsed as file information. |
Inherited from LineReceiver:
Class Variable | delimiter | The line-ending delimiter to use. By default this is b'\r\n' . |
Class Variable | MAX_LENGTH | The maximum length of a line to allow (If a sent line is longer than this, the connection is dropped). Default is 16384. |
Method | clearLineBuffer | Clear buffered data. |
Method | dataReceived | Protocol.dataReceived. Translates bytes into lines, and calls lineReceived (or rawDataReceived, depending on mode.) |
Method | setLineMode | Sets the line-mode of this receiver. |
Method | setRawMode | Sets the raw mode of this receiver. Further data received will be sent to rawDataReceived rather than lineReceived. |
Method | rawDataReceived | Override this for when raw data is received. |
Method | sendLine | Sends a line to the other end of the connection. |
Method | lineLengthExceeded | Called when the maximum line length has been reached. Override if it needs to be dealt with in some special way. |
Inherited from Protocol (via LineReceiver):
Method | logPrefix | Return a prefix matching the class name, to identify log messages related to this protocol instance. |
Method | connectionLost | Called when the connection is shut down. |
Inherited from BaseProtocol (via LineReceiver, Protocol):
Method | makeConnection | Make a connection to a transport and a server. |
Method | connectionMade | Called when a connection is made. |
Inherited from _PauseableMixin (via LineReceiver):
Method | pauseProducing | Undocumented |
Method | resumeProducing | Undocumented |
Method | stopProducing | Undocumented |
Parameters | line | The line which was received with the delimiter removed. (type: bytes ) |
Parameters | line | line of text expected to contain a directory entry (type: str) |
Returns | dict |
Subclasses can override or extend this method to handle file information differently without affecting the parsing of data from the server.
Parameters | info | dictionary containing the parsed representation of the file information (type: dict) |
Subclasses can override this to perform any special processing needed.
Parameters | line | unparsable line as received (type: str) |