48 lines
1.5 KiB
Go
48 lines
1.5 KiB
Go
|
package StaticFiles
|
||
|
|
||
|
import "io/ioutil"
|
||
|
import "bytes"
|
||
|
import "archive/zip"
|
||
|
import "github.com/SommerEngineering/Ocean/Shutdown"
|
||
|
import "github.com/SommerEngineering/Ocean/Log"
|
||
|
import LM "github.com/SommerEngineering/Ocean/Log/Meta"
|
||
|
|
||
|
func FindAndReadFile(filename string) (result []byte) {
|
||
|
if Shutdown.IsDown() {
|
||
|
return
|
||
|
}
|
||
|
|
||
|
// Prepare the path:
|
||
|
path := filename
|
||
|
|
||
|
// Read the content from the ZIP file:
|
||
|
reader, readerError := zip.NewReader(bytes.NewReader(zipData), int64(len(zipData)))
|
||
|
if readerError != nil {
|
||
|
Log.LogFull(senderName, LM.CategorySYSTEM, LM.LevelERROR, LM.SeverityCritical, LM.ImpactCritical, LM.MessageNameREAD, `Was not able to read the ZIP file.`, readerError.Error())
|
||
|
return
|
||
|
}
|
||
|
|
||
|
for _, file := range reader.File {
|
||
|
if file.Name == path {
|
||
|
|
||
|
fileReader, openError := file.Open()
|
||
|
defer fileReader.Close()
|
||
|
|
||
|
if openError == nil {
|
||
|
contentData, readError := ioutil.ReadAll(fileReader)
|
||
|
|
||
|
if readError != nil {
|
||
|
Log.LogFull(senderName, LM.CategorySYSTEM, LM.LevelERROR, LM.SeverityCritical, LM.ImpactCritical, LM.MessageNameREAD, `Was not able to read the content of the desired file.`, readError.Error(), path)
|
||
|
return
|
||
|
}
|
||
|
|
||
|
result = contentData
|
||
|
return
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
|
||
|
Log.LogFull(senderName, LM.CategorySYSTEM, LM.LevelERROR, LM.SeverityCritical, LM.ImpactCritical, LM.MessageNameNOTFOUND, `The desired file is not part of the ZIP file.`, `Do you use an old version?`, path)
|
||
|
return
|
||
|
}
|