Documentation
¶
Overview ¶
Package idigbio is the library behind the idigbio command line: the HTTP client, request shaping, and the typed data models for iDigBio (Integrated Digitized Biocollections).
The Client here is the spine every command shares. It sets a real User-Agent, paces requests so a busy session stays polite, and retries the transient failures (429 and 5xx) that any public API throws under load. Search endpoints use POST with a JSON body; the count endpoint uses GET.
Index ¶
- Constants
- type Client
- func (c *Client) Count(ctx context.Context) (int, error)
- func (c *Client) Get(ctx context.Context, url string) ([]byte, error)
- func (c *Client) GetRecord(ctx context.Context, uuid string) (*Record, error)
- func (c *Client) ListRecords(ctx context.Context, limit, offset int) ([]*Record, int, error)
- func (c *Client) Post(ctx context.Context, url string, bodyBytes []byte) ([]byte, error)
- func (c *Client) SearchRecords(ctx context.Context, scientificName string, limit, offset int) ([]*Record, int, error)
- type CountResult
- type Domain
- type Record
Constants ¶
const BaseURL = "https://" + Host + "/v2"
BaseURL is the API root every request is built from.
const DefaultUserAgent = "idigbio/dev (+https://github.com/tamnd/idigbio-cli)"
DefaultUserAgent identifies the client to iDigBio.
const Host = "search.idigbio.org"
Host is the API host this client talks to.
Variables ¶
This section is empty.
Functions ¶
This section is empty.
Types ¶
type Client ¶
type Client struct {
HTTP *http.Client
UserAgent string
// Rate is the minimum gap between requests. Zero means no pacing.
Rate time.Duration
Retries int
// contains filtered or unexported fields
}
Client talks to the iDigBio API over HTTP.
func NewClient ¶
func NewClient() *Client
NewClient returns a Client with sensible defaults: a 30s timeout, a 300ms minimum gap between requests, and three retries on transient errors.
func (*Client) Get ¶
Get fetches url and returns the response body. It paces and retries according to the client's settings.
func (*Client) ListRecords ¶
ListRecords lists all specimen records, up to limit starting at offset. It returns the records and the total count.
type CountResult ¶
type CountResult struct {
Total int `json:"total"`
}
CountResult holds the total specimen record count.
type Domain ¶
type Domain struct{}
Domain is the iDigBio driver. It carries no state; the per-run client is built by the factory Register hands kit.
func (Domain) Classify ¶
Classify turns any accepted input into (type, id). Any non-empty string maps to ("record", input) so it is addressable as a resource URI.
func (Domain) Info ¶
func (Domain) Info() kit.DomainInfo
Info describes the scheme, the hostnames a pasted link is matched against, and the identity reused for the binary's help and version.
type Record ¶
type Record struct {
ID string `json:"id" kit:"id"`
ScientificName string `json:"scientific_name"`
Family string `json:"family,omitempty"`
Genus string `json:"genus,omitempty"`
Country string `json:"country,omitempty"`
Continent string `json:"continent,omitempty"`
BasisOfRecord string `json:"basis_of_record,omitempty"`
Institution string `json:"institution,omitempty"`
CatalogNumber string `json:"catalog_number,omitempty"`
Collector string `json:"collector,omitempty"`
DateCollected string `json:"date_collected,omitempty"`
TypeStatus string `json:"type_status,omitempty"`
HasMedia bool `json:"has_media,omitempty"`
}
Record is a single digitized natural history specimen record from iDigBio.