Documentation ¶
Index ¶
- Constants
- Variables
- func CondenseResponseNot2xxToError(resp *http.Response, err error, msg string) error
- func Delete(client *http.Client, url string) (*http.Response, error)
- func DoJSON(client *http.Client, httpMethod, reqURL string, headers map[string]string, ...) ([]byte, *http.Response, error)
- func DoJSONSimple(client *http.Client, httpMethod, requrl string, headers map[string]string, ...) (*http.Response, error)
- func DoRequestRateLimited(client *http.Client, req *http.Request, useXrlHyphen bool, ...) (*http.Response, error)
- func GetJsonSimple(requrl string, header http.Header, data interface{}) (*http.Response, error)
- func GetRequestRateLimited(client *http.Client, reqURL string, useXrlHyphen bool, fn FnLogRateLimitInfo) (*http.Response, error)
- func GetResponseAndBytes(url string) (*http.Response, []byte, error)
- func GetWriteFile(client *http.Client, url, filename string) (*http.Response, error)
- func GetWriteFileSimple(url string, filename string, perm os.FileMode) ([]byte, error)
- func Log(handler http.Handler) http.Handler
- func LogRequestRateLimited(rlstat RateLimitInfo)
- func MergeHeader(base, more http.Header, overwrite bool) http.Header
- func NewHeadersMSS(headersMap map[string]string) http.Header
- func NewHttpClient() *http.Client
- func ParseHeader(s string) http.Header
- func ParseMultipartFormDataBoundaryFromHeader(contentType string) string
- func PrintRequestOut(req *http.Request, includeBody bool) error
- func PrintResponse(resp *http.Response, includeBody bool) error
- func ProxyResponse(w http.ResponseWriter, resp *http.Response) ([]byte, error)
- func ResponseBodyJSONMapIndent(res *http.Response, prefix string, indent string) ([]byte, error)
- func ResponseWriterWriteJSON(w http.ResponseWriter, statusCode int, body interface{}, prefix, indent string)
- func SendWwwFormUrlEncodedSimple(method, urlStr string, data url.Values) (*http.Response, error)
- type ClientMore
- type FnLogRateLimitInfo
- type HTTPError
- type HTTPMethod
- type RateLimitInfo
- type ResponseInfo
- type TransportWithHeaders
Constants ¶
const ( HeaderAccept = "Accept" HeaderAuthorization = "Authorization" HeaderCacheControl = "Cache-Control" HeaderContentDisposition = "Content-Disposition" HeaderContentEncoding = "Content-Encoding" HeaderContentLanguage = "Content-Language" HeaderContentLength = "Content-Length" HeaderContentMD5 = "Content-MD5" HeaderContentTransferEncoding = "Content-Transfer-Encoding" HeaderContentType = "Content-Type" HeaderDate = "Date" HeaderIfMatch = "If-Match" HeaderIfModifiedSince = "If-Modified-Since" HeaderIfNoneMatch = "If-None-Match" HeaderIfUnmodifiedSince = "If-Unmodified-Since" HeaderLocation = "Location" HeaderRange = "Range" HeaderUserAgent = "User-Agent" HeaderXContentTypeOptions = "X-Content-Type-Options" ContentTypeAppJson = "application/json" ContentTypeAppJsonUtf8 = "application/json; charset=utf-8" ContentTypeAppFormUrlEncoded = "application/x-www-form-urlencoded" ContentTypeAppXml = "application/xml" ContentTypeAppXmlUtf8 = "application/xml; charset=utf-8" ContentTypeTextCalendarUtf8Request = `text/calendar; charset="utf-8"; method=REQUEST` ContentTypeTextHtmlUtf8 = "text/html; charset=utf-8" ContentTypeTextPlain = "text/plain" ContentTypeTextPlainUsAscii = "text/plain; charset=us-ascii" ContentTypeTextPlainUtf8 = "text/plain; charset=utf-8" ContentTypeTextXmlUtf8 = "text/xml; charset=utf-8" SchemeHTTPS = "https" )
Constants ensuring that header names are correctly spelled and consistently cased.
Variables ¶
var ( DIAL_TIMEOUT int64 = 5 TLS_TIMEOUT int = 5 HTTP_TIMEOUT int = 10 )
Functions ¶
func CondenseResponseNot2xxToError ¶ added in v0.0.7
func DoJSONSimple ¶
func DoRequestRateLimited ¶
func DoRequestRateLimited(client *http.Client, req *http.Request, useXrlHyphen bool, fnLog FnLogRateLimitInfo) (*http.Response, error)
DoRequestRateLimited will pause a request for the time specified in the HTTP response headers.
func GetJsonSimple ¶
func GetRequestRateLimited ¶
func GetResponseAndBytes ¶
GetResponseAndBytes retreives a URL and returns the response body as a byte array in addition to the *http.Response.
func GetWriteFile ¶
GetWriteFile gets the conents of a URL and stores the body in the desired filename location.
func GetWriteFileSimple ¶
GetWriteFile performs a HTTP GET request and saves the response body to the file path specified. It reeads the entire file into memory which is not ideal for large files.
func Log ¶
Log is a custom Http handler that will log all requests. It can be called using http.ListenAndServe(":8080", Log(http.DefaultServeMux)) From: https://groups.google.com/forum/#!topic/golang-nuts/s7Xk1q0LSU0
func LogRequestRateLimited ¶
func LogRequestRateLimited(rlstat RateLimitInfo)
func MergeHeader ¶
MergeHeader merges two http.Header adding the values of the second to the first.
func NewHeadersMSS ¶
NewHeadersMSS returns a `http.Header` struct give a `map[string]string`
func NewHttpClient ¶
The default Go HTTP client never times out. This HTTP client provides default and updatable timeouts More at: https://medium.com/@nate510/don-t-use-go-s-default-http-client-4804cb19f779#.ymd655pgz
func ParseHeader ¶
ParseHeader converts a raw strign to a header struct.
func PrintRequestOut ¶
PrintRequestOut prints a http.Request using `httputil.DumpRequestOut`.
func PrintResponse ¶
PrintResponse prints a http.Response using `httputil.DumpResponse`.
func ProxyResponse ¶
ProxyResponse copies the information from a `*http.Response` to a `http.ResponseWriter`.
func ResponseBodyJSONMapIndent ¶
ResponseBodyJSONMapIndent returns the body as a generic JSON dictionary
func ResponseWriterWriteJSON ¶
func ResponseWriterWriteJSON(w http.ResponseWriter, statusCode int, body interface{}, prefix, indent string)
Types ¶
type ClientMore ¶
func (*ClientMore) PostToJSON ¶
func (cm *ClientMore) PostToJSON(postURL string, body interface{}) (*http.Response, error)
type FnLogRateLimitInfo ¶
type FnLogRateLimitInfo func(RateLimitInfo)
type HTTPError ¶ added in v0.0.8
type HTTPError struct { HTTPStatus int `json:"httpStatus"` Stage string `json:"preOpPost"` Message string `json:"errorMessage"` }
func NewHTTPError ¶ added in v0.0.8
type HTTPMethod ¶
type HTTPMethod int
HTTPMethod is a type of HTTP Methods. Of note, do not rely on the integer value but use for definitions.
const ( MethodConnect HTTPMethod = iota MethodDelete MethodGet MethodHead MethodOptions MethodPatch MethodPost MethodPut MethodTrace )
func ParseHTTPMethod ¶
func ParseHTTPMethod(method string) (HTTPMethod, error)
ParseHTTPMethod returns a HTTPMethod type for a string.
func (HTTPMethod) String ¶
func (method HTTPMethod) String() string
String returns the English name of the HTTPMethod.
type RateLimitInfo ¶
type RateLimitInfo struct { StatusCode int RetryAfter int XRateLimitLimit int XRateLimitRemaining int XRateLimitReset int XRateLimitWindow int }
RateLimitInfo is a structure for holding parsed rate limit info. It uses headers from the GitHub, RingCentral and Twitter APIs.
func NewResponseRateLimitInfo ¶
func NewResponseRateLimitInfo(resp *http.Response, useXrlHyphen bool) RateLimitInfo
NewResponseRateLimitInfo returns a RateLimitInfo from a http.Response.
type ResponseInfo ¶
type ResponseInfo struct { Name string `json:"name,omitempty"` // to distinguish from other requests Method string `json:"method,omitempty"` URL string `json:"url,omitempty"` StatusCode int `json:"statusCode,omitempty"` Time time.Time `json:"time,omitempty"` Headers map[string]string `json:"headers,omitempty"` Body string `json:"body,omitempty"` }
ResponseInfo is a generic struct to handle response info.
func (*ResponseInfo) ToJSON ¶
func (resIn *ResponseInfo) ToJSON() []byte
ToJSON returns ResponseInfo as a JSON byte array, embedding json.Marshal errors if encountered.
type TransportWithHeaders ¶
type TransportWithHeaders struct { Transport http.RoundTripper Header http.Header Override bool }
TransportWithHeaders implements http.RoundTripper. When set as Transport of http.Client, it adds HTTP headers to requests. No field is mandatory. Can be implemented with http.Client as: client.Transport = httputilmore.TransportWithHeaders{ Transport:client.Transport, Header:myHeader}