"from" => doc[:from],
"to" => doc[:to],
"message-id" => doc[:message_id],
- "references" => doc[:refs],
+ "references" => doc[:refs].split(/\s+/).map { |x| "<#{x}>" }.join(" "),
}
Message.new :source => source, :source_info => doc[:source_info].to_i,
def parse_header header
header.each { |k, v| header[k.downcase] = v }
-
+
@from = PersonManager.person_for header["from"]
- @id = header["message-id"]
- if @id
- id.gsub!(/\s+/, "")
- else
- @id = "sup-faked-" + Digest::MD5.hexdigest(raw_header)
- Redwood::log "faking message-id for message from #@from: #@id"
- end
-
+ @id =
+ if header["message-id"]
+ sanitize_message_id header["message-id"]
+ else
+ "sup-faked-" + Digest::MD5.hexdigest(raw_header)
+ Redwood::log "faking message-id for message from #@from: #@id"
+ end
+
date = header["date"]
@date =
case date
@to = PersonManager.people_for header["to"]
@cc = PersonManager.people_for header["cc"]
@bcc = PersonManager.people_for header["bcc"]
- @refs = (header["references"] || "").gsub(/[<>]/, "").split(/\s+/).flatten
- @replytos = (header["in-reply-to"] || "").scan(/<(.*?)>/).flatten
+ @refs = (header["references"] || "").scan(/<(.+?)>/).map { |x| sanitize_message_id x.first }
+ @replytos = (header["in-reply-to"] || "").scan(/<(.+?)>/).map { |x| sanitize_message_id x.first }
+
@replyto = PersonManager.person_for header["reply-to"]
@list_address =
if header["list-post"]
@source.fn_for_offset @source_info
end
+ def sanitize_message_id mid; mid.gsub(/\s/, "") end
+
def save index
index.sync_message self if @dirty
@dirty = false