cwbdata

package
v0.0.0-...-d0d54b5 Latest Latest
Warning

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

Go to latest
Published: Jul 28, 2018 License: MIT Imports: 7 Imported by: 2

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

func AssignTime

func AssignTime(timeString string, to *time.Time) error

func ParseTime

func ParseTime(timeString string) (t time.Time, err error)

func SetAPIKey

func SetAPIKey(apiKey string)

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 CwbDataSet struct {
	RawData []byte
	DataID  string
}

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)
}

Jump to

Keyboard shortcuts

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