Replace the github.com/spf13/afero dependency with a purpose-built FileStorage interface (Open, Write, Stat, Remove, MkdirAll) with three implementations: localStorage (with basePath), s3Storage (with key prefix), and memStorage (for tests). Each implementation owns its base path — callers pass only file IDs. Delete s3fs.go, change File.File from afero.File to io.ReadCloser, and fix duplication flows to buffer content for seeking. |
||
|---|---|---|
| .. | ||
| api/v1 | ||
| caldav | ||
| api_tokens.go | ||
| error_handler.go | ||
| healthcheck.go | ||
| metrics.go | ||
| rate_limit.go | ||
| routes.go | ||
| sentry_middleware.go | ||
| static.go | ||
| validation.go | ||