Add import for 'important' headers.

Process and normalize some headers that will be used in quickly recalling
messages.
This commit is contained in:
2014-04-11 21:21:56 -07:00
parent aebb1a2c92
commit 14bd95851c
4 changed files with 121 additions and 3 deletions

View File

@@ -20,10 +20,19 @@ func insertHeaders(c *db.Conn, hash string, r io.Reader) error {
if err != nil {
return err
}
glog.Infoln("Insert", hash)
glog.Infoln("Insert headers", hash)
return c.InsertHeaders(hash, msg.Header)
}
func insertSearchHeaders(c *db.Conn, hash string, r io.Reader) error {
msg, err := mail.ReadMessage(r)
if err != nil {
return err
}
glog.Infoln("Insert search headers", hash)
return c.InsertSearchHeaders(hash, msg.Header)
}
func insertAllHeaders(c *db.Conn, all bool) error {
oCh := make(chan db.Original)
errc := make(chan error)
@@ -39,6 +48,31 @@ func insertAllHeaders(c *db.Conn, all bool) error {
case o := <-oCh:
r := bytes.NewReader(o.Blob)
if err := insertHeaders(c, o.Hash, r); err != nil {
glog.Errorln(o, "insertHeaders", err)
return err
}
case err := <-errc:
return err
}
}
}
func insertAllSearchHeaders(c *db.Conn, all bool) error {
oCh := make(chan db.Original)
errc := make(chan error)
donec := make(chan struct{})
defer close(donec)
if all {
go c.Originals(oCh, errc, donec)
} else {
go c.OriginalsNotInTable("search_header", oCh, errc, donec)
}
for {
select {
case o := <-oCh:
r := bytes.NewReader(o.Blob)
if err := insertSearchHeaders(c, o.Hash, r); err != nil {
glog.Errorln(o.Hash, "insertSearchHeaders", err)
return err
}
case err := <-errc:
@@ -60,4 +94,8 @@ func main() {
glog.Fatal(err)
}
if err := insertAllSearchHeaders(c, *all); err != nil {
glog.Fatal(err)
}
}