middleware.go 1017 B

1234567891011121314151617181920212223242526272829303132333435363738
  1. // File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.
  2. package option
  3. import (
  4. "log"
  5. "net/http"
  6. "net/http/httputil"
  7. )
  8. // WithDebugLog logs the HTTP request and response content.
  9. // If the logger parameter is nil, it uses the default logger.
  10. //
  11. // WithDebugLog is for debugging and development purposes only.
  12. // It should not be used in production code. The behavior and interface
  13. // of WithDebugLog is not guaranteed to be stable.
  14. func WithDebugLog(logger *log.Logger) RequestOption {
  15. return WithMiddleware(func(req *http.Request, nxt MiddlewareNext) (*http.Response, error) {
  16. if logger == nil {
  17. logger = log.Default()
  18. }
  19. if reqBytes, err := httputil.DumpRequest(req, true); err == nil {
  20. logger.Printf("Request Content:\n%s\n", reqBytes)
  21. }
  22. resp, err := nxt(req)
  23. if err != nil {
  24. return resp, err
  25. }
  26. if respBytes, err := httputil.DumpResponse(resp, true); err == nil {
  27. logger.Printf("Response Content:\n%s\n", respBytes)
  28. }
  29. return resp, err
  30. })
  31. }