mirror of
https://github.com/42wim/matterbridge.git
synced 2024-12-23 09:12:07 -08:00
42 lines
1.4 KiB
Markdown
42 lines
1.4 KiB
Markdown
## go-httpclient
|
|
|
|
**requires Go 1.1+** as of `v0.4.0` the API has been completely re-written for Go 1.1 (for a Go
|
|
1.0.x compatible release see [1adef50](https://github.com/mreiferson/go-httpclient/tree/1adef50))
|
|
|
|
[![Build
|
|
Status](https://secure.travis-ci.org/mreiferson/go-httpclient.png?branch=master)](http://travis-ci.org/mreiferson/go-httpclient)
|
|
|
|
Provides an HTTP Transport that implements the `RoundTripper` interface and
|
|
can be used as a built in replacement for the standard library's, providing:
|
|
|
|
* connection timeouts
|
|
* request timeouts
|
|
|
|
This is a thin wrapper around `http.Transport` that sets dial timeouts and uses
|
|
Go's internal timer scheduler to call the Go 1.1+ `CancelRequest()` API.
|
|
|
|
### Example
|
|
|
|
```go
|
|
transport := &httpclient.Transport{
|
|
ConnectTimeout: 1*time.Second,
|
|
RequestTimeout: 10*time.Second,
|
|
ResponseHeaderTimeout: 5*time.Second,
|
|
}
|
|
defer transport.Close()
|
|
|
|
client := &http.Client{Transport: transport}
|
|
req, _ := http.NewRequest("GET", "http://127.0.0.1/test", nil)
|
|
resp, err := client.Do(req)
|
|
if err != nil {
|
|
return err
|
|
}
|
|
defer resp.Body.Close()
|
|
```
|
|
|
|
*Note:* you will want to re-use a single client object rather than creating one for each request, otherwise you will end up [leaking connections](https://code.google.com/p/go/issues/detail?id=4049#c3).
|
|
|
|
### Reference Docs
|
|
|
|
For API docs see [godoc](http://godoc.org/github.com/mreiferson/go-httpclient).
|