github.com/falafeljan/pkger@v0.18.0/pkging/embed/embed.go (about) 1 package embed 2 3 import ( 4 "bytes" 5 "compress/gzip" 6 "encoding/hex" 7 "io" 8 9 "github.com/markbates/pkger/here" 10 "github.com/markbates/pkger/internal/takeon/github.com/markbates/hepa" 11 "github.com/markbates/pkger/internal/takeon/github.com/markbates/hepa/filters" 12 ) 13 14 func Decode(src []byte) ([]byte, error) { 15 dst := make([]byte, hex.DecodedLen(len(src))) 16 _, err := hex.Decode(dst, src) 17 if err != nil { 18 return nil, err 19 } 20 21 r, err := gzip.NewReader(bytes.NewReader(dst)) 22 if err != nil { 23 return nil, err 24 } 25 26 bb := &bytes.Buffer{} 27 if _, err := io.Copy(bb, r); err != nil { 28 return nil, err 29 } 30 return bb.Bytes(), nil 31 } 32 33 func Encode(b []byte) ([]byte, error) { 34 hep := hepa.New() 35 hep = hepa.With(hep, filters.Home()) 36 hep = hepa.With(hep, filters.Golang()) 37 38 b, err := hep.Filter(b) 39 if err != nil { 40 return nil, err 41 } 42 43 bb := &bytes.Buffer{} 44 gz := gzip.NewWriter(bb) 45 46 if _, err := gz.Write(b); err != nil { 47 return nil, err 48 } 49 50 if err := gz.Flush(); err != nil { 51 return nil, err 52 } 53 54 if err := gz.Close(); err != nil { 55 return nil, err 56 } 57 58 s := hex.EncodeToString(bb.Bytes()) 59 return []byte(s), nil 60 } 61 62 type Data struct { 63 Infos map[string]here.Info `json:"infos"` 64 Files map[string]File `json:"files"` 65 Here here.Info `json:"here"` 66 }