package utils

import (
	"encoding/hex"
	"hash"
	"io"
)

type CheckSum struct {
	io.Reader
	Hash hash.Hash
}

func (cs *CheckSum) Read(buf []byte) (int, error) {
	n, err := cs.Reader.Read(buf)
	if err == nil {
		cs.Hash.Write(buf[:n])
	}
	return n, err
}

func (cs *CheckSum) Sum() string {
	return hex.EncodeToString(cs.Hash.Sum(nil))
}