func GetProductByCode()

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
}