mirror of
https://github.com/42wim/matterbridge
synced 2024-11-19 03:25:33 +00: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).
|