40 lines
1.2 KiB
Go
40 lines
1.2 KiB
Go
|
// +build go1.7
|
||
|
|
||
|
package context
|
||
|
|
||
|
import (
|
||
|
"context"
|
||
|
"net/http"
|
||
|
)
|
||
|
|
||
|
// DoRequest submits an HTTP request.
|
||
|
func DoRequest(ctx Context, req *http.Request) (*http.Response, error) {
|
||
|
return DoRequestWithClient(ctx, http.DefaultClient, req)
|
||
|
}
|
||
|
|
||
|
// DoRequestWithClient submits an HTTP request using the specified client.
|
||
|
func DoRequestWithClient(
|
||
|
ctx Context,
|
||
|
client *http.Client,
|
||
|
req *http.Request) (*http.Response, error) {
|
||
|
req = req.WithContext(ctx)
|
||
|
return client.Do(req)
|
||
|
}
|
||
|
|
||
|
// TODO returns a non-nil, empty Context. Code should use context.TODO when
|
||
|
// it's unclear which Context to use or it is not yet available (because the
|
||
|
// surrounding function has not yet been extended to accept a Context
|
||
|
// parameter). TODO is recognized by static analysis tools that determine
|
||
|
// whether Contexts are propagated correctly in a program.
|
||
|
func TODO() Context {
|
||
|
return context.TODO()
|
||
|
}
|
||
|
|
||
|
// Background returns a non-nil, empty Context. It is never canceled, has no
|
||
|
// values, and has no deadline. It is typically used by the main function,
|
||
|
// initialization, and tests, and as the top-level Context for incoming
|
||
|
// requests.
|
||
|
func Background() Context {
|
||
|
return context.Background()
|
||
|
}
|