aux_image_provider.go 1.3 KB

12345678910111213141516171819202122232425262728293031323334
  1. // auximageprovider exposes an interface for retreiving auxiliary images
  2. // such as watermarks and fallbacks. Default implementation stores those in memory.
  3. package auximageprovider
  4. import (
  5. "context"
  6. "net/http"
  7. "github.com/imgproxy/imgproxy/v3/imagedatanew"
  8. "github.com/imgproxy/imgproxy/v3/options"
  9. )
  10. // AuxImageProvider is an interface that provides image data and headers based
  11. // on processing options. It is used to retrieve WatermarkImage and FallbackImage.
  12. type AuxImageProvider interface {
  13. Get(context.Context, *options.ProcessingOptions) (imagedatanew.ImageData, http.Header, error)
  14. }
  15. // memoryAuxImageProvider is a simple implementation of ImageProvider, which returns
  16. // a static saved image data and headers.
  17. type memoryAuxImageProvider struct {
  18. data imagedatanew.ImageData
  19. headers http.Header
  20. }
  21. // newStaticAuxImageProvider creates a new staticImageProvider with the given image data and headers.
  22. func newStaticAuxImageProvider(data imagedatanew.ImageData, headers http.Header) AuxImageProvider {
  23. return &memoryAuxImageProvider{data: data, headers: headers}
  24. }
  25. // Get returns the static image data and headers stored in the provider.
  26. func (s *memoryAuxImageProvider) Get(_ context.Context, po *options.ProcessingOptions) (imagedatanew.ImageData, http.Header, error) {
  27. return s.data, s.headers, nil
  28. }