From c3b81b0f04f35c8be63b8daff04829382050644a Mon Sep 17 00:00:00 2001 From: Dimitri Sokolyuk Date: Thu, 9 Jul 2015 18:35:04 +0200 Subject: Update weather --- main.go | 12 +++++++++--- metar.go | 14 +++++++++++--- 2 files changed, 20 insertions(+), 6 deletions(-) diff --git a/main.go b/main.go index efb086e..d5e7b9c 100644 --- a/main.go +++ b/main.go @@ -102,7 +102,7 @@ func (v Help) String() string { return string(v) } func (_ Help) Handle(conn *irc.Conn, line *irc.Line) { var msg []string for k, v := range commands { - msg = append(msg, fmt.Sprintf("%-6s: %v", k, v)) + msg = append(msg, fmt.Sprintf("%-8s%v", k, v)) } sort.Sort(sort.StringSlice(msg)) for _, s := range msg { @@ -114,7 +114,13 @@ func (v Metar) String() string { return string(v) } func (_ Metar) Handle(conn *irc.Conn, line *irc.Line) { f := strings.Fields(line.Text()) if len(f) > 1 { - m, err := FetchMetar(f[1]) + var m []string + var err error + if line.Public() { + m, err = MetarStation(f[1]) + } else { + m, err = MetarDecoded(f[1]) + } if err != nil { conn.Privmsg(line.Target(), err.Error()) return @@ -158,7 +164,7 @@ func init() { Register("news", News("LOR news (msg private to see all)")) Register("bsd", BSD("Undeadly news (msg private to see all)")) Register("help", Help("This help")) - Register("metar", Metar("Current weather, arg: ")) + Register("metar", Metar("Weather (argument: ICAO-Code, msg private for verbose output)")) } func main() { diff --git a/metar.go b/metar.go index 581a158..c19fe6d 100644 --- a/metar.go +++ b/metar.go @@ -1,10 +1,10 @@ package main import ( + "errors" "io/ioutil" "net/http" "strings" - "errors" ) const ( @@ -15,8 +15,8 @@ const ( var notFound = errors.New("not found") -func FetchMetar(s string) ([]string, error) { - loc := noaaDecoded + strings.ToUpper(s[:4]) + ".TXT" +func fetchMetar(base, station string) ([]string, error) { + loc := base + strings.ToUpper(station[:4]) + ".TXT" resp, err := http.Get(loc) if err != nil { return nil, err @@ -31,3 +31,11 @@ func FetchMetar(s string) ([]string, error) { } return strings.Split(strings.TrimSpace(string(body)), "\n"), nil } + +func MetarDecoded(s string) ([]string, error) { + return fetchMetar(noaaDecoded, s) +} + +func MetarStation(s string) ([]string, error) { + return fetchMetar(noaaStations, s) +} -- cgit v1.2.3