1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239
|
###############################################################################
General
+ implement autoloading
+ add ability to override default port
+ get the URI modules in a releasable state
###############################################################################
Net::xAP
-------------------------------------------------------------------------------
B the mechanism that getline uses to stuff the literal payload into
the string passed to parse_line needs to be improved.
currently just tacks it onto the end. maybe it should tack it into
the end as a scalar ref and have parse_line look for '{\d+} SCALAR(.*)'.
that should eliminate the chance of falsely interpreting {\d+} as a
literal tag in instances where it isn't. make sure it derefs the
scalar ref when it stuffs it into the list that is to be returned.
-------------------------------------------------------------------------------
B need to gracefully handle the server closing the connection without a bye
+ add methods for opening and closing a debug file as an alternative to stderr
B there are some things in IMAP that should be moved to xAP, and vice versa
B the addition of ACAP and IMSP might require the quotification to be
revamped, with more direct control being moved into the subclasses
+ in synchronous mode, maybe have command failure synthesize a response
object to alleviate the need to check status of the command method
+ add ability to selectively turn on or off debug for individual
commands and callbacks
+ throw an error message when comment method is passed incorrect
parameter count
+ documentation
+ document how top-level protocols should use xAP
###############################################################################
Net::IMAP
-------------------------------------------------------------------------------
B need to handle modified-utf-7 mailbox names correctly
B make the regex in _extract_resp_code more rigorous
B have callbacks do stronger arg checking in response data, particularly
arg counts.
B clean up and test behavior when connection is terminated due to autologout
-------------------------------------------------------------------------------
+ maybe implement extensions as separate modules
+ force a LOGOUT if IMAP object goes out of scope
+ review various internet drafts to make sure they can be supported when RFCed
+ id ok
+ sort ok
+ thread ok
+ children ok
+ view ?
+ command+ ?
+ annotate ?
B regression tests
+ extensions: namespace, acl, quota, uidplus
+ login and the various authentication extensions
+ lsub
+ more complete testing of quoted strings and literals
+ add more tests for fetched envelopes
+ verify Date option in append method (some servers may not honor it)
+ verify Flags option in append method (some servers may not honor it)
+ tests for imap2addr conversion methods
+ add ability to use non-local imap servers
+ test against cyrus, netscape, microsoft, innosoft
+ documentation
+ make sure the responses for extensions mention the appropriate extension
+ document the valid states for the various extension commands
+ document the response codes that need specific handling
+ add info about how to handle login and mailbox referrals
+ document which responses can be unsolicited
+ also mention what they indicate and when they are likely to be seen
+ add some more examples
-------------------------------------------------------------------------------
+ maybe have resp_codes have their own callbacks
+ write get_response that returns a list with the tag and rest of the
response, instead of Net::IMAP::Envelope->new and Net::IMAP::FetchData->new
+ some response objects can be wired directly into parent Net::IMAP object
+ capability
+ flags
+ namespace
+ others...
B finish implementing authenticate command
+ add support for the security layer
+ figure out a reasonable way to hide auth info from debug command
+ add support for more extensions
+ login referrals
+ don't follow more than 10 referrals
+ mailbox referrals
+ idle
+ tls
+ various authentication extensions
+ otp
+ external
+ digest
+ gssapi
+ kerberos_v4
+ add ability to generate group lists in Net::IMAP::Address
+ maybe figure out a nice way to interface to Mail::Internet and MIME::Entity
+ implement smart EOL <-> crlf processing in append method
check first line of string and adjust accordingly
B add support for X* commands
B implement and document prevention of ambiguous multiple pending requests
+ except for FETCH, STORE, and SEARCH, command must wait for a response
before the following commands can be issued:
FETCH, STORE, COPY, UID?, SEARCH (partially)
+ fetch -> store involving flags
+ select/examine -> select/examine
+ others, no doubt...
B add various items from IMAP Implementation Recommendations
+ look at limiting length of command lines through use of literals
+ don't SELECT a mailbox that has \noselect flag set
+ don't CREATE a submailbox in a mailbox that has \noinferiors flag set
+ don't respond to a failing COPY or APPEND with a CREATE if the
server doesn't respond with a TRYCREATE response code
+ always put a trailing hierarchy delimiter in LIST reference argument
-------------------------------------------------------------------------------
+ write an interface for LWP (ala LWP::Protocol/ldap.pm)
+ decide whether X-NON-HIERARCHICAL-RENAME bug in cyrus imapd needs
special handling
+ is there anything preventing module from being used in an off-line mode?
+ maybe implement the whole thing as two layers - the first layer is
pure IMAP calls with minimal caching - the second layer uses cache
information is it's available, only resorting to real imap calls if
the data isn't cached
- maybe support older version of IMAP
###############################################################################
URI::imap
* need to write code for converting modified-utf7 <-> utf8
* need to do better job of preventing mutually exclusive url components
(last one in wins)
* write regression test
* write documentation
-------------------------------------------------------------------------------
URI::acap
* write regression test
* write documentation
###############################################################################
Net::ACAP
* if it makes it into the release, remove the appropriate lines from
the MANIFEST.SKIP file
* use the PAREN type in more places
* parse untagged condition responses
* response codes of interest to authentication failure:
+ auth-too-weak
+ encrypt-needed
+ transition-needed
* make sure xAP character set for autoquotification is correct for acap
* maybe coerse untagged ACAP response into an Acap object, otherwise
get rid of Net::ACAP::Acap class
* figure out a way to take Return parm in search command into account
when processing entry responses
* have deletedsince method accept an integer for its time parameter
if length(timearg) >= 14 then its an acap time string, else its an integer
* have store method accept an integer for its unchangedsince parameter
if length(timearg) >= 14 then its an acap time string, else its an integer
* UTF-8
+ spec limits size of an atom to 1024
+ NUL octets are only permitted in values of attributes whose names end with
'.bin'. client should send non-binary data as valid utf-8 data
+ context names must not start with '/'
+ need to handle extension responses
+ clients writing to a shared dataset SHOULD use UNCHANGEDSINCE when
modifying an existing entry.
+ make sure any 'server SHOULD' items aren't a problem to the client
if the 'server DOESNT'
+ clients MUST ignore unknown server responses which meet the syntax
of response-extend or resp-code-ext
+ maybe include ability to cancel authentication exchange with a '*' line
+ tons more to do...
###############################################################################
Net::IMSP
* if it makes it into the release, remove the appropriate lines from
the MANIFEST.SKIP file
* convert IMSP to use newer callback design
+ implement core commands
###############################################################################
Net::ICAP Note: this will probably do away
+ implement core commands
###############################################################################
|