MCPcopy Create free account
hub / github.com/UiPath/uipathcli / extractFile

Method extractFile

plugin/zip_archive.go:33–64  ·  view source on GitHub ↗
(zipFile *zip.File, destinationFolder string, permissions os.FileMode)

Source from the content-addressed store, hash-verified

31}
32
33func (z zipArchive) extractFile(zipFile *zip.File, destinationFolder string, permissions os.FileMode) error {
34 path, err := z.sanitizeArchivePath(destinationFolder, zipFile.Name)
35 if err != nil {
36 return err
37 }
38
39 if zipFile.FileInfo().IsDir() {
40 return os.MkdirAll(path, permissions)
41 }
42 err = os.MkdirAll(filepath.Dir(path), permissions)
43 if err != nil {
44 return err
45 }
46
47 zipFileReader, err := zipFile.Open()
48 if err != nil {
49 return err
50 }
51 defer func() { _ = zipFileReader.Close() }()
52
53 destinationFile, err := os.OpenFile(path, os.O_WRONLY|os.O_CREATE|os.O_TRUNC, zipFile.Mode())
54 if err != nil {
55 return err
56 }
57 defer func() { _ = destinationFile.Close() }()
58
59 _, err = io.CopyN(destinationFile, zipFileReader, MaxArchiveSize)
60 if err != nil && !errors.Is(err, io.EOF) {
61 return err
62 }
63 return nil
64}
65
66func (z zipArchive) sanitizeArchivePath(directory string, name string) (string, error) {
67 result := filepath.Join(directory, name)

Callers 1

ExtractMethod · 0.95

Calls 3

sanitizeArchivePathMethod · 0.95
OpenMethod · 0.80
CloseMethod · 0.80

Tested by

no test coverage detected