service.go 1012 B

12345678910111213141516171819202122232425262728293031323334
  1. package imagestreamer
  2. import (
  3. "context"
  4. "net/http"
  5. "github.com/imgproxy/imgproxy/v3/headerwriter"
  6. "github.com/imgproxy/imgproxy/v3/imagefetcher"
  7. )
  8. // Service is a struct which stores dependencies for the image streaming service
  9. type Service struct {
  10. config *Config
  11. fetcher *imagefetcher.Fetcher
  12. headerWriterFactory *headerwriter.Factory
  13. }
  14. // NewService creates a new service instance with the provided configuration
  15. func NewService(config *Config, fetcher *imagefetcher.Fetcher, headerWriterFactory *headerwriter.Factory) *Service {
  16. return &Service{config: config, fetcher: fetcher, headerWriterFactory: headerWriterFactory}
  17. }
  18. // Stream streams the image based on the provided request
  19. func (f *Service) Stream(ctx context.Context, r *Request, rr http.ResponseWriter) {
  20. s := &streamer{
  21. fetcher: f.fetcher,
  22. headerWriterFactory: f.headerWriterFactory,
  23. config: f.config,
  24. p: r,
  25. rw: rr,
  26. }
  27. s.Stream(ctx)
  28. }