Compare commits

..

2 Commits

Author SHA1 Message Date
Chris Sexton f2153bf0b4 counter: maybe finish this feature 2023-09-29 11:01:46 -04:00
Chris Sexton 5de82d96e4 counter: maybe count some stuff better via API 2023-09-29 10:48:23 -04:00
1 changed files with 17 additions and 8 deletions

View File

@ -7,6 +7,7 @@ import (
"github.com/velour/catbase/bot/user" "github.com/velour/catbase/bot/user"
"io/ioutil" "io/ioutil"
"net/http" "net/http"
"net/url"
"strconv" "strconv"
"time" "time"
@ -39,8 +40,8 @@ func (p *CounterPlugin) registerWeb() {
func (p *CounterPlugin) mkIncrementByNAPI(direction int) func(w http.ResponseWriter, r *http.Request) { func (p *CounterPlugin) mkIncrementByNAPI(direction int) func(w http.ResponseWriter, r *http.Request) {
return func(w http.ResponseWriter, r *http.Request) { return func(w http.ResponseWriter, r *http.Request) {
userName := chi.URLParam(r, "user") userName, _ := url.QueryUnescape(chi.URLParam(r, "user"))
itemName := chi.URLParam(r, "item") itemName, _ := url.QueryUnescape(chi.URLParam(r, "item"))
delta, _ := strconv.Atoi(chi.URLParam(r, "delta")) delta, _ := strconv.Atoi(chi.URLParam(r, "delta"))
secret, pass, ok := r.BasicAuth() secret, pass, ok := r.BasicAuth()
@ -85,7 +86,11 @@ func (p *CounterPlugin) mkIncrementByNAPI(direction int) func(w http.ResponseWri
personalMsg = fmt.Sprintf("\nMessage: %s", inputMsg) personalMsg = fmt.Sprintf("\nMessage: %s", inputMsg)
} }
chs := p.cfg.GetArray("channels", []string{p.cfg.Get("channels", "none")}) chs := p.cfg.GetMap("counter.channelItems", map[string]string{})
ch, ok := chs[itemName]
if len(chs) == 0 || !ok {
return
}
req := &bot.Request{ req := &bot.Request{
Conn: p.b.DefaultConnector(), Conn: p.b.DefaultConnector(),
Kind: bot.Message, Kind: bot.Message,
@ -93,7 +98,7 @@ func (p *CounterPlugin) mkIncrementByNAPI(direction int) func(w http.ResponseWri
User: &u, User: &u,
// Noting here that we're only going to do goals in a "default" // Noting here that we're only going to do goals in a "default"
// channel even if it should send updates to others. // channel even if it should send updates to others.
Channel: chs[0], Channel: ch,
Body: fmt.Sprintf("%s += %d", itemName, delta), Body: fmt.Sprintf("%s += %d", itemName, delta),
Time: time.Now(), Time: time.Now(),
}, },
@ -114,8 +119,8 @@ func (p *CounterPlugin) mkIncrementByNAPI(direction int) func(w http.ResponseWri
func (p *CounterPlugin) mkIncrementAPI(delta int) func(w http.ResponseWriter, r *http.Request) { func (p *CounterPlugin) mkIncrementAPI(delta int) func(w http.ResponseWriter, r *http.Request) {
return func(w http.ResponseWriter, r *http.Request) { return func(w http.ResponseWriter, r *http.Request) {
userName := chi.URLParam(r, "user") userName, _ := url.QueryUnescape(chi.URLParam(r, "user"))
itemName := chi.URLParam(r, "item") itemName, _ := url.QueryUnescape(chi.URLParam(r, "item"))
secret, pass, ok := r.BasicAuth() secret, pass, ok := r.BasicAuth()
if !ok || !p.b.CheckPassword(secret, pass) { if !ok || !p.b.CheckPassword(secret, pass) {
@ -159,7 +164,11 @@ func (p *CounterPlugin) mkIncrementAPI(delta int) func(w http.ResponseWriter, r
personalMsg = fmt.Sprintf("\nMessage: %s", inputMsg) personalMsg = fmt.Sprintf("\nMessage: %s", inputMsg)
} }
chs := p.cfg.GetArray("channels", []string{p.cfg.Get("channels", "none")}) chs := p.cfg.GetMap("counter.channelItems", map[string]string{})
ch, ok := chs[itemName]
if len(chs) == 0 || !ok {
return
}
req := &bot.Request{ req := &bot.Request{
Conn: p.b.DefaultConnector(), Conn: p.b.DefaultConnector(),
Kind: bot.Message, Kind: bot.Message,
@ -167,7 +176,7 @@ func (p *CounterPlugin) mkIncrementAPI(delta int) func(w http.ResponseWriter, r
User: &u, User: &u,
// Noting here that we're only going to do goals in a "default" // Noting here that we're only going to do goals in a "default"
// channel even if it should send updates to others. // channel even if it should send updates to others.
Channel: chs[0], Channel: ch,
Body: fmt.Sprintf("%s += %d", itemName, delta), Body: fmt.Sprintf("%s += %d", itemName, delta),
Time: time.Now(), Time: time.Now(),
}, },