1 package Email::Archive::Storage::MongoDB;
8 with q/Email::Archive::Storage/;
12 default => 'localhost',
29 my ($self, $email) = @_;
30 $email = Email::Abstract->new($email);
31 $self->collection->insert({
32 message_id => $email->get_header('Message-ID'),
33 from_addr => $email->get_header('From'),
34 to_addr => $email->get_header('To'),
35 date => $email->get_header('Date'),
36 subject => $email->get_header('Subject'),
37 body => $email->get_body,
42 my ($self, $attribs) = @_;
43 my $message = $self->collection->find_one($attribs);
45 return Email::MIME->create(
47 From => $message->{from_addr},
48 To => $message->{to_addr},
49 Subject => $message->{subject},
51 body => $message->{body},
56 my ($self, $message_id) = @_;
57 $self->search({ message_id => $message_id });
61 my ($self, $mongo_con_info) = @_;
62 if (defined $mongo_con_info){
63 # should look like host:port:database
64 my ($host, $port, $database, $collection) = split ':', $mongo_con_info;
67 $self->database($database);
68 $self->collection($collection);
71 my $conn = MongoDB::Connection->new(
76 my $datab = $self->database;
77 my $collec = $self->collection;
79 my $db = $conn->$datab;
80 my $coll = $db->$collec;
82 # replace name with actual collection object
83 $self->collection($coll);