mirror of
https://github.com/celogeek/go-comic-converter.git
synced 2025-05-25 16:22:37 +02:00
In order to let third parties use the package of this library, we moved the pkg folder out of the locked internal folder
54 lines
1.0 KiB
Go
54 lines
1.0 KiB
Go
package epubzip
|
|
|
|
import (
|
|
"archive/zip"
|
|
"os"
|
|
)
|
|
|
|
type StorageImageReader struct {
|
|
filename string
|
|
fh *os.File
|
|
fz *zip.Reader
|
|
|
|
files map[string]*zip.File
|
|
}
|
|
|
|
func NewStorageImageReader(filename string) (StorageImageReader, error) {
|
|
fh, err := os.Open(filename)
|
|
if err != nil {
|
|
return StorageImageReader{}, err
|
|
}
|
|
s, err := fh.Stat()
|
|
if err != nil {
|
|
return StorageImageReader{}, err
|
|
}
|
|
fz, err := zip.NewReader(fh, s.Size())
|
|
if err != nil {
|
|
return StorageImageReader{}, err
|
|
}
|
|
files := map[string]*zip.File{}
|
|
for _, z := range fz.File {
|
|
files[z.Name] = z
|
|
}
|
|
return StorageImageReader{filename, fh, fz, files}, nil
|
|
}
|
|
|
|
func (e StorageImageReader) Get(filename string) *zip.File {
|
|
return e.files[filename]
|
|
}
|
|
|
|
func (e StorageImageReader) Size(filename string) uint64 {
|
|
if img, ok := e.files[filename]; ok {
|
|
return img.CompressedSize64 + 30 + uint64(len(img.Name))
|
|
}
|
|
return 0
|
|
}
|
|
|
|
func (e StorageImageReader) Close() error {
|
|
return e.fh.Close()
|
|
}
|
|
|
|
func (e StorageImageReader) Remove() error {
|
|
return os.Remove(e.filename)
|
|
}
|