Small MailSo cleanup

This commit is contained in:
the-djmaze 2024-02-13 17:45:53 +01:00
parent f89a1cd3f9
commit 6982b57289
4 changed files with 18 additions and 19 deletions

View file

@ -544,14 +544,14 @@ class ImapClient extends \MailSo\Net\NetClient
return $oResult; return $oResult;
} }
// public function yieldUntaggedResponses(string $sEndTag = null) : \Generator // public function yieldUntaggedResponses() : \Generator
public function yieldUntaggedResponses(string $sEndTag = null) : iterable public function yieldUntaggedResponses() : iterable
{ {
try { try {
$oResult = new ResponseCollection; $oResult = new ResponseCollection;
if (\is_resource($this->ConnectionResource())) { if (\is_resource($this->ConnectionResource())) {
$sEndTag = $sEndTag ?: $this->getCurrentTag(); $sEndTag = $this->getCurrentTag();
while (true) { while (true) {
$oResponse = $this->partialParseResponse(); $oResponse = $this->partialParseResponse();

View file

@ -82,9 +82,9 @@ trait ResponseParser
$bIsGotoDefault = false; $bIsGotoDefault = false;
$sAtomBuilder = $bTreatAsAtom ? '' : null; $sAtomBuilder = $bTreatAsAtom ? '' : null;
$aList = array(); $aResponseList = array();
if ($bRoot) { if ($bRoot) {
$aList =& $oImapResponse->ResponseList; $aResponseList =& $oImapResponse->ResponseList;
} }
while (true) { while (true) {
@ -143,7 +143,7 @@ trait ResponseParser
if ($bTreatAsAtom) { if ($bTreatAsAtom) {
$sAtomBuilder .= $sChar . $mResult . ('[' === $sChar ? ']' : ')'); $sAtomBuilder .= $sChar . $mResult . ('[' === $sChar ? ']' : ')');
} else { } else {
$aList[] = $mResult; $aResponseList[] = $mResult;
if ($bRoot && $oImapResponse->IsStatusResponse) { if ($bRoot && $oImapResponse->IsStatusResponse) {
$oImapResponse->OptionalResponse = $mResult; $oImapResponse->OptionalResponse = $mResult;
$bIsGotoDefault = true; $bIsGotoDefault = true;
@ -164,13 +164,13 @@ trait ResponseParser
if ($this->partialResponseLiteralCallbacks($sParentToken, $sPreviousAtomUpperCase, $iLiteralLen)) { if ($this->partialResponseLiteralCallbacks($sParentToken, $sPreviousAtomUpperCase, $iLiteralLen)) {
if (!$bTreatAsAtom) { if (!$bTreatAsAtom) {
$aList[] = ''; $aResponseList[] = '';
} }
} else { } else {
$sLiteral = $this->partialResponseLiteral($iLiteralLen); $sLiteral = $this->partialResponseLiteral($iLiteralLen);
if (null !== $sLiteral) { if (null !== $sLiteral) {
if (!$bTreatAsAtom) { if (!$bTreatAsAtom) {
$aList[] = $sLiteral; $aResponseList[] = $sLiteral;
// $this->writeLog('{'.$iLiteralLen.'} '.$sLiteral, \LOG_INFO); // $this->writeLog('{'.$iLiteralLen.'} '.$sLiteral, \LOG_INFO);
} else { } else {
\SnappyMail\Log::notice('IMAP', 'Literal treated as atom and skipped'); \SnappyMail\Log::notice('IMAP', 'Literal treated as atom and skipped');
@ -220,7 +220,7 @@ trait ResponseParser
if ($bTreatAsAtom) { if ($bTreatAsAtom) {
$sAtomBuilder .= \stripslashes(\substr($this->sResponseBuffer, $iPos, $iOffset + $iLength - $iPos + 1)); $sAtomBuilder .= \stripslashes(\substr($this->sResponseBuffer, $iPos, $iOffset + $iLength - $iPos + 1));
} else { } else {
$aList[] = \stripslashes(\substr($this->sResponseBuffer, $iPos + 1, $iOffset + $iLength - $iPos - 1)); $aResponseList[] = \stripslashes(\substr($this->sResponseBuffer, $iPos + 1, $iOffset + $iLength - $iPos - 1));
} }
$iPos = $iOffset + $iLength + 1; $iPos = $iOffset + $iLength + 1;
break 2; break 2;
@ -286,28 +286,28 @@ trait ResponseParser
if ($iPos > $iCharBlockStartPos || null !== $sAtomBuilder) { if ($iPos > $iCharBlockStartPos || null !== $sAtomBuilder) {
$sLastCharBlock = \substr($this->sResponseBuffer, $iCharBlockStartPos, $iPos - $iCharBlockStartPos); $sLastCharBlock = \substr($this->sResponseBuffer, $iCharBlockStartPos, $iPos - $iCharBlockStartPos);
if (null === $sAtomBuilder) { if (null === $sAtomBuilder) {
$aList[] = 'NIL' === $sLastCharBlock ? null : $sLastCharBlock; $aResponseList[] = 'NIL' === $sLastCharBlock ? null : $sLastCharBlock;
$sPreviousAtomUpperCase = \strtoupper($sLastCharBlock); $sPreviousAtomUpperCase = \strtoupper($sLastCharBlock);
} else { } else {
$sAtomBuilder .= $sLastCharBlock; $sAtomBuilder .= $sLastCharBlock;
if (!$bTreatAsAtom) { if (!$bTreatAsAtom) {
$aList[] = $sAtomBuilder; $aResponseList[] = $sAtomBuilder;
$sPreviousAtomUpperCase = \strtoupper($sAtomBuilder); $sPreviousAtomUpperCase = \strtoupper($sAtomBuilder);
$sAtomBuilder = null; $sAtomBuilder = null;
} }
} }
if ($bRoot) { if ($bRoot) {
if (!isset($oImapResponse->Tag) && 1 === \count($aList)) { if (!isset($oImapResponse->Tag) && 1 === \count($aResponseList)) {
$oImapResponse->setTag($aList[0]); $oImapResponse->setTag($aResponseList[0]);
if ($this->getCurrentTag() === $oImapResponse->Tag) { if ($this->getCurrentTag() === $oImapResponse->Tag) {
$oImapResponse->ResponseType = ResponseType::TAGGED; $oImapResponse->ResponseType = ResponseType::TAGGED;
} }
} }
else if (!isset($oImapResponse->StatusOrIndex) && 2 === \count($aList)) else if (!isset($oImapResponse->StatusOrIndex) && 2 === \count($aResponseList))
{ {
$oImapResponse->setStatus($aList[1]); $oImapResponse->setStatus($aResponseList[1]);
} }
else if (ResponseType::CONTINUATION === $oImapResponse->ResponseType else if (ResponseType::CONTINUATION === $oImapResponse->ResponseType
|| $oImapResponse->IsStatusResponse) || $oImapResponse->IsStatusResponse)
@ -321,7 +321,7 @@ trait ResponseParser
$this->iResponseBufParsedPos = $iPos; $this->iResponseBufParsedPos = $iPos;
return $bTreatAsAtom ? $sAtomBuilder : $aList; return $bTreatAsAtom ? $sAtomBuilder : $aResponseList;
} }
private function partialResponseLiteral($iLiteralLen) : ?string private function partialResponseLiteral($iLiteralLen) : ?string

View file

@ -314,7 +314,7 @@ class MailClient
)) ))
), $iPrevUidNext.':*', true); ), $iPrevUidNext.':*', true);
foreach ($aFetchResponse as /* @var $oFetchResponse \MailSo\Imap\FetchResponse */ $oFetchResponse) { foreach ($aFetchResponse as $oFetchResponse) {
$aFlags = \array_map('strtolower', $oFetchResponse->GetFetchValue(FetchType::FLAGS)); $aFlags = \array_map('strtolower', $oFetchResponse->GetFetchValue(FetchType::FLAGS));
if (!\in_array(\strtolower(MessageFlag::SEEN), $aFlags)) { if (!\in_array(\strtolower(MessageFlag::SEEN), $aFlags)) {
@ -502,7 +502,7 @@ class MailClient
$aFetchIterator = $this->oImapClient->FetchIterate($aFetchItems, (string) $oRange, $oRange->UID); $aFetchIterator = $this->oImapClient->FetchIterate($aFetchItems, (string) $oRange, $oRange->UID);
// FETCH does not respond in the id order of the SequenceSet, so we prefill $aCollection for the right sort order. // FETCH does not respond in the id order of the SequenceSet, so we prefill $aCollection for the right sort order.
$aCollection = \array_fill_keys($oRange->getArrayCopy(), null); $aCollection = \array_fill_keys($oRange->getArrayCopy(), null);
foreach ($aFetchIterator as /* @var $oFetchResponseItem \MailSo\Imap\FetchResponse */ $oFetchResponseItem) { foreach ($aFetchIterator as $oFetchResponseItem) {
$id = $oRange->UID $id = $oRange->UID
? $oFetchResponseItem->GetFetchValue(FetchType::UID) ? $oFetchResponseItem->GetFetchValue(FetchType::UID)
: $oFetchResponseItem->oImapResponse->ResponseList[1]; : $oFetchResponseItem->oImapResponse->ResponseList[1];

View file

@ -4,7 +4,6 @@ namespace SnappyMail\Imap;
use MailSo\Imap\Enumerations\FetchType; use MailSo\Imap\Enumerations\FetchType;
use MailSo\Imap\Enumerations\MessageFlag; use MailSo\Imap\Enumerations\MessageFlag;
use MailSo\Imap\FetchResponse;
use MailSo\Mime\Enumerations\Header; use MailSo\Mime\Enumerations\Header;
class Sync class Sync