From bfbc2b6e7f14202d1ed819670efdf9af0033c2f9 Mon Sep 17 00:00:00 2001 From: Bel LaPointe <153096461+breel-render@users.noreply.github.com> Date: Thu, 8 May 2025 15:48:08 -0600 Subject: [PATCH] impl asses skips if cksum matches or a lotta time passes --- src/asses/one.go | 33 +++++++++++++++++++++++++++++++++ 1 file changed, 33 insertions(+) diff --git a/src/asses/one.go b/src/asses/one.go index 2785219..7ad908b 100644 --- a/src/asses/one.go +++ b/src/asses/one.go @@ -2,9 +2,42 @@ package asses import ( "context" + "crypto/md5" + "encoding/base64" "io" + "math/rand" + "os" + "time" ) func One(ctx context.Context, p string) error { + if last, err := checkLast(ctx, p); err != nil { + return err + } else if last.T.IsZero() { + } else if cksum, err := cksum(ctx, p); err != nil { + return err + } else if cksum != last.Cksum { + } else if time.Since(last.T) < 20+time.Duration(rand.Int()%10)*24*time.Hour { + return nil + } + return io.EOF + + cksum, err := cksum(ctx, p) + if err != nil { + return err + } + return checked(ctx, p, cksum) +} + +func cksum(ctx context.Context, p string) (string, error) { + f, err := os.Open(p) + if err != nil { + return "", err + } + defer f.Close() + + hasher := md5.New() + _, err = io.Copy(hasher, f) + return base64.StdEncoding.EncodeToString(hasher.Sum(nil)), err }