api

package
v1.0.170 Latest Latest
Warning

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

Go to latest
Published: May 31, 2022 License: MIT Imports: 20 Imported by: 0

Documentation

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

func ShowUI

func ShowUI(rw http.ResponseWriter, req *http.Request)

ShowUI redirects to the '/ui/' virtual directory

Types

type AlertItem added in v1.0.61

type AlertItem struct {
	Event           string    `json:"event"`            // Short event summary
	Headline        string    `json:"headline"`         // Full headline description
	Description     string    `json:"description"`      // Long description of the event
	Severity        string    `json:"severity"`         // Severity of the event
	Urgency         string    `json:"urgency"`          // Urgency of the event
	AreaDescription string    `json:"area_description"` // Affected Area description
	Sender          string    `json:"sender"`           // Sender (email) of the event
	SenderName      string    `json:"sendername"`       // Sender name of the event
	Start           time.Time `json:"start"`            // Event start time
	End             time.Time `json:"end"`              // Event end time
}

type AlertReport added in v1.0.61

type AlertReport struct {
	Latitude                 float64     `json:"latitude"`     // Latitude
	Longitude                float64     `json:"longitude"`    // Longitude
	City                     string      `json:"city"`         // City name
	State                    string      `json:"state"`        // State name
	NWSCounty                string      `json:"county"`       // National weather service county
	ActiveAlertsForCountyURL string      `json:"alertsurl"`    // URL to see active alerts on the NWS website for the current NWS zone
	Alerts                   []AlertItem `json:"alerts"`       // Active alerts
	Version                  string      `json:"version"`      // Service version
	LastFetched              time.Time   `json:"last_fetched"` // The last time the data was fetched
	Cached                   bool        `json:"cached"`       // 'true' if this data was fetched from cache
}

AlertReport defines an alert report

type AlertRequest added in v1.0.61

type AlertRequest struct {
	Latitude  string `json:"lat"`
	Longitude string `json:"long"`
}

AlertRequest represents a request to get weather alert information for the given coordiates

type CalendarItem added in v1.0.46

type CalendarItem struct {
	UID         string `json:"uid"`
	Summary     string `json:"summary"`
	Description string `json:"description"`
	Starttime   string `json:"starttime"`
	Endtime     string `json:"endtime"`
}

type CalendarRequest added in v1.0.46

type CalendarRequest struct {
	CalendarURL string `json:"url"`
	Timezone    string `json:"timezone"`
}

CalendarRequest represents a request to get calendar information for the given iCal url and timezone

type CalendarResponse added in v1.0.46

type CalendarResponse struct {
	Timezone         string         `json:"timezone"`
	Currentlocaltime string         `json:"currentlocaltime"`
	Events           []CalendarItem `json:"events"`
	Version          string         `json:"version"`
}

CalendarResponse represents the response from the calendar service

type CalendarView added in v1.0.51

type CalendarView struct {
	Items            []CalendarItem `json:"items"`
	Timezone         string         `json:"timezone"`
	Currentlocaltime string         `json:"currentlocaltime"`
	LastFetched      time.Time      `json:"last_fetched"` // The last time the data was fetched
	Cached           bool           `json:"cached"`       // 'true' if this data was fetched from cache
}

CalendarView represents the data sent to the dashboard for the calendar view

type ErrorResponse added in v1.0.37

type ErrorResponse struct {
	Message string `json:"message"`
}

ErrorResponse represents an API response

type Hub

type Hub struct {

	// Inbound messages from the connections.
	Broadcast chan []byte
	// contains filtered or unexported fields
}

Hub is a connection hub for websockets

func NewHub

func NewHub() *Hub

NewHub is a constructor for new connection Hubs

type MapImageRequest added in v1.0.143

type MapImageRequest struct {
	Lat  float64 `json:"lat"`
	Long float64 `json:"long"`
	Zoom int     `json:"zoom"`
}

MapImageRequest represents a request to get pollen information for the given zipcode

type MapImageResponse added in v1.0.143

type MapImageResponse struct {
	Lat     float64 `json:"lat"`
	Long    float64 `json:"long"`
	Zoom    int     `json:"zoom"`
	Image   string  `json:"image"`   // The map image (in base64 encoded data uri format)
	Version string  `json:"version"` // Service version
}

type NewsItem added in v1.0.46

type NewsItem struct {
	ID         string `json:"id"`
	CreateTime int64  `json:"createtime"`
	Text       string `json:"text"`
	MediaURL   string `json:"mediaurl"`
	MediaData  string `json:"mediadata"`
	StoryURL   string `json:"storyurl"`
}

NewsItem represents a single news item

type NewsReport added in v1.0.46

type NewsReport struct {
	Items       []NewsItem `json:"items"`
	Version     string     `json:"version"`
	LastFetched time.Time  `json:"last_fetched"` // The last time the data was fetched
	Cached      bool       `json:"cached"`       // 'true' if this data was fetched from cache
}

NewsReport defines a news report

type PollenReport added in v1.0.43

type PollenReport struct {
	Location          string    `json:"location"`           // The location for the report
	Zipcode           string    `json:"zip"`                // The zipcode for the report
	PredominantPollen string    `json:"predominant_pollen"` // The predominant pollen in the report period
	StartDate         time.Time `json:"startdate"`          // The start time for this report
	Data              []float64 `json:"data"`               //	Pollen data indices -- one for today and each future day
	ReportingService  string    `json:"service"`            // The reporting service
	Version           string    `json:"version"`            // Service version information
	LastFetched       time.Time `json:"last_fetched"`       // The last time the data was fetched
	Cached            bool      `json:"cached"`             // 'true' if this data was fetched from cache
}

PollenReport represents the report of pollen data

type PollenRequest added in v1.0.43

type PollenRequest struct {
	ZipCode string `json:"zipcode"`
}

PollenRequest represents a request to get pollen information for the given zipcode

type QuakeReport added in v1.0.48

type QuakeReport struct {
	Type     string `json:"type"`
	Metadata struct {
		Generated int64  `json:"generated"`
		URL       string `json:"url"`
		Title     string `json:"title"`
		Status    int    `json:"status"`
		API       string `json:"api"`
		Count     int    `json:"count"`
	} `json:"metadata"`
	Features []struct {
		Type       string `json:"type"`
		Properties struct {
			Mag     float64     `json:"mag"`   // The earthquake magnitude
			Place   string      `json:"place"` // The earthquake 'place' / name
			Time    int64       `json:"time"`  // The time the earthquake event happened, in UTC
			Updated int64       `json:"updated"`
			Tz      interface{} `json:"tz"`
			URL     string      `json:"url"`
			Detail  string      `json:"detail"`
			Felt    interface{} `json:"felt"`
			Cdi     interface{} `json:"cdi"`
			Mmi     float64     `json:"mmi"`
			Alert   string      `json:"alert"` // The alert color (“green”, “yellow”, “orange”, “red”) this is a summary of the estimate of fatalities and economic losses
			Status  string      `json:"status"`
			Tsunami int         `json:"tsunami"` // This flag is set to "1" for large events in oceanic regions and "0" otherwise. The existence or value of this flag does not indicate if a tsunami actually did or will exist.
			Sig     int         `json:"sig"`
			Net     string      `json:"net"`
			Code    string      `json:"code"`
			Ids     string      `json:"ids"`
			Sources string      `json:"sources"`
			Types   string      `json:"types"`
			Nst     interface{} `json:"nst"`
			Dmin    float64     `json:"dmin"`
			Rms     float64     `json:"rms"`
			Gap     float64     `json:"gap"`
			MagType string      `json:"magType"`
			Type    string      `json:"type"`
			Title   string      `json:"title"`
		} `json:"properties"`
		Geometry struct {
			Type        string    `json:"type"`
			Coordinates []float64 `json:"coordinates"` // Long at lat of the earthquake origin
		} `json:"geometry"`
		ID string `json:"id"`
	} `json:"features"`
	Bbox        []float64 `json:"bbox"`
	LastFetched time.Time `json:"last_fetched"` // The last time the data was fetched
	Cached      bool      `json:"cached"`       // 'true' if this data was fetched from cache
}

QuakeReport represents the report of earthquake data For a data dictionary for these fields, please see https://earthquake.usgs.gov/data/comcat/data-eventterms.php For a data types reference for this structure, please see https://earthquake.usgs.gov/earthquakes/feed/v1.0/geojson.php

type RemoveConfigRequest added in v1.0.39

type RemoveConfigRequest struct {
	Name string `json:"name"`
}

RemoveConfigRequest represents a 'remove config' request

type Service

type Service struct {
	DB        *data.Manager
	StartTime time.Time

	// WsHub is the websocket hub connection for
	// broadcasting config changes to anybody interested
	WsHub *Hub

	// Cache is a runtime in-memory cache
	Cache *cache.Cache
}

Service encapsulates API service operations

func (Service) DeleteCache added in v1.0.56

func (service Service) DeleteCache(rw http.ResponseWriter, req *http.Request)

DeleteCache godoc @Summary Removes all cached items @Description Removes all cached items @Tags cache @Accept json @Produce json @Success 200 {object} api.SystemResponse @Failure 500 {object} api.ErrorResponse @Router /cache [delete]

func (Service) GetCalendar added in v1.0.46

func (service Service) GetCalendar(rw http.ResponseWriter, req *http.Request)

GetCalendar godoc @Summary Gets today's calendar data for the given iCal url and timezone @Description Gets today's calendar data for the given iCal url and timezone @Tags dashboard @Accept json @Produce json @Success 200 {object} api.SystemResponse @Failure 400 {object} api.ErrorResponse @Failure 424 {object} api.ErrorResponse @Failure 500 {object} api.ErrorResponse @Router /dashboard/calendar [get]

func (Service) GetConfig

func (service Service) GetConfig(rw http.ResponseWriter, req *http.Request)

GetConfig godoc @Summary Gets application config @Description Gets application config @Tags config @Accept json @Produce json @Success 200 {object} api.SystemResponse @Failure 500 {object} api.ErrorResponse @Router /config [get]

func (Service) GetEarthquakes added in v1.0.48

func (service Service) GetEarthquakes(rw http.ResponseWriter, req *http.Request)

GetEarthquakes godoc @Summary Gets earthquake data for significant quakes in the last month @Description Gets earthquake data for significant quakes in the last month @Tags dashboard @Accept json @Produce json @Success 200 {object} api.SystemResponse @Failure 424 {object} api.ErrorResponse @Failure 500 {object} api.ErrorResponse @Router /dashboard/earthquakes [get]

func (Service) GetGeoForZipcode added in v1.0.63

func (service Service) GetGeoForZipcode(rw http.ResponseWriter, req *http.Request)

GetGeoForZipcode godoc @Summary Gets lat/long data for the given zipcode @Description Gets lat/long data for the given zipcode @Tags dashboard @Accept json @Produce json @Param zipcode path string true "The zipcode to get lat/long informtion for" @Success 200 {object} api.SystemResponse @Failure 400 {object} api.ErrorResponse @Failure 424 {object} api.ErrorResponse @Failure 500 {object} api.ErrorResponse @Router /dashboard/zipgeo/{zipcode} [get]

func (Service) GetMapImageForCoordinates added in v1.0.68

func (service Service) GetMapImageForCoordinates(rw http.ResponseWriter, req *http.Request)

GetMapImageForCoordinates godoc @Summary gets a map image for the given coordinates

func (Service) GetNews added in v1.0.46

func (service Service) GetNews(rw http.ResponseWriter, req *http.Request)

GetNews godoc @Summary Gets current breaking news, photos, and link @Description Gets current breaking news, photos, and link @Tags dashboard @Accept json @Produce json @Success 200 {object} api.SystemResponse @Failure 424 {object} api.ErrorResponse @Failure 500 {object} api.ErrorResponse @Router /dashboard/news [get]

func (Service) GetPollen added in v1.0.43

func (service Service) GetPollen(rw http.ResponseWriter, req *http.Request)

GetPollen godoc @Summary Gets pollen data for the given zipcode @Description Gets pollen data for the given zipcode @Tags dashboard @Accept json @Produce json @Success 200 {object} api.SystemResponse @Failure 400 {object} api.ErrorResponse @Failure 424 {object} api.ErrorResponse @Failure 500 {object} api.ErrorResponse @Router /dashboard/pollen [get]

func (Service) GetSystemEndpoints added in v1.0.68

func (service Service) GetSystemEndpoints(rw http.ResponseWriter, req *http.Request)

GetSystemEndpoints godoc @Summary Gets the base network endpoints for the REST service and the UI @Description Gets the base network endpoints for the REST service and the UI @Tags system @Accept json @Produce json @Success 200 {object} api.SystemResponse @Failure 500 {object} api.ErrorResponse @Router /system/endpoints [get]

func (Service) GetTimezone added in v1.0.136

func (service Service) GetTimezone(rw http.ResponseWriter, req *http.Request)

GetTimezone godoc @Summary Gets the current timezone @Description Gets the current timezone @Tags system @Accept json @Produce json @Success 200 {object} api.SystemResponse @Failure 500 {object} api.ErrorResponse @Router /system/timezone [get]

func (Service) GetWeather added in v1.0.46

func (service Service) GetWeather(rw http.ResponseWriter, req *http.Request)

GetWeather godoc @Summary Gets weather data for the given coordinates @Description Gets weather data for the given coordinates @Tags dashboard @Accept json @Produce json @Success 200 {object} api.SystemResponse @Failure 400 {object} api.ErrorResponse @Failure 424 {object} api.ErrorResponse @Failure 500 {object} api.ErrorResponse @Router /dashboard/weather [get]

func (Service) GetWeatherAlerts added in v1.0.61

func (service Service) GetWeatherAlerts(rw http.ResponseWriter, req *http.Request)

GetWeatherAlerts godoc @Summary Gets weather alert data for the given coordinates @Description Gets weather alert data for the given coordinates @Tags dashboard @Accept json @Produce json @Success 200 {object} api.SystemResponse @Failure 400 {object} api.ErrorResponse @Failure 424 {object} api.ErrorResponse @Failure 500 {object} api.ErrorResponse @Router /dashboard/nwsalerts [get]

func (Service) GetWifiAPs added in v1.0.82

func (service Service) GetWifiAPs(rw http.ResponseWriter, req *http.Request)

GetWifiAPs godoc @Summary Gets available nearby wifi access points, including signal strength and whether or not it's open/encrypted @Description Gets available nearby wifi access points, including signal strength and whether or not it's open/encrypted @Tags system @Accept json @Produce json @Success 200 {object} api.SystemResponse @Failure 500 {object} api.ErrorResponse @Router /system/wifiaps [get]

func (Service) SetConfig

func (service Service) SetConfig(rw http.ResponseWriter, req *http.Request)

SetConfig godoc @Summary Sets system config item(s) and broadcasts the change on the websocket @Description Sets system config item(s) and broadcasts the change on the websocket @Tags config @Accept json @Produce json @Param config body data.SystemConfig true "The config data to update" @Success 200 {object} api.SystemResponse @Failure 400 {object} api.ErrorResponse @Failure 500 {object} api.ErrorResponse @Router /config [post]

func (Service) SetTimezone added in v1.0.136

func (service Service) SetTimezone(rw http.ResponseWriter, req *http.Request)

SetTimezone godoc @Summary Sets the timezone @Description Sets the timezone @Tags system @Accept json @Produce json @Param wifiap body api.SystemSetTimezoneRequest true "The timezone to use" @Success 200 {object} api.SystemResponse @Failure 500 {object} api.ErrorResponse @Router /system/timezone [post]

func (Service) SetWifiConfig added in v1.0.114

func (service Service) SetWifiConfig(rw http.ResponseWriter, req *http.Request)

SetWifiConfig godoc @Summary Sets the default Wifi network to use @Description Sets the default Wifi network to use @Tags system @Accept json @Produce json @Param wifiap body api.SystemSetWifiRequest true "The wifi settings to use" @Success 200 {object} api.SystemResponse @Failure 500 {object} api.ErrorResponse @Router /system/wifiap [post]

type SetConfigRequest added in v1.0.39

type SetConfigRequest struct {
	Name  string `json:"name"`
	Value string `json:"value"`
}

SetConfigRequest represents a 'set config' request

type SpaHandler added in v1.0.41

type SpaHandler struct {
	StaticPath string
	IndexPath  string
}

SpaHandler implements the http.Handler interface, so we can use it to respond to HTTP requests. The path to the static directory and path to the index file within that static directory are used to serve the SPA in the given static directory.

func (SpaHandler) ServeHTTP added in v1.0.41

func (h SpaHandler) ServeHTTP(w http.ResponseWriter, r *http.Request)

ServeHTTP inspects the URL path to locate a file within the static dir on the SPA handler. If a file is found, it will be served. If not, the file located at the index path on the SPA handler will be served. This is suitable behavior for serving an SPA (single page application).

type SystemRemoteIPResponse added in v1.0.68

type SystemRemoteIPResponse struct {
	ServiceEndpoint string `json:"service"`
	UIEndpoint      string `json:"ui"`
}

SystemRemoteIPResponse represents a response to GetRemoteIP

type SystemResponse

type SystemResponse struct {
	Message string      `json:"message"`
	Data    interface{} `json:"data"`
}

SystemResponse is a response for a system request

type SystemSetTimezoneRequest added in v1.0.144

type SystemSetTimezoneRequest struct {
	Timezone string `json:"timezone"`
}

SystemSetTimezoneRequest represents a request to set the current timezone

type SystemSetWifiRequest added in v1.0.114

type SystemSetWifiRequest struct {
	SSID     string `json:"ssid"`
	Password string `json:"password"`
}

SystemSetWifiRequest represents a request to set the current wifi network

type WeatherDataBlock added in v1.0.46

type WeatherDataBlock struct {
	Summary string             `json:"summary"`
	Icon    string             `json:"icon"`
	Data    []WeatherDataPoint `json:"data"`
}

WeatherDataBlock defines a group of data points

type WeatherDataPoint added in v1.0.46

type WeatherDataPoint struct {
	Time                int64   `json:"time"`
	Summary             string  `json:"summary"`
	Icon                string  `json:"icon"`
	PrecipIntensity     float64 `json:"precipIntensity"`
	PrecipIntensityMax  float64 `json:"precipIntensityMax"`
	PrecipProbability   float64 `json:"precipProbability"`
	PrecipType          string  `json:"precipType"`
	PrecipAccumulation  float64 `json:"precipAccumulation"`
	Temperature         float64 `json:"temperature"`
	TemperatureMin      float64 `json:"temperatureMin"`
	TemperatureMax      float64 `json:"temperatureMax"`
	ApparentTemperature float64 `json:"apparentTemperature"`
	WindSpeed           float64 `json:"windSpeed"`
	WindGust            float64 `json:"windGust"`
	WindBearing         float64 `json:"windBearing"`
	CloudCover          float64 `json:"cloudCover"`
	Humidity            float64 `json:"humidity"`
	Pressure            float64 `json:"pressure"`
	Visibility          float64 `json:"visibility"`
	Ozone               float64 `json:"ozone"`
	UVIndex             float64 `json:"uvindex"`
}

WeatherDataPoint defines a weather data point

type WeatherReport added in v1.0.46

type WeatherReport struct {
	Latitude    float64            `json:"latitude"`
	Longitude   float64            `json:"longitude"`
	Currently   WeatherDataPoint   `json:"currently"`
	Daily       WeatherDataBlock   `json:"daily"`
	Hourly      []WeatherDataPoint `json:"hourly"`
	APICalls    int                `json:"apicalls"`
	Code        int                `json:"code"`
	Version     string             `json:"version"`
	LastFetched time.Time          `json:"last_fetched"` // The last time the data was fetched
	Cached      bool               `json:"cached"`       // 'true' if this data was fetched from cache
}

WeatherReport defines a weather report

type WeatherRequest added in v1.0.46

type WeatherRequest struct {
	Latitude  string `json:"lat"`
	Longitude string `json:"long"`
}

WeatherRequest represents a request to get weather information for the given coordiates

type WsHandler

type WsHandler struct {
	H *Hub
}

WsHandler websocket handler

func (WsHandler) ServeHTTP

func (wsh WsHandler) ServeHTTP(w http.ResponseWriter, r *http.Request)

type ZipGeoRequest added in v1.0.63

type ZipGeoRequest struct {
	Zipcode string `json:"zipcode"`
}

ZipGeoRequest represents a request to the zipgeo service

type ZipGeoResponse added in v1.0.63

type ZipGeoResponse struct {
	Zipcode     int       `json:"zipcode"`      // US zipcode
	Latitude    float64   `json:"latitude"`     // Latitude
	Longitude   float64   `json:"longitude"`    // Longitude
	Version     string    `json:"version"`      // Service version
	LastFetched time.Time `json:"last_fetched"` // The last time the data was fetched
	Cached      bool      `json:"cached"`       // 'true' if this data was fetched from cache
}

ZipGeo defines a zipcode -> lat,long lookup result

Jump to

Keyboard shortcuts

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