From 7577ba3d593db107cd6e86281b1f95916c196cd1 Mon Sep 17 00:00:00 2001 From: Dimitri Sokolyuk Date: Sat, 22 Jul 2017 13:17:17 +0200 Subject: Parse --- file/file.go | 20 ++++++++++++++++++++ 1 file changed, 20 insertions(+) (limited to 'file/file.go') diff --git a/file/file.go b/file/file.go index 334fdca..8120463 100644 --- a/file/file.go +++ b/file/file.go @@ -3,6 +3,7 @@ package file import ( "bytes" + "encoding" "encoding/base64" "errors" "fmt" @@ -90,3 +91,22 @@ func DecodeFile(fname string) (*Block, error) { } return Decode(body) } + +func ParseFile(fname string, u encoding.BinaryUnmarshaler) (string, io.Reader, error) { + body, err := ioutil.ReadFile(fname) + if err != nil { + return "", nil, err + } + return Parse(body, u) +} + +func Parse(data []byte, u encoding.BinaryUnmarshaler) (string, io.Reader, error) { + block, err := Decode(data) + if err != nil { + return "", nil, err + } + if err := u.UnmarshalBinary(block.Bytes); err != nil { + return "", nil, err + } + return block.Comment, bytes.NewReader(block.Message), nil +} -- cgit v1.2.3