http

package
v0.0.0-...-2dbc8c7 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Apr 28, 2018 License: Apache-2.0 Imports: 22 Imported by: 0

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

View Source
const (
	DefaultMaxIdleConnsPerHost = 64
	DefaultConnLimit           = 32
)

Variables

This section is empty.

Functions

func NewConnection

func NewConnection(config ConnectionConfig) (driver.Connection, error)

NewConnection creates a new HTTP connection based on the given configuration settings.

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.
	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.

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL