Documentation ¶
Overview ¶
Package chttp provides a minimal HTTP driver backend for communicating with CouchDB servers.
Index ¶
- func DecodeJSON(r *http.Response, i interface{}) error
- func EncodeBody(i interface{}, cancel context.CancelFunc) (r io.Reader, errFunc func() error)
- func EncodeDocID(docID string) string
- func GetRev(resp *http.Response) (rev string, err error)
- func ResponseError(resp *http.Response) error
- func ValidateAuth(ctx context.Context, username string, client *Client) error
- type Authenticator
- type BasicAuth
- type Client
- func (c *Client) Auth(ctx context.Context, a Authenticator) error
- func (c *Client) DSN() string
- func (c *Client) DoError(ctx context.Context, method, path string, opts *Options) (*http.Response, error)
- func (c *Client) DoJSON(ctx context.Context, method, path string, opts *Options, i interface{}) (*http.Response, error)
- func (c *Client) DoReq(ctx context.Context, method, path string, opts *Options) (*http.Response, error)
- func (c *Client) Logout(ctx context.Context) error
- func (c *Client) NewRequest(ctx context.Context, method, path string, body io.Reader) (*http.Request, error)
- type CookieAuth
- type HTTPError
- type Options
- type Response
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
func DecodeJSON ¶
DecodeJSON unmarshals the response body into i. This method consumes and closes the response body.
func EncodeBody ¶
func EncodeBody(i interface{}, cancel context.CancelFunc) (r io.Reader, errFunc func() error)
EncodeBody JSON encodes i to r. A call to errFunc will block until encoding has completed, then return the errur status of the encoding job. If an encoding error occurs, cancel() called.
func EncodeDocID ¶
EncodeDocID encodes a document ID according to CouchDB's path encoding rules.
In particular:
- '_design/' and '_local/' prefixes are unaltered.
- The rest of the docID is Query-URL encoded (despite being part of the path)
func ResponseError ¶
ResponseError returns an error from an *http.Response.
Types ¶
type Authenticator ¶
type Authenticator interface { Authenticate(context.Context, *Client) error Logout(context.Context, *Client) error }
Authenticator is an interface that provides authentication to a server.
type BasicAuth ¶
BasicAuth provides HTTP Basic Auth for a client.
func (*BasicAuth) Authenticate ¶
Authenticate sets HTTP Basic Auth headers for the client.
type Client ¶
Client represents a client connection. It embeds an *http.Client
func New ¶
New returns a connection to a remote CouchDB server. If credentials are included in the URL, CookieAuth is attempted first, with BasicAuth used as a fallback. If both fail, an error is returned. If you wish to use some other authentication mechanism, do not specify credentials in the URL, and instead call the Auth() method later.
func (*Client) Auth ¶
func (c *Client) Auth(ctx context.Context, a Authenticator) error
Auth authenticates using the provided Authenticator.
func (*Client) DoError ¶
func (c *Client) DoError(ctx context.Context, method, path string, opts *Options) (*http.Response, error)
DoError is the same as DoReq(), followed by checking the response error. This method is meant for cases where the only information you need from the response is the status code. It unconditionally closes the response body.
func (*Client) DoJSON ¶
func (c *Client) DoJSON(ctx context.Context, method, path string, opts *Options, i interface{}) (*http.Response, error)
DoJSON combines DoReq() and, ResponseError(), and (*Response).DecodeJSON(), and closes the response body.
func (*Client) DoReq ¶
func (c *Client) DoReq(ctx context.Context, method, path string, opts *Options) (*http.Response, error)
DoReq does an HTTP request. An error is returned only if there was an error processing the request. In particular, an error status code, such as 400 or 500, does _not_ cause an error to be returned.
type CookieAuth ¶
type CookieAuth struct { Username string `json:"name"` Password string `json:"password"` // contains filtered or unexported fields }
CookieAuth provides CouchDB Cookie auth services as described at http://docs.couchdb.org/en/2.0.0/api/server/authn.html#cookie-authentication
func (*CookieAuth) Authenticate ¶
func (a *CookieAuth) Authenticate(ctx context.Context, c *Client) error
Authenticate initiates a session with the CouchDB server.
type HTTPError ¶
HTTPError is an error that represents an HTTP transport error.
func (*HTTPError) StatusCode ¶
StatusCode returns the embedded status code.
type Options ¶
type Options struct { // Accept sets the request's Accept header. Defaults to "application/json". // To specify any, use "*/*". Accept string // ContentType sets the requests's Content-Type header. Defaults to "application/json". ContentType string // Body sets the body of the request. Body io.Reader // JSON is an arbitrary data type which is marshaled to the request's body. // It an error to set both Body and JSON on the same request. When this is // set, ContentType is unconditionally set to 'application/json'. Note that // for large JSON payloads, it can be beneficial to do your own JSON stream // encoding, so that the request can be live on the wire during JSON // encoding. JSON interface{} // ForceCommit adds the X-Couch-Full-Commit: true header to requests ForceCommit bool // Destination is the target ID for COPY Destination string }
Options are optional parameters which may be sent with a request.