Documentation
¶
Overview ¶
Package httpvar provides a runtimevar implementation with variables backed by http endpoint. Use OpenVariable to construct a *runtimevar.Variable.
URLs ¶
For runtimevar.OpenVariable, httpvar registers for the schemes "http" and "https". The default URL opener will use http.DefaultClient. To use HTTP Basic Auth for the requests, set the environment variables "HTTPVAR_AUTH_USERNAME" and "HTTPVAR_AUTH_PASSWORD". To customize the URL opener, or for more details on the URL format, see URLOpener. See https://gocloud.dev/concepts/urls/ for background information.
As ¶
httpvar exposes the following types for As:
- Snapshot: *http.Response
- Error: httpvar.RequestError, url.Error
Example (OpenVariableFromURL) ¶
package main
import (
"context"
"log"
"gocloud.dev/runtimevar"
)
func main() {
// PRAGMA: This example is used on gocloud.dev; PRAGMA comments adjust how it is shown and can be ignored.
// PRAGMA: On gocloud.dev, add a blank import: _ "gocloud.dev/runtimevar/httpvar"
// PRAGMA: On gocloud.dev, hide lines until the next blank line.
ctx := context.Background()
// runtimevar.OpenVariable creates a *runtimevar.Variable from a URL.
// The default opener connects to an etcd server based on the environment
// variable ETCD_SERVER_URL.
v, err := runtimevar.OpenVariable(ctx, "http://myserver.com/foo.txt?decoder=string")
if err != nil {
log.Fatal(err)
}
defer v.Close()
}
Index ¶
Examples ¶
Constants ¶
This section is empty.
Variables ¶
var Schemes = []string{"http", "https"}
Schemes are the URL schemes httpvar registers its URLOpener under on runtimevar.DefaultMux.
Functions ¶
func OpenVariable ¶
func OpenVariable(client *http.Client, urlStr string, decoder *runtimevar.Decoder, opts *Options) (*runtimevar.Variable, error)
OpenVariable constructs a *runtimevar.Variable that uses client to retrieve the variable contents from the URL urlStr.
Example ¶
package main
import (
"log"
"net/http"
"gocloud.dev/runtimevar"
"gocloud.dev/runtimevar/httpvar"
)
func main() {
// PRAGMA: This example is used on gocloud.dev; PRAGMA comments adjust how it is shown and can be ignored.
// Create an HTTP.Client
httpClient := http.DefaultClient
// Construct a *runtimevar.Variable that watches the page.
v, err := httpvar.OpenVariable(httpClient, "http://example.com", runtimevar.StringDecoder, nil)
if err != nil {
log.Fatal(err)
}
defer v.Close()
}
Types ¶
type Options ¶
type Options struct {
// WaitDuration controls the rate at which the HTTP endpoint is called to check for changes.
// Defaults to 30 seconds.
WaitDuration time.Duration
}
Options sets options.
type RequestError ¶
RequestError represents an HTTP error that occurred during endpoint call.
func (*RequestError) Error ¶
func (e *RequestError) Error() string
type URLOpener ¶
type URLOpener struct {
// The Client to use; required.
Client *http.Client
// Decoder specifies the decoder to use if one is not specified in the URL.
// Defaults to runtimevar.BytesDecoder.
Decoder *runtimevar.Decoder
// Options specifies the options to pass to OpenVariable.
Options Options
}
URLOpener opens HTTP URLs like "http://myserver.com/foo.txt".
The full URL, including scheme, is used as the endpoint, except that the the following URL parameters are removed if present:
- decoder: The decoder to use. Defaults to runtimevar.BytesDecoder. See runtimevar.DecoderByName for supported values.
- wait: The poll interval, in time.ParseDuration formats. Defaults to 30s.
func (*URLOpener) OpenVariableURL ¶
OpenVariableURL opens a httpvar Variable for u.