git-lfs/api/lifecycle.go

33 lines
1.4 KiB
Go
Raw Normal View History

// NOTE: Subject to change, do not rely on this package from outside git-lfs source
package api
2016-05-18 17:43:56 +00:00
import "net/http"
2016-05-20 23:52:35 +00:00
// 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 {
2016-05-20 23:52:35 +00:00
// Build creates a sendable request by using the given RequestSchema as
// a model.
2016-05-18 17:43:56 +00:00
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.
2016-05-18 17:43:56 +00:00
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
2016-05-20 23:52:35 +00:00
// error was encountered in doing this operation, it should be returned
// from this method, otherwise nil.
2016-05-18 17:43:56 +00:00
Cleanup(resp Response) error
}