static CapabilityResponse parse(ImapList capabilityList) { if (capabilityList.isEmpty() || !equalsIgnoreCase(capabilityList.get(0), Responses.CAPABILITY)) { return null; } int size = capabilityList.size(); HashSet<String> capabilities = new HashSet<>(size - 1); for (int i = 1; i < size; i++) { if (!capabilityList.isString(i)) { return null; } String uppercaseCapability = capabilityList.getString(i).toUpperCase(Locale.US); capabilities.add(uppercaseCapability); } return new CapabilityResponse(capabilities); }
private static void parseUidCopyResponse(ImapResponse response, Map<String, String> uidMappingOutput) { if (!response.isTagged() || response.size() < 2 || !equalsIgnoreCase(response.get(0), Responses.OK) || !response.isList(1)) { return; } ImapList responseTextList = response.getList(1); if (responseTextList.size() < 4 || !equalsIgnoreCase(responseTextList.get(0), Responses.COPYUID) || !responseTextList.isString(1) || !responseTextList.isString(2) || !responseTextList.isString(3)) { return; } List<String> sourceUids = getImapSequenceValues(responseTextList.getString(2)); List<String> destinationUids = getImapSequenceValues(responseTextList.getString(3)); int size = sourceUids.size(); if (size == 0 || size != destinationUids.size()) { return; } for (int i = 0; i < size; i++) { String sourceUid = sourceUids.get(i); String destinationUid = destinationUids.get(i); uidMappingOutput.put(sourceUid, destinationUid); } }
static NamespaceResponse parse(ImapResponse response) { if (response.size() < 4 || !equalsIgnoreCase(response.get(0), Responses.NAMESPACE)) { return null; } if (!response.isList(1)) { return null; } ImapList personalNamespaces = response.getList(1); if (!personalNamespaces.isList(0)) { return null; } ImapList firstPersonalNamespace = personalNamespaces.getList(0); if (!firstPersonalNamespace.isString(0) || !firstPersonalNamespace.isString(1)) { return null; } String prefix = firstPersonalNamespace.getString(0); String hierarchyDelimiter = firstPersonalNamespace.getString(1); return new NamespaceResponse(prefix, hierarchyDelimiter); }
if (!permanentFlagsList.isString(i)) { return null;
public static SelectOrExamineResponse parse(ImapResponse response) { if (!response.isTagged() || !equalsIgnoreCase(response.get(0), Responses.OK)) { return null; } if (!response.isList(1)) { return noOpenModeInResponse(); } ImapList responseTextList = response.getList(1); if (!responseTextList.isString(0)) { return noOpenModeInResponse(); } String responseCode = responseTextList.getString(0); if ("READ-ONLY".equalsIgnoreCase(responseCode)) { return new SelectOrExamineResponse(false); } else if ("READ-WRITE".equalsIgnoreCase(responseCode)) { return new SelectOrExamineResponse(true); } return noOpenModeInResponse(); }