33 lines
1.4 KiB
Go
33 lines
1.4 KiB
Go
// NOTE: Subject to change, do not rely on this package from outside git-lfs source
|
|
package api
|
|
|
|
import "net/http"
|
|
|
|
// TODO: extract interface for *http.Request; update methods. This will be in a
|
|
// later iteration of the API client.
|
|
|
|
// A Lifecycle represents and encapsulates the behavior on an API request from
|
|
// inception to cleanup.
|
|
//
|
|
// At a high level, it turns an *api.RequestSchema into an
|
|
// api.Response (and optionally an error). Lifecycle does so by providing
|
|
// several more fine-grained methods that are used by the client to manage the
|
|
// lifecycle of a request in a platform-agnostic fashion.
|
|
type Lifecycle interface {
|
|
// Build creates a sendable request by using the given RequestSchema as
|
|
// a model.
|
|
Build(req *RequestSchema) (*http.Request, error)
|
|
|
|
// Execute transforms generated request into a wrapped repsonse, (and
|
|
// optionally an error, if the request failed), and serializes the
|
|
// response into the `into interface{}`, if one was provided.
|
|
Execute(req *http.Request, into interface{}) (Response, error)
|
|
|
|
// Cleanup is called after the request has been completed and its
|
|
// response has been processed. It is meant to preform any post-request
|
|
// actions necessary, like closing or resetting the connection. If an
|
|
// error was encountered in doing this operation, it should be returned
|
|
// from this method, otherwise nil.
|
|
Cleanup(resp Response) error
|
|
}
|