summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDimitri Sokolyuk <demon@dim13.org>2015-07-09 18:35:04 +0200
committerDimitri Sokolyuk <demon@dim13.org>2015-07-09 18:35:04 +0200
commitc3b81b0f04f35c8be63b8daff04829382050644a (patch)
treef6a973df89362f9f674cb6708b59f92057da4df9
parenta2eaa8cd75a5b167cf6dbd3dd8c6414cc4239f11 (diff)
Update weather
-rw-r--r--main.go12
-rw-r--r--metar.go14
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: <ICAO>"))
+ 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)
+}