private void extractMimePartBodyDescription(MimeTokenStream stream) { MaximalBodyDescriptor descriptor = (MaximalBodyDescriptor) stream.getBodyDescriptor(); currentlyBuildMimePart.addMediaType(descriptor.getMediaType()) .addSubType(descriptor.getSubType()) .addContentDisposition(descriptor.getContentDispositionType()) .addFileName(descriptor.getContentDispositionFilename()); Optional.ofNullable(descriptor.getCharset()) .map(Charset::forName) .ifPresent(currentlyBuildMimePart::charset); }
private static MimeDescriptorImpl simplePartDescriptor( final MimeTokenStream parser, Collection<MessageResult.Header> headers) throws IOException, MimeException { MaximalBodyDescriptor descriptor = (MaximalBodyDescriptor) parser .getBodyDescriptor(); final MimeDescriptorImpl mimeDescriptorImpl; if ("message".equalsIgnoreCase(descriptor.getMediaType()) && "rfc822".equalsIgnoreCase(descriptor.getSubType())) { final CountingInputStream messageStream = new CountingInputStream( parser.getDecodedInputStream()); MimeDescriptorImpl embeddedMessageDescriptor = build(messageStream); final int octetCount = messageStream.getOctetCount(); final int lineCount = messageStream.getLineCount(); mimeDescriptorImpl = createDescriptor(octetCount, lineCount, descriptor, embeddedMessageDescriptor, headers); } else { final InputStream body = parser.getInputStream(); long bodyOctets = 0; long lines = 0; for (int n = body.read(); n >= 0; n = body.read()) { if (n == '\r') { lines++; } bodyOctets++; } mimeDescriptorImpl = createDescriptor(bodyOctets, lines, descriptor, null, headers); } return mimeDescriptorImpl; }
final String type = descriptor.getMediaType(); final String transferEncoding = descriptor.getTransferEncoding(); final Map<String, String> contentTypeParameters = new TreeMap<>(descriptor.getContentTypeParameters());
final PropertyBuilder propertyBuilder = new PropertyBuilder(); final String mediaType; final String mediaTypeFromHeader = descriptor.getMediaType(); final String subType; if (mediaTypeFromHeader == null) {