Documentation ¶
Index ¶
Examples ¶
Constants ¶
View Source
const ApiUrl = "http://opendata.cwb.gov.tw/opendataapi"
View Source
const CwbTimeFormat = time.RFC3339
Variables ¶
This section is empty.
Functions ¶
Types ¶
type Cache ¶
type Cache interface { Get(dataID string) (data *CwbOpenData, exist bool) GetETag(dataID string) string Save(dataID, eTag string, data *CwbOpenData) }
type CwbDataSet ¶
type CwbDataSource ¶
type CwbDataSource struct {
APIKey string
}
type CwbOpenData ¶
type CwbOpenData struct { Identifier string `xml:"identifier"` Sender string `xml:"sender"` Sent time.Time `xml:"sent"` Status string `xml:"status"` Scope string `xml:"scope"` MsgType string `xml:"msgType"` DataID string `xml:"dataid"` Source string `xml:"source"` DataSet []byte }
func GetOpenData ¶
func GetOpenData(apiKey string, dataID string) (openData *CwbOpenData, err error)
GetOpenData makes API request to retrive data then pass it to GetOpenDataByData.
func GetOpenDataByData ¶
func GetOpenDataByData(data []byte) (openData *CwbOpenData, err error)
GetOpenDataByData unmarshals data to CwbOpenData.
Example ¶
package main import ( "fmt" "log" "testing" "github.com/MinecraftXwinP/twweather/testutil" ) func testParseTime(t *testing.T) { timeStr := "2018-02-03T18:00:00+08:00" time, _ := ParseTime(timeStr) if time.Year() != 2018 { t.Fail() } } func main() { data := testutil.Load("fake_dataset.xml") opendata, err := GetOpenDataByData(data) if err != nil { log.Panic(err) } fmt.Println(opendata.DataID) fmt.Println(opendata.Identifier) fmt.Println(opendata.MsgType) fmt.Println(opendata.Scope) fmt.Println(opendata.Sender) fmt.Println(opendata.Sent.UTC()) fmt.Println(opendata.Source) fmt.Println(opendata.Status) fmt.Println(string(opendata.DataSet)) }
Output: D0047-003 12ef1673-921a-bfdf-39b5-6f57f1d61a5a Issue Public weather@cwb.gov.tw 2018-01-13 09:06:00 +0000 UTC MFC Actual <dataset><a><b>ab</b><c>ac</c></a></dataset>
func (*CwbOpenData) UnmarshalXML ¶
func (openData *CwbOpenData) UnmarshalXML(d *xml.Decoder, start xml.StartElement) error
type OpenDataSource ¶
type OpenDataSource interface {
GetOpenData(dateID string) (CwbOpenData, error)
}
Click to show internal directories.
Click to hide internal directories.