| 1733 | } |
| 1734 | |
| 1735 | void IMAPSession::appendMessageWithCustomFlagsAndDate(String * folder, Data * messageData, MessageFlag flags, Array * customFlags, time_t date, |
| 1736 | IMAPProgressCallback * progressCallback, uint32_t * createdUID, ErrorCode * pError) |
| 1737 | { |
| 1738 | int r; |
| 1739 | struct mailimap_flag_list * flag_list; |
| 1740 | uint32_t uidvalidity; |
| 1741 | uint32_t uidresult; |
| 1742 | |
| 1743 | selectIfNeeded(folder, pError); |
| 1744 | if (* pError != ErrorNone) |
| 1745 | return; |
| 1746 | |
| 1747 | mProgressCallback = progressCallback; |
| 1748 | bodyProgress(0, messageData->length()); |
| 1749 | |
| 1750 | flag_list = flags_to_lep(flags); |
| 1751 | if (customFlags != NULL) { |
| 1752 | for (unsigned int i = 0 ; i < customFlags->count() ; i ++) { |
| 1753 | struct mailimap_flag * f; |
| 1754 | String * customFlag = (String *) customFlags->objectAtIndex(i); |
| 1755 | |
| 1756 | f = mailimap_flag_new_flag_keyword(strdup(customFlag->UTF8Characters())); |
| 1757 | mailimap_flag_list_add(flag_list, f); |
| 1758 | } |
| 1759 | } |
| 1760 | struct mailimap_date_time * imap_date = NULL; |
| 1761 | if (date != (time_t) -1) { |
| 1762 | imap_date = imapDateFromTimestamp(date); |
| 1763 | } |
| 1764 | r = mailimap_uidplus_append(mImap, MCUTF8(folder), flag_list, imap_date, messageData->bytes(), messageData->length(), |
| 1765 | &uidvalidity, &uidresult); |
| 1766 | if (imap_date != NULL) { |
| 1767 | mailimap_date_time_free(imap_date); |
| 1768 | } |
| 1769 | mailimap_flag_list_free(flag_list); |
| 1770 | |
| 1771 | bodyProgress(messageData->length(), messageData->length()); |
| 1772 | mProgressCallback = NULL; |
| 1773 | |
| 1774 | if (r == MAILIMAP_ERROR_STREAM) { |
| 1775 | mShouldDisconnect = true; |
| 1776 | * pError = ErrorConnection; |
| 1777 | return; |
| 1778 | } |
| 1779 | else if (r == MAILIMAP_ERROR_PARSE) { |
| 1780 | mShouldDisconnect = true; |
| 1781 | * pError = ErrorParse; |
| 1782 | return; |
| 1783 | } |
| 1784 | else if (hasError(r)) { |
| 1785 | * pError = ErrorAppend; |
| 1786 | return; |
| 1787 | } |
| 1788 | |
| 1789 | * createdUID = uidresult; |
| 1790 | * pError = ErrorNone; |
| 1791 | } |
| 1792 |
no test coverage detected