diff --git a/go.mod b/go.mod index 1ee493e..268edae 100644 --- a/go.mod +++ b/go.mod @@ -2,7 +2,10 @@ module show-rss go 1.23.3 -require modernc.org/sqlite v1.37.0 +require ( + golang.org/x/time v0.11.0 + modernc.org/sqlite v1.37.0 +) require ( github.com/PuerkitoBio/goquery v1.8.0 // indirect diff --git a/go.sum b/go.sum index 94dad8c..7750408 100644 --- a/go.sum +++ b/go.sum @@ -59,6 +59,8 @@ golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9sn golang.org/x/text v0.3.6/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= golang.org/x/text v0.5.0 h1:OLmvp0KP+FVG99Ct/qFiL/Fhk4zp4QQnZ7b2U+5piUM= golang.org/x/text v0.5.0/go.mod h1:mrYo+phRRbMaCq/xk9113O4dZlRixOauAjOtrjsXDZ8= +golang.org/x/time v0.11.0 h1:/bpjEDfN9tkoN/ryeYHnv5hcMlc8ncjMcM4XBk5NWV0= +golang.org/x/time v0.11.0/go.mod h1:CDIdPxbZBQxdj6cxyCIdrNogrJKMJ7pr37NYpMcMDSg= golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= golang.org/x/tools v0.31.0 h1:0EedkvKDbh+qistFTd0Bcwe/YLh4vHwWEkiI0toFIBU= golang.org/x/tools v0.31.0/go.mod h1:naFTU+Cev749tSJRXJlna0T3WxKvb1kWEx15xA4SdmQ= diff --git a/src/asses/one.go b/src/asses/one.go index 373ad4f..03911f6 100644 --- a/src/asses/one.go +++ b/src/asses/one.go @@ -10,6 +10,7 @@ import ( "math/rand" "os" "path" + "show-rss/src/slow" "time" ) @@ -31,7 +32,7 @@ func One(ctx context.Context, p string) error { if err := func() error { if len(last.Cksum) > 0 { - cksum, err := Cksum(p) + cksum, err := Cksum(ctx, p) if err != nil { return err } @@ -52,7 +53,7 @@ func One(ctx context.Context, p string) error { return err } - cksum, err := Cksum(p) + cksum, err := Cksum(ctx, p) if err != nil { return err } @@ -63,7 +64,7 @@ func One(ctx context.Context, p string) error { return checked(ctx, p, cksum, stat.ModTime()) } -func Cksum(p string) (string, error) { +func Cksum(ctx context.Context, p string) (string, error) { f, err := os.Open(p) if err != nil { return "", err @@ -71,6 +72,6 @@ func Cksum(p string) (string, error) { defer f.Close() hasher := md5.New() - _, err = io.Copy(hasher, f) + _, err = io.Copy(hasher, slow.NewReader(ctx, 10_000_000, f)) return base64.StdEncoding.EncodeToString(hasher.Sum(nil)), err } diff --git a/src/asses/one_test.go b/src/asses/one_test.go index ca5f175..0777525 100644 --- a/src/asses/one_test.go +++ b/src/asses/one_test.go @@ -17,7 +17,7 @@ func TestOne(t *testing.T) { p := path.Join(d, "f.mkv") os.WriteFile(p, b, os.ModePerm) - cksum, _ := asses.Cksum(p) + cksum, _ := asses.Cksum(context.Background(), p) if err := asses.One(ctx, p); err != nil { t.Fatal(err) @@ -31,7 +31,7 @@ func TestOne(t *testing.T) { t.Fatalf("no new srt: %v", err) } - newCksum, _ := asses.Cksum(p) + newCksum, _ := asses.Cksum(context.Background(), p) if cksum == newCksum { t.Fatalf("cksum unchanged") }