Proposal Details
We're currently using a custom build zip writer to "flush" zip headers and the EOCD footer, which naturally for 90% looks identical to the one in writer.go. The use-case for this custom zip writer is to "prepare a zip file" without the need for having the actual data of a file in the actual zip file yet, which allows for streaming of a zip file.
We currently can't use the standard golang zip library because we can't forward the position of the countWriter by hand. Ideally, we'd be able to set w.cw.count without the restriction of the data being written beforehand (so SetOffset() can't be used, unfortunately).
The suggestion here would be to add the following helpers, or some similar functionality to forward the w.cw.count variable without the restriction of SetOffset(), and to read out its value with the following public functions:
// pseudo code:
func (w *Writer) AdvanceOffset(n int64) {
w.cw.count += n
}
func (w *Writer) GetOffset() int64 {
w.cw.count
}
This would make the use of the standard golang zip-library useful for our use-case. We would use the Flush() functions as they exist now to get out the intermediate headers and the EOCD footer.
Proposal Details
We're currently using a custom build zip writer to "flush" zip headers and the EOCD footer, which naturally for 90% looks identical to the one in
writer.go. The use-case for this custom zip writer is to "prepare a zip file" without the need for having the actual data of a file in the actual zip file yet, which allows for streaming of a zip file.We currently can't use the standard golang zip library because we can't forward the position of the
countWriterby hand. Ideally, we'd be able to setw.cw.countwithout the restriction of the data being written beforehand (soSetOffset()can't be used, unfortunately).The suggestion here would be to add the following helpers, or some similar functionality to forward the
w.cw.countvariable without the restriction ofSetOffset(), and to read out its value with the following public functions:This would make the use of the standard golang zip-library useful for our use-case. We would use the
Flush()functions as they exist now to get out the intermediate headers and the EOCD footer.