From b08869501255ec5e74cd9237202c41ee2a1137c5 Mon Sep 17 00:00:00 2001 From: clawbot <35+clawbot@noreply.example.org> Date: Sun, 4 Oct 2026 06:03:58 +0000 Subject: [PATCH] Remove unimplemented Purge and three unused interfaces (closes #73) Purge only returned an error and nothing called it, so it is gone from the ImageCache interface and from Service, along with its error value. It can be added back when something needs it; eviction reclaims disk space meanwhile. The SignatureValidator, Allowlist and Storage interfaces in imgcache.go had no implementers and no users, and described types that look different from the real ones, so they are deleted. No behaviour changes. Model: opus-5-5 --- TODO.md | 5 +++++ internal/imgcache/imgcache.go | 30 ------------------------------ internal/imgcache/service.go | 12 +++--------- 3 files changed, 8 insertions(+), 39 deletions(-) diff --git a/TODO.md b/TODO.md index 404abd1..be3eb08 100644 --- a/TODO.md +++ b/TODO.md @@ -29,6 +29,11 @@ P2: security: referer blacklist # Completed Steps +- 2026-10-04 dead code in `internal/imgcache` is gone (closes #73): `Purge`, + which only returned an error and which nothing called, is no longer part of + the `ImageCache` interface or `Service`; the `SignatureValidator`, + `Allowlist` and `Storage` interfaces, which nothing implemented or used, are + deleted. Nothing else changes. - 2026-10-04 upstream host semaphores and variant `.meta` files no longer outlive their use (closes #87): the fetcher counts the fetches holding or waiting for a slot of each upstream host's semaphore and removes the host's diff --git a/internal/imgcache/imgcache.go b/internal/imgcache/imgcache.go index a74e783..1647658 100644 --- a/internal/imgcache/imgcache.go +++ b/internal/imgcache/imgcache.go @@ -5,7 +5,6 @@ import ( "context" "errors" "io" - "net/url" "time" ) @@ -154,9 +153,6 @@ type ImageCache interface { // Warm pre-fetches and caches an image without returning it Warm(ctx context.Context, req *ImageRequest) error - // Purge removes a cached image - Purge(ctx context.Context, req *ImageRequest) error - // Stats returns cache statistics Stats(ctx context.Context) (*CacheStats, error) } @@ -176,29 +172,3 @@ type CacheStats struct { // HitRate is HitCount / (HitCount + MissCount) HitRate float64 } - -// SignatureValidator validates request signatures -type SignatureValidator interface { - // Validate checks if the signature is valid for the request - Validate(req *ImageRequest) error - // Generate creates a signature for a request - Generate(req *ImageRequest) string -} - -// Allowlist checks if a URL is allowlisted (no signature required) -type Allowlist interface { - // IsAllowlisted returns true if the URL doesn't require a signature - IsAllowlisted(u *url.URL) bool -} - -// Storage handles persistent storage of cached content -type Storage interface { - // Store saves content and returns its hash - Store(ctx context.Context, content io.Reader) (hash string, err error) - // Load retrieves content by hash - Load(ctx context.Context, hash string) (io.ReadCloser, error) - // Delete removes content by hash - Delete(ctx context.Context, hash string) error - // Exists checks if content exists - Exists(ctx context.Context, hash string) (bool, error) -} diff --git a/internal/imgcache/service.go b/internal/imgcache/service.go index 77c7ce9..968dd95 100644 --- a/internal/imgcache/service.go +++ b/internal/imgcache/service.go @@ -56,11 +56,10 @@ type ServiceConfig struct { Logger *slog.Logger } -// Static errors for service construction and unimplemented operations. +// Static errors for service construction. var ( - errCacheRequired = errors.New("cache is required") - errSigningKeyRequired = errors.New("signing key is required") - errPurgeNotImplemented = errors.New("purge not implemented") + errCacheRequired = errors.New("cache is required") + errSigningKeyRequired = errors.New("signing key is required") ) // NewService creates a new image service. @@ -189,11 +188,6 @@ func (s *Service) Warm(ctx context.Context, req *ImageRequest) error { return err } -// Purge removes a cached image. Purging is not implemented yet. -func (s *Service) Purge(_ context.Context, _ *ImageRequest) error { - return errPurgeNotImplemented -} - // Stats returns cache statistics. func (s *Service) Stats(ctx context.Context) (*CacheStats, error) { return s.cache.Stats(ctx) -- 2.54.0