package proxy

import "net/http"

type Middleware func(h http.Handler) http.Handler

type ProxyResponseTransformer interface {
	TransformResponse(*http.Response) error
}

type defaultProxyResponseTransformer struct{}

// TransformResponse implements ProxyResponseTransformer
func (*defaultProxyResponseTransformer) TransformResponse(*http.Response) error {
	return nil
}

var _ ProxyResponseTransformer = &defaultProxyResponseTransformer{}

type ProxyResponseMiddleware func(ProxyResponseTransformer) ProxyResponseTransformer

type ProxyRequestTransformer interface {
	TransformRequest(*http.Request)
}

type ProxyRequestMiddleware func(ProxyRequestTransformer) ProxyRequestTransformer

type defaultProxyRequestTransformer struct{}

// TransformRequest implements ProxyRequestTransformer
func (*defaultProxyRequestTransformer) TransformRequest(*http.Request) {}

var _ ProxyRequestTransformer = &defaultProxyRequestTransformer{}