Skip to content

Commit

Permalink
Little refactor
Browse files Browse the repository at this point in the history
  • Loading branch information
fogodev committed Jul 4, 2020
1 parent f38c869 commit 80e2218
Show file tree
Hide file tree
Showing 6 changed files with 81 additions and 44 deletions.
9 changes: 8 additions & 1 deletion README.md
Original file line number Diff line number Diff line change
@@ -1 +1,8 @@
Zip To Memory
# Zip In Memory

Dragon: "My name is Balthromaw. Breaker of skies, slayer of mountain."
Rick: "Rule 1: You're now scooper of your own poops, or I will take you down like the black-light poster you are."

![Stonks](https://i.kym-cdn.com/photos/images/newsfeed/001/499/826/2f0.png)

#### From Bezunca Labs
72 changes: 72 additions & 0 deletions extract.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,72 @@
package zip_in_memory

import (
"archive/zip"
"bytes"
"io/ioutil"
)

type EmptyZipFileError struct {}

func (e *EmptyZipFileError) Error() string {
return "empty zip file"
}

func ExtractFirstFile(data []byte) ([]byte, error){
readerAt := bytes.NewReader(data)
zipReader, err := zip.NewReader(readerAt, int64(len(data)))
if err != nil {
return nil, err
}

if len(zipReader.File) > 0 {
file, err := zipReader.File[0].Open()
if err != nil {
return nil, err
}

extractedData, err := ioutil.ReadAll(file)
if err != nil {
return nil, err
}
if err := file.Close(); err != nil {
return nil, err
}

return extractedData, nil
}

return nil, &EmptyZipFileError{}
}

func ExtractFiles(data []byte) ([][]byte, error){
readerAt := bytes.NewReader(data)
zipReader, err := zip.NewReader(readerAt, int64(len(data)))
if err != nil {
return nil, err
}

files := make([][]byte, 0, len(zipReader.File))
for _, f := range zipReader.File {
file, err := f.Open()
if err != nil {
return nil, err
}

extractedData, err := ioutil.ReadAll(file)
if err != nil {
return nil, err
}
if err := file.Close(); err != nil {
return nil, err
}

files = append(files, extractedData)
}

if len(files) == 0 {
return nil, &EmptyZipFileError{}
}

return files, nil
}
2 changes: 1 addition & 1 deletion go.mod
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
module github.com/Bezunca/ZipInMemory
module github.com/Bezunca/zip_in_memory

go 1.14

Expand Down
31 changes: 0 additions & 31 deletions pkg/zip/in_memory.go

This file was deleted.

1 change: 0 additions & 1 deletion pkg/zip_in_memory.go

This file was deleted.

10 changes: 0 additions & 10 deletions test/base.go

This file was deleted.

0 comments on commit 80e2218

Please sign in to comment.