darksky

package module
v1.6.0 Latest Latest
Warning

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

Go to latest
Published: Jan 24, 2023 License: MIT Imports: 9 Imported by: 10

README

DarkSky

GoDoc Go Report Card CircleCI

Dark Sky API client in Go https://darksky.net/dev/docs

A note on Apple Weather

DarkSky's technology has been integrated into Apple Weather. I've started a separate project go-weatherkit for Go client development against Apple's new WeatherKit REST API.

Installing

This assumes you already have a working Go environment, if not please see this page first.

go get github.com/shawntoffel/darksky
Usage

Import the package into your project.

import "github.com/shawntoffel/darksky"

Construct a new DarkSky client

client := darksky.New("api key")

Build a request

request := darksky.ForecastRequest{
    Latitude:  40.7128,
    Longitude: -74.0059,
    Options: darksky.ForecastRequestOptions{
        Exclude: "hourly,minutely",
    },
}

Get the forecast

forecast, err := client.Forecast(request)
Configuration

A different API URL may be targeted using the BaseUrl package scoped variable

darksky.BaseUrl = "https://api.darksky.net/forecast"

Documentation

Index

Constants

This section is empty.

Variables

View Source
var (
	BaseUrl = "https://api.darksky.net/forecast"
)

DarkSky API endpoint

Functions

This section is empty.

Types

type Alert

type Alert struct {
	Description string    `json:"description,omitempty"`
	Expires     Timestamp `json:"expires,omitempty"`
	Regions     []string  `json:"regions,omitempty"`
	Severity    string    `json:"severity,omitempty"`
	Time        Timestamp `json:"time,omitempty"`
	Title       string    `json:"title,omitempty"`
	Uri         string    `json:"uri,omitempty"`
}

Alert contains objects representing the severe weather warnings issued for the requested location by a governmental authority

type DarkSky

type DarkSky interface {
	Forecast(request ForecastRequest) (ForecastResponse, error)
}

DarkSky Api client

func New

func New(apiKey string) DarkSky

New creates a new DarkSky client

func NewWithClient

func NewWithClient(apiKey string, client *http.Client) DarkSky

NewWithClient creates a new DarkSky client with custom http.Client

type DataBlock

type DataBlock struct {
	Data    []DataPoint `json:"data,omitempty"`
	Summary string      `json:"summary,omitempty"`
	Icon    string      `json:"icon,omitempty"`
}

DataBlock represents the various weather phenomena occurring over a period of time

type DataPoint

type DataPoint struct {
	ApparentTemperature         Measurement `json:"apparentTemperature,omitempty"`
	ApparentTemperatureHigh     Measurement `json:"apparentTemperatureHigh,omitempty"`
	ApparentTemperatureHighTime Timestamp   `json:"apparentTemperatureHighTime,omitempty"`
	ApparentTemperatureLow      Measurement `json:"apparentTemperatureLow,omitempty"`
	ApparentTemperatureLowTime  Timestamp   `json:"apparentTemperatureLowTime,omitempty"`
	ApparentTemperatureMax      Measurement `json:"apparentTemperatureMax,omitempty"`
	ApparentTemperatureMaxTime  Timestamp   `json:"apparentTemperatureMaxTime,omitempty"`
	ApparentTemperatureMin      Measurement `json:"apparentTemperatureMin,omitempty"`
	ApparentTemperatureMinTime  Timestamp   `json:"apparentTemperatureMinTime,omitempty"`
	CloudCover                  Measurement `json:"cloudCover,omitempty"`
	DewPoint                    Measurement `json:"dewPoint,omitempty"`
	Humidity                    Measurement `json:"humidity,omitempty"`
	Icon                        string      `json:"icon,omitempty"`
	MoonPhase                   Measurement `json:"moonPhase,omitempty"`
	NearestStormBearing         Measurement `json:"nearestStormBearing,omitempty"`
	NearestStormDistance        Measurement `json:"nearestStormDistance,omitempty"`
	Ozone                       Measurement `json:"ozone,omitempty"`
	PrecipAccumulation          Measurement `json:"precipAccumulation,omitempty"`
	PrecipIntensity             Measurement `json:"precipIntensity,omitempty"`
	PrecipIntensityError        Measurement `json:"precipIntensityError,omitempty"`
	PrecipIntensityMax          Measurement `json:"precipIntensityMax,omitempty"`
	PrecipIntensityMaxTime      Timestamp   `json:"precipIntensityMaxTime,omitempty"`
	PrecipProbability           Measurement `json:"precipProbability,omitempty"`
	PrecipType                  string      `json:"precipType,omitempty"`
	Pressure                    Measurement `json:"pressure,omitempty"`
	Summary                     string      `json:"summary,omitempty"`
	SunriseTime                 Timestamp   `json:"sunriseTime,omitempty"`
	SunsetTime                  Timestamp   `json:"sunsetTime,omitempty"`
	Temperature                 Measurement `json:"temperature,omitempty"`
	TemperatureHigh             Measurement `json:"temperatureHigh,omitempty"`
	TemperatureHighTime         Timestamp   `json:"temperatureHighTime,omitempty"`
	TemperatureLow              Measurement `json:"temperatureLow,omitempty"`
	TemperatureLowTime          Timestamp   `json:"temperatureLowTime,omitempty"`
	TemperatureMax              Measurement `json:"temperatureMax,omitempty"`
	TemperatureMaxTime          Timestamp   `json:"temperatureMaxTime,omitempty"`
	TemperatureMin              Measurement `json:"temperatureMin,omitempty"`
	TemperatureMinTime          Timestamp   `json:"temperatureMinTime,omitempty"`
	Time                        Timestamp   `json:"time,omitempty"`
	UvIndex                     int64       `json:"uvIndex,omitempty"`
	UvIndexTime                 Timestamp   `json:"uvIndexTime,omitempty"`
	Visibility                  Measurement `json:"visibility,omitempty"`
	WindBearing                 Measurement `json:"windBearing,omitempty"`
	WindGust                    Measurement `json:"windGust,omitempty"`
	WindGustTime                Timestamp   `json:"windGustTime,omitempty"`
	WindSpeed                   Measurement `json:"windSpeed,omitempty"`
}

DataPoint contains various properties, each representing the average (unless otherwise specified) of a particular weather phenomenon occurring during a period of time.

func (*DataPoint) UnmarshalJSON added in v1.6.0

func (d *DataPoint) UnmarshalJSON(data []byte) error

Custom Unmarshal to handle incoming float uvIndex from other APIs.

type Flags

type Flags struct {
	DarkSkyUnavailable string      `json:"darksky-unavailable,omitempty"`
	NearestStation     Measurement `json:"nearest-station"`
	Sources            []string    `json:"sources,omitempty"`
	Units              string      `json:"units,omitempty"`
}

Flags contains various metadata information related to the request

type ForecastRequest

type ForecastRequest struct {
	Latitude  Measurement
	Longitude Measurement
	Time      Timestamp
	Options   ForecastRequestOptions
}

ForecastRequest contains all available options for requesting a forecast

type ForecastRequestOptions

type ForecastRequestOptions struct {
	Exclude string
	Extend  string
	Lang    string
	Units   string
}

ForecastRequestOptions are optional and passed as query parameters

func (ForecastRequestOptions) Encode added in v1.2.3

func (o ForecastRequestOptions) Encode() string

Encode into URL encoded query string parameters (exclude=hourly&units=si)

type ForecastResponse

type ForecastResponse struct {
	Latitude  Measurement `json:"latitude,omitempty"`
	Longitude Measurement `json:"longitude,omitempty"`
	Timezone  string      `json:"timezone,omitempty"`
	Offset    float64     `json:"offset,omitempty"`
	Currently *DataPoint  `json:"currently,omitempty"`
	Minutely  *DataBlock  `json:"minutely,omitempty"`
	Hourly    *DataBlock  `json:"hourly,omitempty"`
	Daily     *DataBlock  `json:"daily,omitempty"`
	Alerts    []*Alert    `json:"alerts,omitempty"`
	Flags     *Flags      `json:"flags,omitempty"`
}

ForecastResponse is the response containing all requested properties

type Measurement

type Measurement float64

Measurement is a float64 measurement

type Timestamp

type Timestamp int64

Timestamp is an int64 timestamp

Directories

Path Synopsis

Jump to

Keyboard shortcuts

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