package WebContent import ( "archive/zip" "bytes" "errors" "github.com/SommerEngineering/Ocean/Log" LM "github.com/SommerEngineering/Ocean/Log/Meta" "io/ioutil" ) // Get the file bytes for any web content file. func GetContent(path string) (content []byte, err error) { // Open the ZIP file reader with the data out of the memory: reader, readerError := zip.NewReader(bytes.NewReader(zipData), int64(len(zipData))) if readerError != nil { err = errors.New("Was not able to read the ZIP file: " + readerError.Error()) Log.LogFull(senderName, LM.CategorySYSTEM, LM.LevelERROR, LM.SeverityCritical, LM.ImpactCritical, LM.MessageNameREAD, `Was not able to read the ZIP file.`, readerError.Error()) return } // Iterate over all files within the ZIP: for _, file := range reader.File { // Is this the desired file? if file.Name == path { // Open the file: fileReader, openError := file.Open() defer fileReader.Close() if openError == nil { // Read all bytes: contentData, readError := ioutil.ReadAll(fileReader) if readError != nil { err = errors.New("Was not able to read the content of the desired file: " + readError.Error()) 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 } // Return the data: content = contentData return } } } err = errors.New("File not found!") 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 }