feat: attach public key

This commit is contained in:
James Houlahan
2020-07-02 16:17:04 +02:00
parent 45b863f931
commit 2b36d3ab7b
6 changed files with 98 additions and 70 deletions

View File

@ -1,7 +1,6 @@
package parser
import (
"errors"
"io"
"io/ioutil"
@ -31,20 +30,17 @@ func (p *Parser) NewWriter() *Writer {
return newWriter(p.root)
}
func (p *Parser) Header() message.Header {
return p.root.Header
func (p *Parser) Root() *Part {
return p.root
}
func (p *Parser) Part(number []int) (part *Part, err error) {
part = p.root
for _, n := range number {
if len(part.children) < n {
err = errors.New("no such part")
if part, err = part.Part(n); err != nil {
return
}
part = part.children[n-1]
}
return

View File

@ -1,6 +1,8 @@
package parser
import (
"errors"
"github.com/emersion/go-message"
)
@ -10,6 +12,22 @@ type Part struct {
children []*Part
}
func (p *Part) Part(n int) (part *Part, err error) {
if len(p.children) < n {
return nil, errors.New("no such part")
}
return p.children[n-1], nil
}
func (p *Part) Parts() (n int) {
return len(p.children)
}
func (p *Part) AddChild(child *Part) {
p.children = append(p.children, child)
}
func (p *Part) visit(w *Walker) (err error) {
if err = p.handle(w); err != nil {
return