public static ResponseText read(ImapInputStream is) throws IOException { ResponseText rt = new ResponseText(); is.skipSpaces(); if (is.peek() == '[') { rt.readCode(is); } rt.text = is.readText(); return rt; }
private String[] readCharset(ImapInputStream is) throws IOException { ArrayList<String> cs = new ArrayList<String>(); is.skipChar('('); is.skipSpaces(); while (!is.match(')')) { cs.add(is.readAString()); is.skipSpaces(); } return cs.toArray(new String[cs.size()]); }
public static IDInfo read(ImapInputStream is) throws IOException { is.skipSpaces(); IDInfo info = new IDInfo(); if (!is.match('(')) { is.skipNil(); return info; } while (!is.match(')')) { String name = is.readString(); is.skipChar(' '); String value = is.readNString(); info.fields.put(name, value); is.skipSpaces(); } return info; }
private void readCode(ImapInputStream is) throws IOException { is.skipChar('['); code = is.readAtom(); switch (code.getCAtom()) { case ALERT: case PARSE: case READ_ONLY: case READ_WRITE: case TRYCREATE: break; case UIDNEXT: case UIDVALIDITY: is.skipChar(' '); // RFC 3501 says these should both be nz-number but some servers // return 0 if mailbox is empty (bug 38521). data = is.readNumber(); break; case UNSEEN: is.skipChar(' '); // RFC 3501 says this should be an nz-number but some servers // (i.e. GMail) return 0. data = is.readNumber(); break; case BADCHARSET: if (is.match(' ')) { is.skipSpaces(); if (is.peekChar() == '(') { data = readCharset(is); } } break; case PERMANENTFLAGS: is.skipChar(' '); data = Flags.read(is); break; case CAPABILITY: is.skipChar(' '); is.skipSpaces(); data = ImapCapabilities.read(is); break; case APPENDUID: this.data = AppendResult.parse(is); break; case COPYUID: this.data = CopyResult.parse(is); break; default: if (is.match(' ')) { data = is.readText("]"); } } is.skipSpaces(); is.skipChar(']'); }