diff options
| author | Christine Dodrill <me@christine.website> | 2019-01-26 07:15:29 -0800 |
|---|---|---|
| committer | Christine Dodrill <me@christine.website> | 2019-01-26 07:15:29 -0800 |
| commit | 59b0848dae3651ab5c03ed8584189ca679e289ba (patch) | |
| tree | 9cce8993b80e8c19c33b417c9db00235f5368cac | |
| parent | 6f65bb438c996ecd9e9d4263b58118835997d6d5 (diff) | |
| download | x-59b0848dae3651ab5c03ed8584189ca679e289ba.tar.xz x-59b0848dae3651ab5c03ed8584189ca679e289ba.zip | |
tg/polyglot: add expvar, protect it
| -rw-r--r-- | tg/polyglot/main.go | 22 |
1 files changed, 20 insertions, 2 deletions
diff --git a/tg/polyglot/main.go b/tg/polyglot/main.go index 3f12936..231980e 100644 --- a/tg/polyglot/main.go +++ b/tg/polyglot/main.go @@ -2,12 +2,17 @@ package main import ( "bytes" + "context" + "expvar" + _ "expvar" "flag" "fmt" "log" + "net/http" "strings" "time" + "github.com/Xe/x/idp/idpmiddleware" "github.com/Xe/x/internal" _ "github.com/Xe/x/tokipona" "github.com/Xe/x/web/tokiponatokens" @@ -16,13 +21,19 @@ import ( "within.website/johaus/parser" _ "within.website/johaus/parser/alldialects" "within.website/johaus/pretty" + "within.website/ln" + "within.website/ln/opname" ) -const tpapiurl = `https://us-central1-golden-cove-408.cloudfunctions.net/toki-pona-verb-marker` +const ( + tpapiurl = `https://us-central1-golden-cove-408.cloudfunctions.net/toki-pona-verb-marker` + selfURL = `http://10.0.0.240:5009/` +) var ( telegramToken = flag.String("telegram-token", "", "telegram bot token") tokiPonaAPIURL = flag.String("toki-pona-tokenizer-api-url", tpapiurl, "toki pona tokenizer API URL") + port = flag.String("port", "5009", "HTTP port for statistics") ) func main() { @@ -31,6 +42,7 @@ func main() { Token: *telegramToken, Poller: &tb.LongPoller{Timeout: 10 * time.Second}, }) + errCount := expvar.NewInt("errors") if err != nil { log.Fatal(err) @@ -42,17 +54,21 @@ func main() { b.Handle("/maftufa", parserCommandFor(b, "maftufa")) b.Handle("/zantufa", parserCommandFor(b, "zantufa")) + tokiCount := expvar.NewInt("toki") b.Handle("/toki", func(m *tb.Message) { defer func() { if r := recover(); r != nil { fmt.Println("Recovered in f", r) + errCount.Add(1) } }() + defer tokiCount.Add(1) msg := m.Payload parts, err := tokiponatokens.Tokenize(*tokiPonaAPIURL, msg) if err != nil { b.Send(m.Sender, err.Error()) + errCount.Add(1) return } @@ -60,7 +76,6 @@ func main() { for _, sentence := range parts { bracesReply := tokiBraces(sentence) - log.Printf("%s: %s", m.Sender.Username, bracesReply) sb.WriteString(bracesReply) sb.WriteRune('\n') } @@ -68,6 +83,9 @@ func main() { b.Send(m.Sender, sb.String()) }) + ln.Log(opname.With(context.Background(), "main"), ln.Info("starting HTTP server"), ln.F{"port": *port, "using": "idpmiddleware", "self_url": selfURL}) + go http.ListenAndServe(":"+*port, idpmiddleware.XeProtect(selfURL)(http.DefaultServeMux)) + b.Start() } |
