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  }