dataverse

package
v0.1.0 Latest Latest
Warning

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

Go to latest
Published: Jun 15, 2026 License: Apache-2.0 Imports: 10 Imported by: 0

Documentation

Overview

Package dataverse is the library behind the dataverse command line: the HTTP client, request shaping, and the typed data models for the Harvard Dataverse repository.

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. Build your endpoint calls and JSON decoding on top of it.

Index

Constants

View Source
const DefaultUserAgent = "dataverse-cli/0.1.0 (+https://github.com/tamnd/dataverse-cli)"

DefaultUserAgent identifies the client to Dataverse. A real, honest User-Agent is both polite and the thing most likely to keep you unblocked.

View Source
const Host = "dataverse.harvard.edu"

Host is the site this client talks to, and the host the URI driver in domain.go claims.

Variables

This section is empty.

Functions

This section is empty.

Types

type Client

type Client struct {
	// contains filtered or unexported fields
}

Client talks to the Harvard Dataverse search API over HTTP.

func NewClient

func NewClient() *Client

NewClient returns a Client built from DefaultConfig.

func NewClientWithConfig

func NewClientWithConfig(cfg Config) *Client

NewClientWithConfig returns a Client built from cfg.

func (*Client) Get

func (c *Client) Get(ctx context.Context, rawURL string) ([]byte, error)

Get fetches rawURL and returns the response body. It paces and retries according to the client's settings. The caller owns nothing extra; the body is read fully and closed here.

func (*Client) RecentDatasets

func (c *Client) RecentDatasets(ctx context.Context, limit int) ([]*Dataset, int, error)

RecentDatasets returns the most recently published datasets by searching for all records ordered by date.

func (*Client) SearchDatasets

func (c *Client) SearchDatasets(ctx context.Context, query string, limit, offset int) ([]*Dataset, int, error)

SearchDatasets queries the Dataverse search API and returns matching datasets plus the total count.

type Config

type Config struct {
	BaseURL   string
	Rate      time.Duration
	Retries   int
	Timeout   time.Duration
	UserAgent string
}

Config holds the tunable knobs for the HTTP client.

func DefaultConfig

func DefaultConfig() Config

DefaultConfig returns sensible defaults: a 500 ms pace, three retries, and a 30 s timeout.

type Dataset

type Dataset struct {
	ID          string   `json:"id"                   kit:"id"`
	Title       string   `json:"title"`
	URL         string   `json:"url,omitempty"`
	Description string   `json:"description,omitempty"`
	Publisher   string   `json:"publisher,omitempty"`
	Subjects    []string `json:"subjects,omitempty"`
	Authors     []string `json:"authors,omitempty"`
	FileCount   int      `json:"file_count,omitempty"`
	PublishedAt string   `json:"published_at,omitempty"`
	UpdatedAt   string   `json:"updated_at,omitempty"`
}

Dataset is the public record type: one dataset entry from Harvard Dataverse.

type Domain

type Domain struct{}

Domain is the dataverse driver. It carries no state; the per-run client is built by the factory Register hands kit.

func (Domain) Classify

func (Domain) Classify(input string) (uriType, id string, err error)

Classify turns any accepted input — a bare DOI or a full Dataverse URL — into the canonical (type, id), so `ant resolve` and `ant url` touch no network.

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.

func (Domain) Locate

func (Domain) Locate(uriType, id string) (string, error)

Locate is the inverse: the live https URL for a (type, id).

func (Domain) Register

func (Domain) Register(app *kit.App)

Register installs the client factory and every operation onto app.

Jump to

Keyboard shortcuts

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