private static MimeDescriptorImpl createDescriptor(long bodyOctets, long lines, MaximalBodyDescriptor descriptor, MimeDescriptor embeddedMessage, Collection<MessageResult.Header> headers) { final String contentDescription = descriptor.getContentDescription(); final String contentId = descriptor.getContentId(); final String subType = descriptor.getSubType(); final String type = descriptor.getMediaType(); final String transferEncoding = descriptor.getTransferEncoding(); final Map<String, String> contentTypeParameters = new TreeMap<>(descriptor.getContentTypeParameters()); final String codeset = descriptor.getCharset(); if (codeset == null) { if ("TEXT".equals(type)) { contentTypeParameters.put("charset", codeset); final String boundary = descriptor.getBoundary(); if (boundary != null) { contentTypeParameters.put("boundary", boundary); final List<String> languages = descriptor.getContentLanguage(); final String disposition = descriptor.getContentDispositionType(); final Map<String, String> dispositionParams = descriptor .getContentDispositionParameters(); final Collection<MimeDescriptor> parts = new ArrayList<>(); final String location = descriptor.getContentLocation(); final String md5 = descriptor.getContentMD5Raw(); return new MimeDescriptorImpl( bodyOctets, contentDescription, contentId, lines, subType,
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); }
String contentDispositionType = maximalBody.getContentDispositionType(); if (contentDispositionType != null && !contentDispositionType.isEmpty()) { StringBuilder contentDisposition = new StringBuilder(contentDispositionType); Map<String, String> contentDispositionParameters = maximalBody.getContentDispositionParameters(); for (Entry<String, String> param : contentDispositionParameters.entrySet()) { contentDisposition.append("; ") String contentDispositionFileName = maximalBody.getContentDispositionFilename(); if (contentDispositionFileName != null) { submd.set(TikaCoreProperties.RESOURCE_NAME_KEY, contentDispositionFileName);
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; }
actualBoundary = null; return new MaximalBodyDescriptor( actualMimeType, actualMediaType, actualSubType, actualBoundary, actualCharset, fields);
String contentDispositionType = maximalBody.getContentDispositionType(); if (contentDispositionType != null && !contentDispositionType.isEmpty()) { StringBuilder contentDisposition = new StringBuilder(contentDispositionType); Map<String, String> contentDispositionParameters = maximalBody.getContentDispositionParameters(); for (Entry<String, String> param : contentDispositionParameters.entrySet()) { contentDisposition.append("; ") String contentDispositionFileName = maximalBody.getContentDispositionFilename(); if ( contentDispositionFileName != null ) { submd.set( Metadata.RESOURCE_NAME_KEY, contentDispositionFileName );
final PropertyBuilder propertyBuilder = new PropertyBuilder(); final String mediaType; final String mediaTypeFromHeader = descriptor.getMediaType(); final String subType; if (mediaTypeFromHeader == null) { } else { mediaType = mediaTypeFromHeader; subType = descriptor.getSubType(); propertyBuilder.setContentID(descriptor.getContentId()); propertyBuilder.setContentDescription(descriptor.getContentDescription()); propertyBuilder.setContentLocation(descriptor.getContentLocation()); propertyBuilder.setContentMD5(descriptor.getContentMD5Raw()); propertyBuilder.setContentTransferEncoding(descriptor.getTransferEncoding()); propertyBuilder.setContentLanguage(descriptor.getContentLanguage()); propertyBuilder.setContentDispositionType(descriptor.getContentDispositionType()); propertyBuilder.setContentDispositionParameters(descriptor.getContentDispositionParameters()); propertyBuilder.setContentTypeParameters(descriptor.getContentTypeParameters()); final String codeset = descriptor.getCharset(); if (codeset == null) { if ("TEXT".equalsIgnoreCase(mediaType)) { final String boundary = descriptor.getBoundary(); if (boundary != null) { propertyBuilder.setBoundary(boundary);