Documentation
¶
Overview ¶
Package nasapower is the library behind the nasapower command line: the HTTP client, request shaping, and the typed data models for the NASA POWER (Prediction Of Worldwide Energy Resources) API.
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.
Index ¶
- Constants
- type Client
- func (c *Client) Daily(ctx context.Context, lat, lon float64, start, end, params, community string) ([]Observation, error)
- func (c *Client) Get(ctx context.Context, url string) ([]byte, error)
- func (c *Client) Monthly(ctx context.Context, lat, lon float64, start, end, params, community string) ([]Observation, error)
- type Domain
- type Observation
Constants ¶
const BaseURL = "https://" + Host
BaseURL is the root every request is built from.
const DefaultUserAgent = "nasapower/dev (+https://github.com/tamnd/nasapower-cli)"
DefaultUserAgent identifies the client to the NASA POWER API.
const Host = "power.larc.nasa.gov"
Host is the NASA POWER API host.
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 NASA POWER API over HTTP.
func NewClient ¶
func NewClient() *Client
NewClient returns a Client with sensible defaults: a 30s timeout, a 500ms minimum gap between requests (NASA POWER recommends being polite), and five retries on transient errors.
func (*Client) Daily ¶
func (c *Client) Daily(ctx context.Context, lat, lon float64, start, end, params, community string) ([]Observation, error)
Daily fetches daily observations for the given latitude/longitude between start and end (both YYYYMMDD). params is a comma-separated list of NASA POWER parameter codes, e.g. "T2M,PRECTOTCORR,WS2M". community is one of RE, SB, or AG.
type Domain ¶
type Domain struct{}
Domain is the NASA POWER 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 the canonical (type, id). A coordinate pair "lat,lon" classifies as a "point"; a date string (YYYYMMDD or YYYYMM) classifies as a "date".
func (Domain) Info ¶
func (Domain) Info() kit.DomainInfo
Info describes the scheme, hostnames a pasted link is matched against, and the identity used for the binary's help and version.
type Observation ¶
type Observation struct {
Lat float64 `kit:"id" json:"lat"`
Lon float64 `json:"lon"`
Date string `json:"date"` // YYYYMMDD for daily, YYYYMM for monthly
Parameter string `json:"parameter"` // e.g. T2M, PRECTOTCORR
Value float64 `json:"value"`
}
Observation is one data point from the NASA POWER API: a single parameter value for a single date at a single geographic coordinate.