MCPcopy Create free account
hub / github.com/baidu/EasyFaaS / UpdateZipCode

Function UpdateZipCode

pkg/util/zip/streamSingleZip.go:116–171  ·  view source on GitHub ↗
(b []byte, files []*map[string]string)

Source from the content-addressed store, hash-verified

114}
115
116func UpdateZipCode(b []byte, files []*map[string]string) ([]byte, error) {
117 bufferc := bytes.NewBuffer(nil)
118 zipWriter := zip.NewWriter(bufferc)
119
120 var err error
121 defer func() {
122 if err != nil {
123 zipWriter.Close()
124 }
125 }()
126
127 //read
128 r := bytes.NewReader(b)
129 zipReader, err := zip.NewReader(r, int64(len(b)))
130 if err != nil {
131 return nil, err
132 }
133 for _, file := range zipReader.File {
134 needCopy := true
135 for _, wfile := range files {
136 if file.FileHeader.Name == (*wfile)["fileName"] {
137 needCopy = false
138 }
139 }
140 if needCopy == true {
141 f, err := file.Open()
142 if err != nil {
143 return nil, err
144 }
145 writer, err := zipWriter.CreateHeader(&file.FileHeader)
146 if err != nil {
147 return nil, err
148 }
149 _, err = io.Copy(writer, f)
150
151 if err != nil {
152 return nil, err
153 }
154 f.Close()
155 }
156
157 }
158 for _, wfile := range files {
159 writer, err := zipWriter.Create((*wfile)["fileName"])
160 if err != nil {
161 return nil, err
162 }
163 _, err = writer.Write([]byte((*wfile)["fileBytes"]))
164 if err != nil {
165 return nil, err
166 }
167 }
168
169 zipWriter.Close()
170 return bufferc.Bytes(), nil
171}

Callers

nothing calls this directly

Calls 5

BytesMethod · 0.80
CloseMethod · 0.65
CreateMethod · 0.65
WriteMethod · 0.65
CopyMethod · 0.45

Tested by

no test coverage detected