![]() |
![]()
| ![]() |
![]()
NAMENet::IMAP::Server::Command - A command in the IMAP server DESCRIPTIONCommands the IMAP server knows about should be subclasses of this. They will want to override the "validate" and "run" methods. METHODSnewCalled by the connection to create a new command. serverGets or sets the Net::IMAP::Server associated with this command. connectionGets or sets the Net::IMAP::Server::Connection associated with this command. validateCalled before the command is run. If it returns a false value, the command is not run; it will probably want to inspect "parsed_options". If "validate" returns a false value, it is responsible for calling "no_command" or "bad_command" to notify the client of the failure. Handily, these return a false value. runDoes the guts of the command. The return value is ignored; the command is in charge of eventually sending one of "ok_command", "bad_command", or "no_command" to the client. The default implementation simply always response with "bad_command". has_literalAnalyzes the options line, and returns true if the line has literals (as defined in the RFC, a literal is of the form "{42}"). If the line has literals, installs a "pending" in Net::IMAP::Server::Connection callback to continue the parsing, and returns true. parse_optionsParses the options, and puts the results (which may be a data structure) into parsed_options. command_idReturns the (arbitrary) string that the client identified the command with. parsed_optionsReturns the list of options to the command. options_strReturns the flat string representation of the options the client gave. data_out DATAReturns a string representing the most probable IMAP string that conveys the "DATA".
Since the IMAP specification contains nothing which is similar to a hash, hash references are treated specially; specifically, the "type" key is taken to be how the "value" key should be output. Options for "type" are "string" or "literal". untagged_response STRINGSends an untagged response to the client. tagged_responseSends a tagged response to the client. poll_afterReturns a true value if the command should send untagged updates about the selected mailbox after the command completes. Defaults to always true. send_untaggedSends untagged updates about the currently selected inbox to the client using "send_untagged" in Net::IMAP::Server::Connection, but only if the command has a true "poll_after". ok_command MESSAGE [, RESPONSECODE => STRING, ...]Sends untagged OK responses for any "RESPONSECODE" pairs, then outputs untagged messages via "send_untagged", then sends a tagged OK with the given "MESSAGE". ok_completed [RESPONSECODE => STRING]Sends an "OK COMPLETED" tagged response to the client. no_command MESSAGE [, RESPONSECODE => STRING, ...]Sends untagged NO responses for any "RESPONSECODE" pairs, then outputs untagged messages via "send_untagged", then sends a tagged OK with the given "MESSAGE". bad_command REASONSends any untagged updates to the client using "send_untagged", then sends a tagged "BAD" response with the given "REASON". valid_mailbox NAMEReturns false and calls "bad_command" if the given "NAME" is a valid name for a mailbox. This only checks that is passes UTF-7 encoding checks, and that it contains no 8-bit characters. If the name is valid, simply returns 1. log SEVERITY, MESSAGEDefers to "log" in Net::IMAP::Server::Connection. out MESSAGEIdentical to "out" in Net::IMAP::Server::Connection.
|