rate limit asses.Cksum to 10MBps

main
bel 2025-05-17 20:22:41 -06:00
parent 11b215d026
commit bd5ae006a1
4 changed files with 13 additions and 7 deletions

5
go.mod
View File

@ -2,7 +2,10 @@ module show-rss
go 1.23.3 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 ( require (
github.com/PuerkitoBio/goquery v1.8.0 // indirect github.com/PuerkitoBio/goquery v1.8.0 // indirect

2
go.sum
View File

@ -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.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 h1:OLmvp0KP+FVG99Ct/qFiL/Fhk4zp4QQnZ7b2U+5piUM=
golang.org/x/text v0.5.0/go.mod h1:mrYo+phRRbMaCq/xk9113O4dZlRixOauAjOtrjsXDZ8= 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.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 h1:0EedkvKDbh+qistFTd0Bcwe/YLh4vHwWEkiI0toFIBU=
golang.org/x/tools v0.31.0/go.mod h1:naFTU+Cev749tSJRXJlna0T3WxKvb1kWEx15xA4SdmQ= golang.org/x/tools v0.31.0/go.mod h1:naFTU+Cev749tSJRXJlna0T3WxKvb1kWEx15xA4SdmQ=

View File

@ -10,6 +10,7 @@ import (
"math/rand" "math/rand"
"os" "os"
"path" "path"
"show-rss/src/slow"
"time" "time"
) )
@ -31,7 +32,7 @@ func One(ctx context.Context, p string) error {
if err := func() error { if err := func() error {
if len(last.Cksum) > 0 { if len(last.Cksum) > 0 {
cksum, err := Cksum(p) cksum, err := Cksum(ctx, p)
if err != nil { if err != nil {
return err return err
} }
@ -52,7 +53,7 @@ func One(ctx context.Context, p string) error {
return err return err
} }
cksum, err := Cksum(p) cksum, err := Cksum(ctx, p)
if err != nil { if err != nil {
return err return err
} }
@ -63,7 +64,7 @@ func One(ctx context.Context, p string) error {
return checked(ctx, p, cksum, stat.ModTime()) 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) f, err := os.Open(p)
if err != nil { if err != nil {
return "", err return "", err
@ -71,6 +72,6 @@ func Cksum(p string) (string, error) {
defer f.Close() defer f.Close()
hasher := md5.New() 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 return base64.StdEncoding.EncodeToString(hasher.Sum(nil)), err
} }

View File

@ -17,7 +17,7 @@ func TestOne(t *testing.T) {
p := path.Join(d, "f.mkv") p := path.Join(d, "f.mkv")
os.WriteFile(p, b, os.ModePerm) os.WriteFile(p, b, os.ModePerm)
cksum, _ := asses.Cksum(p) cksum, _ := asses.Cksum(context.Background(), p)
if err := asses.One(ctx, p); err != nil { if err := asses.One(ctx, p); err != nil {
t.Fatal(err) t.Fatal(err)
@ -31,7 +31,7 @@ func TestOne(t *testing.T) {
t.Fatalf("no new srt: %v", err) t.Fatalf("no new srt: %v", err)
} }
newCksum, _ := asses.Cksum(p) newCksum, _ := asses.Cksum(context.Background(), p)
if cksum == newCksum { if cksum == newCksum {
t.Fatalf("cksum unchanged") t.Fatalf("cksum unchanged")
} }