...

Source file src/edge-infra.dev/pkg/edge/datasync/internal/compressor/gzip.go

Documentation: edge-infra.dev/pkg/edge/datasync/internal/compressor

     1  package compressor
     2  
     3  import (
     4  	"compress/gzip"
     5  	"io"
     6  	"os"
     7  )
     8  
     9  // CompressToFile uses gzip to compress data into a file
    10  func CompressToFile(targetFile string, data []byte) error {
    11  	f, err := os.Create(targetFile)
    12  	if err != nil {
    13  		return err
    14  	}
    15  	defer f.Close()
    16  
    17  	// Create gzip writer.
    18  	w := gzip.NewWriter(f)
    19  
    20  	// Write bytes in compressed form to the file.
    21  	_, err = w.Write(data)
    22  	if err != nil {
    23  		return err
    24  	}
    25  
    26  	// Close the file.
    27  	return w.Close()
    28  	// if err := w.Close(); err != nil {
    29  	// 	return err
    30  	// }
    31  
    32  	// return nil
    33  }
    34  
    35  // ReadDecompressedContent returns the content of the de-compressed file
    36  func ReadDecompressedContent(file string) ([]byte, error) {
    37  	f, err := os.Open(file)
    38  	if err != nil {
    39  		return nil, err
    40  	}
    41  	defer f.Close()
    42  
    43  	// Create new reader to decompress gzip.
    44  	reader, err := gzip.NewReader(f)
    45  	if err != nil {
    46  		return nil, err
    47  	}
    48  	defer reader.Close()
    49  
    50  	result, _ := io.ReadAll(reader)
    51  	if err != nil {
    52  		return nil, err
    53  	}
    54  
    55  	return result, nil
    56  }
    57  
    58  // ReadCompressedContent returns the content of the compressed file as is
    59  func ReadCompressedContent(file string) ([]byte, error) {
    60  	f, err := os.Open(file)
    61  	if err != nil {
    62  		return nil, err
    63  	}
    64  	defer f.Close()
    65  
    66  	result, _ := io.ReadAll(f)
    67  	if err != nil {
    68  		return nil, err
    69  	}
    70  
    71  	return result, nil
    72  }
    73  

View as plain text