Exemple #1
0
 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;
 }
Exemple #2
0
 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()]);
 }
Exemple #3
0
 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;
 }
Exemple #4
0
 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(']');
 }