in internal/core/startup/releases.go [71:116]
func GetProductByCode(code string) (*Product, error) {
tempDir, err := os.MkdirTemp("", "productByCode")
if err != nil {
msg.ErrorMessage("Cannot create temp dir", err)
return nil, err
}
defer func(path string) {
err := os.RemoveAll(path)
if err != nil {
msg.ErrorMessage("Cannot clean up temp dir", err)
}
}(tempDir) // clean up
path := filepath.Join(tempDir, "productInfo.json")
if err := utils.DownloadFile(path, getProductFeed(), "", nil); err != nil {
return nil, err
}
file, err := os.Open(path)
if err != nil {
return nil, err
}
defer func(file *os.File) {
err := file.Close()
if err != nil {
msg.ErrorMessage("Cannot read downloaded file", err)
}
}(file)
byteValue, _ := io.ReadAll(file)
var products []Product
if err := json.Unmarshal(byteValue, &products); err != nil {
return nil, err
}
for _, prod := range products {
if prod.Code == code {
return &prod, nil
}
}
return nil, nil
}