reader.go 727 B

1234567891011121314151617181920212223242526272829303132333435363738
  1. package detect
  2. import (
  3. "bufio"
  4. "io"
  5. "github.com/zricethezav/gitleaks/v8/report"
  6. )
  7. // DetectReader accepts an io.Reader and a buffer size for the reader in KB
  8. func (d *Detector) DetectReader(r io.Reader, bufSize int) ([]report.Finding, error) {
  9. reader := bufio.NewReader(r)
  10. buf := make([]byte, 0, 1000*bufSize)
  11. findings := []report.Finding{}
  12. for {
  13. n, err := reader.Read(buf[:cap(buf)])
  14. buf = buf[:n]
  15. if err != nil {
  16. if err != io.EOF {
  17. return findings, err
  18. }
  19. break
  20. }
  21. fragment := Fragment{
  22. Raw: string(buf),
  23. }
  24. for _, finding := range d.Detect(fragment) {
  25. findings = append(findings, finding)
  26. if d.Verbose {
  27. printFinding(finding, d.NoColor)
  28. }
  29. }
  30. }
  31. return findings, nil
  32. }