private FetchResponse.Envelope buildEnvelope(MessageResult result) throws MailboxException { return envelopeBuilder.buildEnvelope(result.getHeaders()); }
@Override public long size() throws MailboxException { return result.getHeaders().size(); }
@Override public InputStream getInputStream() throws IOException { try { return result.getHeaders().getInputStream(); } catch (MailboxException e) { throw new IOException("Unable to retrieve content", e); } }
private FetchResponse.Envelope buildEnvelope(final MessageResult result) throws MailboxException { return envelopeBuilder.buildEnvelope(result.getHeaders()); }
@Override public Iterator<Header> headers() throws MailboxException { return result.getHeaders().headers(); }
private Iterator<MessageResult.Header> getHeaders(MessageResult messageResult, int[] path, boolean isBase) throws MailboxException { final Iterator<MessageResult.Header> headers; if (isBase) { headers = messageResult.getHeaders().headers(); } else { MessageResult.MimePath mimePath = new MimePathImpl(path); headers = messageResult.iterateHeaders(mimePath); } return headers; }
private Iterator<MessageResult.Header> getHeaders(final MessageResult messageResult, final int[] path, final boolean isBase) throws MailboxException { final Iterator<MessageResult.Header> headers; if (isBase) { headers = messageResult.getHeaders().headers(); } else { MessageResult.MimePath mimePath = new MimePathImpl(path); headers = messageResult.iterateHeaders(mimePath); } return headers; }
@Override public InputStream getMessageHeaders(String uid) throws IOException { try { mailboxManager.startProcessingRequest(session); Iterator<MessageResult> results = manager.getMessages(MessageUid.of(Long.valueOf(uid)).toRange(), HEADERS_GROUP, session); if (results.hasNext()) { return results.next().getHeaders().getInputStream(); } else { return null; } } catch (MailboxException e) { throw new IOException("Unable to retrieve message header for uid " + uid, e); } finally { mailboxManager.endProcessingRequest(session); } }
private Message retrieveOriginalMessage(JmapMDN mdn, MailboxSession mailboxSession) throws MailboxException, IOException, MessageNotFoundException { List<MessageResult> messages = messageIdManager.getMessages(ImmutableList.of(mdn.getMessageId()), FetchGroupImpl.HEADERS, mailboxSession); if (messages.size() == 0) { throw new MessageNotFoundException(); } DefaultMessageBuilder messageBuilder = new DefaultMessageBuilder(); messageBuilder.setMimeEntityConfig(MimeConfig.PERMISSIVE); messageBuilder.setDecodeMonitor(DecodeMonitor.SILENT); return messageBuilder.parseMessage(messages.get(0).getHeaders().getInputStream()); }
private void sendMessageWhenOutboxInTargetMailboxIds(MessageId messageId, UpdateMessagePatch updateMessagePatch, MailboxSession mailboxSession, SetMessagesResponse.Builder builder) throws MailboxException, MessagingException, IOException { if (isTargetingOutbox(mailboxSession, listTargetMailboxIds(updateMessagePatch))) { Optional<MessageResult> maybeMessageToSend = messageIdManager.getMessages( ImmutableList.of(messageId), FetchGroupImpl.FULL_CONTENT, mailboxSession) .stream() .findFirst(); if (maybeMessageToSend.isPresent()) { MessageResult messageToSend = maybeMessageToSend.get(); MailImpl mail = buildMailFromMessage(messageToSend); assertUserIsSender(mailboxSession, mail.getMaybeSender().asOptional()); messageSender.sendMessage(messageId, mail, mailboxSession); referenceUpdater.updateReferences(messageToSend.getHeaders(), mailboxSession); } else { addMessageIdNotFoundToResponse(messageId, builder); } } }
private FetchResponse.BodyElement headers(final MessageResult messageResult, String name, final int[] path, final boolean isBase) throws MailboxException { if (isBase) { // if its base we can just return the raw headers without parsing // them. See MAILBOX-311 and IMAP-? HeadersBodyElement element = new HeadersBodyElement(name, messageResult.getHeaders()); try { if (messageResult.getSize() - element.size() <= 0) { // Seems like this mail has no body element.noBody(); } } catch (IOException e) { throw new MailboxException("Unable to get size of header body element", e); } return element; } else { final Iterator<MessageResult.Header> headers = getHeaders(messageResult, path, isBase); List<MessageResult.Header> lines = MessageResultUtils.getAll(headers); return headerBodyElement(messageResult, name, lines, path, isBase); } }
private FetchResponse.BodyElement headers(MessageResult messageResult, String name, int[] path, boolean isBase) throws MailboxException { if (isBase) { // if its base we can just return the raw headers without parsing // them. See MAILBOX-311 and IMAP-? HeadersBodyElement element = new HeadersBodyElement(name, messageResult.getHeaders()); try { if (messageResult.getSize() - element.size() <= 0) { // Seems like this mail has no body element.noBody(); } } catch (IOException e) { throw new MailboxException("Unable to get size of header body element", e); } return element; } else { final Iterator<MessageResult.Header> headers = getHeaders(messageResult, path, isBase); List<MessageResult.Header> lines = MessageResultUtils.getAll(headers); return headerBodyElement(messageResult, name, lines, path, isBase); } }