From ddc9f9f5ab245a30ad5369bf9eb76033d3dbe9bf Mon Sep 17 00:00:00 2001 From: Dimitri Sokolyuk Date: Sun, 9 Jul 2017 12:48:35 +0200 Subject: Add header template --- zhead/header.go | 39 +++++++++++++++++++++++++++++++++++++++ zhead/header_test.go | 24 ++++++++++++++++++++++++ 2 files changed, 63 insertions(+) create mode 100644 zhead/header.go create mode 100644 zhead/header_test.go diff --git a/zhead/header.go b/zhead/header.go new file mode 100644 index 0000000..400be5b --- /dev/null +++ b/zhead/header.go @@ -0,0 +1,39 @@ +package zhead + +import ( + "bytes" + "text/template" + "time" +) + +const header = `{{define "header" -}} +date={{.Date.Format "2006-01-02T15:04:05Z07:00"}} +key={{.KeyFile}} +algorithm={{.Alg}} +bocksize={{.BlockSize}} + +{{range .Sums}}{{printf "%x" .}} +{{end}}{{end}}` + +type Header struct { + Date time.Time + KeyFile string + Alg string + BlockSize int + Sums [][]byte +} + +const ( + DefaultAlg = "SHA512/256" + DefaultBlockSize = 65535 +) + +func (h Header) Print() ([]byte, error) { + t, err := template.New("header").Parse(header) + if err != nil { + return nil, err + } + buf := new(bytes.Buffer) + err = t.ExecuteTemplate(buf, "header", h) + return buf.Bytes(), err +} diff --git a/zhead/header_test.go b/zhead/header_test.go new file mode 100644 index 0000000..b6f8d35 --- /dev/null +++ b/zhead/header_test.go @@ -0,0 +1,24 @@ +package zhead + +import ( + "testing" + "time" +) + +func TestHeader(t *testing.T) { + h := Header{ + Date: time.Now().UTC(), + KeyFile: "some.key", + Alg: DefaultAlg, + BlockSize: DefaultBlockSize, + Sums: [][]byte{ + []byte{0, 1, 2, 3, 4, 5}, + []byte{6, 7, 8, 9, 10}, + }, + } + body, err := h.Print() + if err != nil { + t.Fatal(err) + } + t.Log(string(body)) +} -- cgit v1.2.3