Add import for 'important' headers.
Process and normalize some headers that will be used in quickly recalling messages.
This commit is contained in:
@@ -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)
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user