factory.go 587 B

123456789101112131415161718192021222324252627282930
  1. package responsewriter
  2. import "net/http"
  3. // Factory is a struct that creates response writers.
  4. type Factory struct {
  5. config *Config
  6. }
  7. func NewFactory(config *Config) (*Factory, error) {
  8. if err := config.Validate(); err != nil {
  9. return nil, err
  10. }
  11. return &Factory{config}, nil
  12. }
  13. // NewWriter wraps [http.ResponseWriter] into [Writer].
  14. func (f *Factory) NewWriter(rw http.ResponseWriter) *Writer {
  15. w := &Writer{
  16. config: f.config,
  17. result: make(http.Header),
  18. originHeaders: make(http.Header),
  19. maxAge: -1,
  20. }
  21. w.SetHTTPResponseWriter(rw)
  22. return w
  23. }