| 12345678910111213141516171819202122232425262728293031323334353637 |
- package transport
- import (
- "net/http"
- "github.com/imgproxy/imgproxy/v3/storage"
- )
- // RoundTripper wraps storage with http.RoundTripper
- type RoundTripper struct {
- http.RoundTripper
- storage storage.Reader
- querySeparator string
- }
- // New creates a new RoundTripper
- func NewRoundTripper(storage storage.Reader, querySeparator string) *RoundTripper {
- return &RoundTripper{
- storage: storage,
- querySeparator: querySeparator,
- }
- }
- // RoundTrip implements the http.RoundTripper interface
- func (t RoundTripper) RoundTrip(req *http.Request) (resp *http.Response, err error) {
- // Parse container and object name from the URL
- container, key, query := GetBucketAndKey(req.URL, t.querySeparator)
- // Call GetObject
- r, err := t.storage.GetObject(req.Context(), req.Header, container, key, query)
- if err != nil {
- return nil, err
- }
- return r.Response(req), nil
- }
|