aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorChristine Dodrill <me@christine.website>2019-01-26 07:15:29 -0800
committerChristine Dodrill <me@christine.website>2019-01-26 07:15:29 -0800
commit59b0848dae3651ab5c03ed8584189ca679e289ba (patch)
tree9cce8993b80e8c19c33b417c9db00235f5368cac
parent6f65bb438c996ecd9e9d4263b58118835997d6d5 (diff)
downloadx-59b0848dae3651ab5c03ed8584189ca679e289ba.tar.xz
x-59b0848dae3651ab5c03ed8584189ca679e289ba.zip
tg/polyglot: add expvar, protect it
-rw-r--r--tg/polyglot/main.go22
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()
}