Connect should be passed a Responder interface
For connect handlers that need to respond with a structured error or structured object, pass an interface that hides the details of writing an object to the response (error or runtime.Object). Example use case: Connect handler that accepts a body input stream, which it streams to a pod, and then returns a structured object with info about the pod it just created.
This commit is contained in:
@@ -202,20 +202,24 @@ type Redirector interface {
|
||||
ResourceLocation(ctx api.Context, id string) (remoteLocation *url.URL, transport http.RoundTripper, err error)
|
||||
}
|
||||
|
||||
// ConnectHandler is a handler for HTTP connection requests. It extends the standard
|
||||
// http.Handler interface by adding a method that returns an error object if an error
|
||||
// occurred during the handling of the request.
|
||||
type ConnectHandler interface {
|
||||
http.Handler
|
||||
|
||||
// RequestError returns an error if one occurred during handling of an HTTP request
|
||||
RequestError() error
|
||||
// Responder abstracts the normal response behavior for a REST method and is passed to callers that
|
||||
// may wish to handle the response directly in some cases, but delegate to the normal error or object
|
||||
// behavior in other cases.
|
||||
type Responder interface {
|
||||
// Object writes the provided object to the response. Invoking this method multiple times is undefined.
|
||||
Object(statusCode int, obj runtime.Object)
|
||||
// Error writes the provided error to the response. This method may only be invoked once.
|
||||
Error(err error)
|
||||
}
|
||||
|
||||
// Connecter is a storage object that responds to a connection request
|
||||
// Connecter is a storage object that responds to a connection request.
|
||||
type Connecter interface {
|
||||
// Connect returns a ConnectHandler that will handle the request/response for a request
|
||||
Connect(ctx api.Context, id string, options runtime.Object) (ConnectHandler, error)
|
||||
// Connect returns an http.Handler that will handle the request/response for a given API invocation.
|
||||
// The provided responder may be used for common API responses. The responder will write both status
|
||||
// code and body, so the ServeHTTP method should exit after invoking the responder. The Handler will
|
||||
// be used for a single API request and then discarded. The Responder is guaranteed to write to the
|
||||
// same http.ResponseWriter passed to ServeHTTP.
|
||||
Connect(ctx api.Context, id string, options runtime.Object, r Responder) (http.Handler, error)
|
||||
|
||||
// NewConnectOptions returns an empty options object that will be used to pass
|
||||
// options to the Connect method. If nil, then a nil options object is passed to
|
||||
|
Reference in New Issue
Block a user