github.com/pivotal-cf/go-pivnet/v6@v6.0.2/md5sum/md5.go (about)

     1  package md5sum
     2  
     3  import (
     4  	"crypto/md5"
     5  	"fmt"
     6  	"io"
     7  	"os"
     8  )
     9  
    10  type FileSummer struct {
    11  }
    12  
    13  func NewFileSummer() *FileSummer {
    14  	return &FileSummer{}
    15  }
    16  
    17  func (f FileSummer) SumFile(filepath string) (string, error) {
    18  	fileToSum, err := os.Open(filepath)
    19  	if err != nil {
    20  		return "", err
    21  	}
    22  	defer fileToSum.Close()
    23  
    24  	hash := md5.New()
    25  	_, err = io.Copy(hash, fileToSum)
    26  	if err != nil {
    27  		return "", err
    28  	}
    29  
    30  	return fmt.Sprintf("%x", hash.Sum(nil)), nil
    31  }