NOAA.Observations (NOAA Observations v0.4.65)

View Source

Fetches weather observations for a US state/territory code.

Summary

Types

t()

A map of station observations/errors

Functions

Fetches weather observations for a state_code.

Types

t()

@type t() :: %{
  optional(:ok) => [NOAA.Observations.Station.observation()],
  optional(:error) => [NOAA.Observations.Station.error()]
}

A map of station observations/errors

Functions

fetch(state_code, options \\ [])

Fetches weather observations for a state_code.

Parameters

  • state_code - US state/territory code

Examples

iex> alias NOAA.Observations
iex> alias NOAA.Observations.TemplatesAgent
iex> :ok = TemplatesAgent.refresh()
iex> %{ok: observations} = Observations.fetch("VT")
iex> Enum.all?(observations, &is_map/1) and length(observations) > 0
true

iex> alias NOAA.Observations
iex> alias NOAA.Observations.TemplatesAgent
iex> template =
...>   "http://forecast.weather.gov/xml/current_obs" <>
...>     "/seek.php?state=<%=state_code%>&Find=Find"
iex> TemplatesAgent.update_state_template(template)
iex> {:error,
...>  %{
...>    error_code: 301,
...>    error_text: "Moved Permanently",
...>    state_url: url
...>  }} = Observations.fetch("VT")
iex> url
"http://forecast.weather.gov/xml/current_obs/seek.php?state=VT&Find=Find"

iex> alias NOAA.Observations
iex> alias NOAA.Observations.TemplatesAgent
iex> template =
...>   "https://www.weather.gov/xml/current_obs" <>
...>     "/seek.php?state=<%=state_code%>&Find=Find"
iex> TemplatesAgent.update_state_template(template)
iex> {:error,
...>  %{
...>    error_code: 302,
...>    error_text: "Found (Moved Temporarily)",
...>    state_url: url
...>  }} = Observations.fetch("VT")
...> url
"https://www.weather.gov/xml/current_obs/seek.php?state=VT&Find=Find"

iex> alias NOAA.Observations
iex> alias NOAA.Observations.TemplatesAgent
iex> template =
...>   "https://forecast.weather.gov/xml/past_obs" <>
...>     "/seek.php?state=<%=state_code%>&Find=Find"
iex> TemplatesAgent.update_state_template(template)
iex> {:error,
...>  %{error_code: 404, error_text: "Not Found", state_url: url}} =
...>   Observations.fetch("VT")
iex> url
"https://forecast.weather.gov/xml/past_obs/seek.php?state=VT&Find=Find"

iex> alias NOAA.Observations
iex> alias NOAA.Observations.TemplatesAgent
iex> template =
...>   "htp://forecast.weather.gov/xml/current_obs" <>
...>     "/seek.php?state=<%=state_code%>&Find=Find"
iex> TemplatesAgent.update_state_template(template)
iex> {:error,
...>  %{
...>    error_code: :nxdomain,
...>    error_text: "Non-Existent Domain",
...>    state_url: url
...>  }} = Observations.fetch("VT")
iex> url
"htp://forecast.weather.gov/xml/current_obs/seek.php?state=VT&Find=Find"

iex> alias NOAA.Observations
iex> alias NOAA.Observations.TemplatesAgent
iex> template = "http://localhost:65535"
iex> TemplatesAgent.update_state_template(template)
iex> {:error,
...>  %{
...>    error_code: :econnrefused,
...>    error_text: "Connection Refused By Server",
...>    state_url: url
...>  }} = Observations.fetch("VT")
iex> url
"http://localhost:65535"