Documentation ¶
Overview ¶
Package http implements driver.Connection using an HTTP connection.
This connection uses HTTP or HTTPS to connect to the ArangoDB database and encodes its content as JSON or Velocypack, depending on the value of the `ContentType` fields in the `http.ConnectionConfig`.
Creating an Insecure Connection ¶
To create an HTTP connection, use code like this.
// Create an HTTP connection to the database conn, err := http.NewConnection(http.ConnectionConfig{ Endpoints: []string{"http://localhost:8529"}, }) if err != nil { // Handle error }
The resulting connection is used to create a client which you will use for normal database requests.
// Create a client c, err := driver.NewClient(driver.ClientConfig{ Connection: conn, }) if err != nil { // Handle error }
Creating a Secure Connection ¶
To create a secure HTTPS connection, use code like this.
// Create an HTTPS connection to the database conn, err := http.NewConnection(http.ConnectionConfig{ Endpoints: []string{"https://localhost:8529"}, TLSConfig: &tls.Config{ InsecureSkipVerify: trueWhenUsingNonPublicCertificates, }, }) if err != nil { // Handle error }
Index ¶
- Constants
- Variables
- func IsAuthenticationTheSame(auth1, auth2 driver.Authentication) bool
- func NewBinaryBodyBuilder(contentType string) *binaryBody
- func NewConnection(config ConnectionConfig) (driver.Connection, error)
- func NewConnectionDebugWrapper(conn driver.Connection, ct driver.ContentType) driver.Connection
- func NewJsonBodyBuilder() *jsonBody
- func NewRepeatConnection(conn driver.Connection, repeat RequestRepeater) driver.Connection
- func NewVelocyPackBodyBuilder() *velocyPackBody
- type ConnectionConfig
- type RepeatConnection
- func (h *RepeatConnection) Do(ctx context.Context, req driver.Request) (driver.Response, error)
- func (h *RepeatConnection) Endpoints() []string
- func (h *RepeatConnection) NewRequest(method, path string) (driver.Request, error)
- func (h *RepeatConnection) Protocols() driver.ProtocolSet
- func (h *RepeatConnection) SetAuthentication(authentication driver.Authentication) (driver.Connection, error)
- func (h *RepeatConnection) Unmarshal(data driver.RawObject, result interface{}) error
- func (h *RepeatConnection) UpdateEndpoints(endpoints []string) error
- type RequestRepeater
Constants ¶
const ( DefaultMaxIdleConnsPerHost = 64 DefaultConnLimit = 32 )
Variables ¶
var ErrAuthenticationNotChanged = errors.New("authentication not changed")
ErrAuthenticationNotChanged is returned when authentication is not changed.
Functions ¶
func IsAuthenticationTheSame ¶
func IsAuthenticationTheSame(auth1, auth2 driver.Authentication) bool
IsAuthenticationTheSame checks whether two authentications are the same.
func NewBinaryBodyBuilder ¶
func NewBinaryBodyBuilder(contentType string) *binaryBody
func NewConnection ¶
func NewConnection(config ConnectionConfig) (driver.Connection, error)
NewConnection creates a new HTTP connection based on the given configuration settings.
func NewConnectionDebugWrapper ¶ added in v1.3.0
func NewConnectionDebugWrapper(conn driver.Connection, ct driver.ContentType) driver.Connection
func NewJsonBodyBuilder ¶
func NewJsonBodyBuilder() *jsonBody
func NewRepeatConnection ¶
func NewRepeatConnection(conn driver.Connection, repeat RequestRepeater) driver.Connection
func NewVelocyPackBodyBuilder ¶
func NewVelocyPackBodyBuilder() *velocyPackBody
Types ¶
type ConnectionConfig ¶
type ConnectionConfig struct { // Endpoints holds 1 or more URL's used to connect to the database. // In case of a connection to an ArangoDB cluster, you must provide the URL's of all coordinators. // If there is more than one endpoint, the client will pick the first one that works and use it till it fails. // Then it will try the next one Endpoints []string // TLSConfig holds settings used to configure a TLS (HTTPS) connection. // This is only used for endpoints using the HTTPS scheme. TLSConfig *tls.Config // Transport allows the use of a custom round tripper. // If Transport is not of type `*http.Transport`, the `TLSConfig` property is not used. // Otherwise a `TLSConfig` property other than `nil` will overwrite the `TLSClientConfig` // property of `Transport`. // // When using a custom `http.Transport`, make sure to set the `MaxIdleConnsPerHost` field at least as // high as the maximum number of concurrent requests you will make to your database. // A lower number will cause the golang runtime to create additional connections and close them // directly after use, resulting in a large number of connections in `TIME_WAIT` state. // When this value is not set, the driver will set it to 64 automatically. Transport http.RoundTripper // DontFollowRedirect; if set, redirect will not be followed, response from the initial request will be returned without an error // DontFollowRedirect takes precendance over FailOnRedirect. DontFollowRedirect bool // FailOnRedirect; if set, redirect will not be followed, instead the status code is returned as error FailOnRedirect bool // Cluster configuration settings cluster.ConnectionConfig // ContentType specified type of content encoding to use. ContentType driver.ContentType // ConnLimit is the upper limit to the number of connections to a single server. // The default is 32 (DefaultConnLimit). // Set this value to -1 if you do not want any upper limit. ConnLimit int }
ConnectionConfig provides all configuration options for a HTTP connection.
type RepeatConnection ¶
type RepeatConnection struct {
// contains filtered or unexported fields
}
RepeatConnection is responsible for sending request until request repeater gives up.
func (*RepeatConnection) Do ¶
Do performs a given request, returning its response. Repeats requests until repeat function gives up.
func (*RepeatConnection) Endpoints ¶
func (h *RepeatConnection) Endpoints() []string
Endpoints returns the endpoints used by this connection.
func (*RepeatConnection) NewRequest ¶
func (h *RepeatConnection) NewRequest(method, path string) (driver.Request, error)
NewRequest creates a new request with given method and path.
func (*RepeatConnection) Protocols ¶
func (h *RepeatConnection) Protocols() driver.ProtocolSet
Protocols returns all protocols used by this connection.
func (*RepeatConnection) SetAuthentication ¶
func (h *RepeatConnection) SetAuthentication(authentication driver.Authentication) (driver.Connection, error)
SetAuthentication configure the authentication used for this connection. Returns ErrAuthenticationNotChanged when the authentication is not changed.
func (*RepeatConnection) Unmarshal ¶
func (h *RepeatConnection) Unmarshal(data driver.RawObject, result interface{}) error
Unmarshal unmarshals the given raw object into the given result interface.
func (*RepeatConnection) UpdateEndpoints ¶
func (h *RepeatConnection) UpdateEndpoints(endpoints []string) error
UpdateEndpoints reconfigures the connection to use the given endpoints.
type RequestRepeater ¶
type RequestRepeater interface {
Repeat(conn driver.Connection, resp driver.Response, err error) bool
}
RequestRepeater creates possibility to send the request many times.