1package couchdb 2 3import ( 4 "context" 5 "encoding/json" 6 7 "github.com/go-kivik/kivik" 8 "github.com/go-kivik/kivik/driver" 9) 10 11// Version returns the server's version info. 12func (c *client) Version(ctx context.Context) (*driver.Version, error) { 13 i := &info{} 14 _, err := c.DoJSON(ctx, kivik.MethodGet, "/", nil, i) 15 return &driver.Version{ 16 Version: i.Version, 17 Vendor: i.Vendor.Name, 18 Features: i.Features, 19 RawResponse: i.Data, 20 }, err 21} 22 23type info struct { 24 Data json.RawMessage 25 Version string `json:"version"` 26 Features []string `json:"features"` 27 Vendor struct { 28 Name string `json:"name"` 29 } `json:"vendor"` 30} 31 32func (i *info) UnmarshalJSON(data []byte) error { 33 type alias info 34 var a alias 35 if err := json.Unmarshal(data, &a); err != nil { 36 return err 37 } 38 i.Data = data 39 i.Version = a.Version 40 i.Vendor = a.Vendor 41 i.Features = a.Features 42 return nil 43} 44