Spaces:
Configuration error
Configuration error
| package downloader | |
| import "hash" | |
| type progressWriter struct { | |
| fileName string | |
| total int64 | |
| fileNo int | |
| totalFiles int | |
| written int64 | |
| downloadStatus func(string, string, string, float64) | |
| hash hash.Hash | |
| } | |
| func (pw *progressWriter) Write(p []byte) (n int, err error) { | |
| n, err = pw.hash.Write(p) | |
| pw.written += int64(n) | |
| if pw.total > 0 { | |
| percentage := float64(pw.written) / float64(pw.total) * 100 | |
| if pw.totalFiles > 1 { | |
| // This is a multi-file download | |
| // so we need to adjust the percentage | |
| // to reflect the progress of the whole download | |
| // This is the file pw.fileNo of pw.totalFiles files. We assume that | |
| // the files before successfully downloaded. | |
| percentage = percentage / float64(pw.totalFiles) | |
| if pw.fileNo > 1 { | |
| percentage += float64(pw.fileNo-1) * 100 / float64(pw.totalFiles) | |
| } | |
| } | |
| //log.Debug().Msgf("Downloading %s: %s/%s (%.2f%%)", pw.fileName, formatBytes(pw.written), formatBytes(pw.total), percentage) | |
| pw.downloadStatus(pw.fileName, formatBytes(pw.written), formatBytes(pw.total), percentage) | |
| } else { | |
| pw.downloadStatus(pw.fileName, formatBytes(pw.written), "", 0) | |
| } | |
| return | |
| } | |