MCPcopy
hub / github.com/wal-g/wal-g / downloadObject

Function downloadObject

internal/storagetools/get_object_handler.go:58–93  ·  view source on GitHub ↗
(objectPath string, folder storage.Folder, fileWriter io.Writer, decrypt, decompress bool)

Source from the content-addressed store, hash-verified

56}
57
58func downloadObject(objectPath string, folder storage.Folder, fileWriter io.Writer, decrypt, decompress bool) error {
59 objReadCloser, err := folder.ReadObject(objectPath)
60 if err != nil {
61 return err
62 }
63 defer objReadCloser.Close()
64 var objReader io.Reader = objReadCloser
65
66 if decrypt {
67 objReader, err = internal.DecryptBytes(objReader)
68 if err != nil {
69 return err
70 }
71 }
72
73 if decompress {
74 fileName := path.Base(objectPath)
75 fileExt := path.Ext(fileName)
76 decompressor := compression.FindDecompressor(fileExt)
77 if decompressor == nil {
78 tracelog.WarningLogger.Printf(
79 "decompressor for extension '%s' was not found (supported methods: %v), will download uncompressed",
80 fileExt, compression.CompressingAlgorithms)
81 } else {
82 decrypterObjReadCloser, err := decompressor.Decompress(objReader)
83 if err != nil {
84 return err
85 }
86 defer decrypterObjReadCloser.Close()
87 objReader = decrypterObjReadCloser
88 }
89 }
90
91 _, err = utility.FastCopy(fileWriter, objReader)
92 return err
93}

Callers 2

HandleCatObjectFunction · 0.85
HandleGetObjectFunction · 0.85

Calls 6

DecryptBytesFunction · 0.92
FindDecompressorFunction · 0.92
FastCopyFunction · 0.92
ReadObjectMethod · 0.65
CloseMethod · 0.65
DecompressMethod · 0.65

Tested by

no test coverage detected