Documentation ¶
Overview ¶
Package http provides the HTTP server for accessing the distributed database. It also provides the endpoint for other nodes to join an existing cluster.
Index ¶
Constants ¶
const ( PermAll = "all" PermJoin = "join" PermExecute = "execute" PermQuery = "query" PermStatus = "status" PermBackup = "backup" )
Variables ¶
This section is empty.
Functions ¶
func NormalizeAddr ¶
NormalizeAddr ensures that the given URL has a HTTP protocol prefix. If none is supplied, it prefixes the URL with "http://".
Types ¶
type CredentialStore ¶
type CredentialStore interface { // Check returns whether username and password are a valid combination. Check(username, password string) bool // HasPerm returns whether username has the given perm. HasPerm(username string, perm string) bool }
CredentialStore is the interface credential stores must support.
type Response ¶
type Response struct { Results interface{} `json:"results,omitempty"` Error string `json:"error,omitempty"` Time float64 `json:"time,omitempty"` // contains filtered or unexported fields }
Response represents a response from the HTTP service.
type Service ¶
type Service struct { CertFile string // Path to SSL certificate. KeyFile string // Path to SSL private key. Expvar bool BuildInfo map[string]interface{} // contains filtered or unexported fields }
Service provides HTTP service.
func New ¶
func New(addr string, store Store, credentials CredentialStore) *Service
New returns an uninitialized HTTP service. If credentials is nil, then the service performs no authentication and authorization checks.
func (*Service) CheckRequestPerm ¶
CheckRequestPerm returns true if authentication is enabled and the user contained in the BasicAuth request has either PermAll, or the given perm.
type Store ¶
type Store interface { // Execute executes a slice of queries, each of which doesn't // return rows. If timings is true, then timing information will // be return It tx is true, then all queries will be executed // successfully or none will be. Execute(queries []string, timings, tx bool) ([]*sql.Result, error) // Query executes a slice of queries, each of which returns rows. If // timings is true, then timing information will be returned. If tx // is true, then all queries will take place while a read transaction // is held on the database. Query(queries []string, timings, tx bool, lvl store.ConsistencyLevel) ([]*sql.Rows, error) // Join joins the node, reachable at addr, to this node. Join(addr string) error // Leader returns the Raft leader of the cluster. Leader() string // Peer returns the API peer for the given address Peer(addr string) string // Stats returns stats on the Store. Stats() (map[string]interface{}, error) // Backup returns a byte slice representing a backup of the database file. Backup(leader bool) ([]byte, error) }
Store is the interface the Raft-driven database must implement.