Skip to content

Commit

Permalink
filecache v0.3.0
Browse files Browse the repository at this point in the history
  • Loading branch information
tgulacsi committed Jul 17, 2024
1 parent b13528a commit 96a1c85
Show file tree
Hide file tree
Showing 4 changed files with 26 additions and 15 deletions.
12 changes: 7 additions & 5 deletions converter/config.go
Original file line number Diff line number Diff line change
Expand Up @@ -96,7 +96,7 @@ var (
ConfMaxSubprocMemoryBytes = config.Uint64("max-subproc-mem-bytes", DefaultMaxSubprocMemoryBytes)

ConfCacheTrimInterval = config.Duration("cache-trim-interval", 5*time.Minute)
ConfCacheTrimLimit = config.Duration("cache-trim-limit", time.Hour)
ConfCacheTrimLimit = config.Duration("cache-trim-limit", 1*time.Hour)
ConfCacheTrimSize = config.Int64("cache-trim-size", 20<<20)
)

Expand Down Expand Up @@ -131,17 +131,19 @@ func LoadConfig(ctx context.Context, fn string) error {
cd := filepath.Join(Workdir, "agostle-filecache")
// nosemgrep: go.lang.correctness.permissions.file_permission.incorrect-default-permission
_ = os.MkdirAll(cd, 0700)
if Cache, err = filecache.Open(cd); err != nil {
if Cache, err = filecache.Open(
cd,
filecache.WithTrimInterval(*ConfCacheTrimInterval),
filecache.WithTrimLimit(*ConfCacheTrimLimit),
filecache.WithTrimSize(*ConfCacheTrimSize),
); err != nil {
var tErr error
if cd, tErr = os.MkdirTemp(Workdir, "agostle-filecache-*"); tErr != nil {
return err
} else if Cache, tErr = filecache.Open(cd); tErr != nil {
return err
}
}
Cache.SetTrimInterval(*ConfCacheTrimInterval)
Cache.SetTrimLimit(*ConfCacheTrimLimit)
Cache.SetTrimSize(*ConfCacheTrimSize)

bn := filepath.Base(*ConfPdfseparate)
prefix := (*ConfPdfseparate)[:len(*ConfPdfseparate)-len(bn)]
Expand Down
19 changes: 13 additions & 6 deletions email_convert.go
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,6 @@ package main

import (
"archive/zip"
"crypto/sha256"
"encoding/base64"
"errors"
"fmt"
Expand Down Expand Up @@ -231,7 +230,7 @@ func emailConvertEP(ctx context.Context, request interface{}) (response interfac
}
}

h := sha256.New()
h := filecache.NewHash()
sr, err := iohlp.MakeSectionReader(io.TeeReader(req.Input, h), 1<<20)
logger.Info("readerToFile", "error", err)
if err != nil {
Expand Down Expand Up @@ -269,7 +268,9 @@ func emailConvertEP(ctx context.Context, request interface{}) (response interfac
_, _, _ = converter.Cache.Put(cacheKey(resp.outFn), fh)
if _, err = fh.Seek(0, 0); err == nil {
resp.content = fh
os.Remove(fh.Name())
if fi, err := fh.Stat(); err == nil {
resp.modTime = fi.ModTime()
}
}
}
}
Expand All @@ -279,6 +280,7 @@ func emailConvertEP(ctx context.Context, request interface{}) (response interfac

type emailConvertResponse struct {
content io.ReadSeekCloser
modTime time.Time
outFn, hsh string
r *http.Request
NotModified bool
Expand All @@ -298,15 +300,20 @@ func emailConvertEncode(ctx context.Context, w http.ResponseWriter, response int
w.Header().Set("Etag", `"`+resp.hsh+`"`)
if resp.content != nil {
defer resp.content.Close()
modTime := time.Now()
if fi, err := os.Stat(resp.outFn); err == nil {
modTime = fi.ModTime()
modTime := resp.modTime
if modTime.IsZero() {
if fi, err := os.Stat(resp.outFn); err == nil {
modTime = fi.ModTime()
} else {
modTime = time.Now()
}
}
w.Header().Set("Content-Type", "application/pdf")
http.ServeContent(w, resp.r, resp.outFn+".pdf", modTime, resp.content)
} else {
http.ServeFile(w, resp.r, resp.outFn)
}
os.Remove(resp.outFn)
}

return nil
Expand Down
8 changes: 4 additions & 4 deletions go.mod
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@ module github.com/tgulacsi/agostle
require (
bitbucket.org/zombiezen/gopdf v0.0.0-20190421151423-ab3d04824694
github.com/KarpelesLab/reflink v1.0.1
github.com/UNO-SOFT/filecache v0.2.1
github.com/UNO-SOFT/filecache v0.3.0
github.com/UNO-SOFT/otel v0.8.6
github.com/UNO-SOFT/zlog v0.8.3
github.com/VictoriaMetrics/metrics v1.34.1
Expand Down Expand Up @@ -80,11 +80,11 @@ require (
gopkg.in/yaml.v2 v2.4.0 // indirect
)

go 1.21
go 1.22

toolchain go1.21.0
toolchain go1.22.0

//replace github.com/UNO-SOFT/filecache => ../../UNO-SOFT/filecache
// replace github.com/UNO-SOFT/filecache => ../../UNO-SOFT/filecache

//replace github.com/tgulacsi/go => ../go

Expand Down
2 changes: 2 additions & 0 deletions go.sum
Original file line number Diff line number Diff line change
Expand Up @@ -27,6 +27,8 @@ github.com/UNO-SOFT/filecache v0.2.0 h1:HyIe63MM+Oc7FmFBi4BZk6BolTCGJskiw2yd/WtB
github.com/UNO-SOFT/filecache v0.2.0/go.mod h1:vgTEAzHNWbMuLVIYmuSBRWTXiQvP2GkiRhcZGdrjRVQ=
github.com/UNO-SOFT/filecache v0.2.1 h1:qimr/XrbaIzm2WoGxM77SWGfwvpz6rbHoym8+QdkLiU=
github.com/UNO-SOFT/filecache v0.2.1/go.mod h1:vgTEAzHNWbMuLVIYmuSBRWTXiQvP2GkiRhcZGdrjRVQ=
github.com/UNO-SOFT/filecache v0.3.0 h1:lxjJJSFU1/shE4j0BWZSk7xPiZJgzf2tCUxp7o/REYg=
github.com/UNO-SOFT/filecache v0.3.0/go.mod h1:vgTEAzHNWbMuLVIYmuSBRWTXiQvP2GkiRhcZGdrjRVQ=
github.com/UNO-SOFT/otel v0.8.6 h1:yUZTkElSTUb5ihFFlwTR+8ajy04Ga1SsUCbWAQkmxAk=
github.com/UNO-SOFT/otel v0.8.6/go.mod h1:twMVqZsFzoeBu7MoAgXTBN8y5DKBmbvZIjuZViHfSuY=
github.com/UNO-SOFT/zlog v0.8.3 h1:tdLY0pJK/dy5IEqNFNdbz50s7GLkD8fgdM0qBt6YG60=
Expand Down

0 comments on commit 96a1c85

Please sign in to comment.