Remove unimplemented Purge and three unused interfaces from imgcache (closes #73) #175
@@ -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
|
||||
|
||||
@@ -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)
|
||||
}
|
||||
|
||||
@@ -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)
|
||||
|
||||
Reference in New Issue
Block a user