Skip to content
Snippets Groups Projects
Select Git revision
  • f08466e1867e159dbf536b0783219cfac4272de1
  • main default protected
  • v1.302.0
  • v1.301.0
  • v1.300.0
  • v1.299.0
  • v1.298.0
  • v1.297.0
  • v1.296.0
  • v1.295.0
  • v1.294.0
  • v1.293.0
  • v1.292.0
  • v1.291.0
  • v1.290.0
  • v1.289.0
  • v1.288.0
  • v1.287.0
  • v1.286.0
  • v1.285.0
  • v1.284.0
  • v1.283.0
22 results

zip_utils.go

Blame
  • zip_utils.go 1.67 KiB
    package zip_utils
    
    import (
    	"archive/zip"
    	"bytes"
    	"gitlab.bob.co.za/bob-public-utils/bobgroup-go-utils/date_utils"
    	"io"
    	"time"
    )
    
    func ZipData(fileName string, data []byte) ([]byte, error) {
    	// Create zip
    	buf := new(bytes.Buffer)
    
    	// Create a new zip archive.
    	zipWriter := zip.NewWriter(buf)
    
    	header := &zip.FileHeader{
    		Name:     fileName,
    		Method:   zip.Deflate,
    		Modified: time.Now(),
    	}
    
    	// Write data
    	file, err := zipWriter.CreateHeader(header)
    	if err != nil {
    		return nil, err
    	}
    	_, err = file.Write(data)
    	if err != nil {
    		return nil, err
    	}
    
    	// Close zip
    	err = zipWriter.Close()
    	if err != nil {
    		return []byte(""), err
    	}
    
    	return buf.Bytes(), nil
    }
    
    func UnzipData(data []byte) (map[string][]byte, error) {
    	// Create a new zip reader.
    	zipReader, err := zip.NewReader(bytes.NewReader(data), int64(len(data)))
    	if err != nil {
    		return nil, err
    	}
    
    	// Read all the files from zip archive
    	var fileData = make(map[string][]byte)
    	for _, zipFile := range zipReader.File {
    		unzippedData, err := readZipFile(zipFile)
    		if err != nil {
    			continue
    		}
    
    		fileData[zipFile.FileHeader.Name] = unzippedData
    	}
    
    	return fileData, nil
    }
    
    func readZipFile(zipFile *zip.File) ([]byte, error) {
    	zipFileData, err := zipFile.Open()
    	if err != nil {
    		return nil, err
    	}
    	defer zipFileData.Close()