mirror of https://github.com/velour/catbase.git
Merge branch 'stats'
* stats: stats: Add a dumb URL for getting all stats from the db gitignore: get rid of swp files
This commit is contained in:
commit
ae75b23252
|
@ -24,3 +24,4 @@ catbase
|
||||||
config.json
|
config.json
|
||||||
*.db
|
*.db
|
||||||
vendor
|
vendor
|
||||||
|
**/*.swp
|
||||||
|
|
|
@ -67,5 +67,9 @@
|
||||||
},
|
},
|
||||||
"Reminder": {
|
"Reminder": {
|
||||||
"MaxBatchAdd" : 10
|
"MaxBatchAdd" : 10
|
||||||
|
},
|
||||||
|
"Stats": {
|
||||||
|
"DBPath": "stats.db",
|
||||||
|
"Sightings": ["user"]
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -5,7 +5,10 @@ package stats
|
||||||
|
|
||||||
import (
|
import (
|
||||||
"encoding/json"
|
"encoding/json"
|
||||||
|
"fmt"
|
||||||
"log"
|
"log"
|
||||||
|
"net/http"
|
||||||
|
"os"
|
||||||
"strings"
|
"strings"
|
||||||
"time"
|
"time"
|
||||||
|
|
||||||
|
@ -91,7 +94,7 @@ func statFromDB(path, day, bucket, key string) (stat, error) {
|
||||||
buk := []byte(bucket)
|
buk := []byte(bucket)
|
||||||
k := []byte(key)
|
k := []byte(key)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
log.Printf("Couldn't open BoltDB for stats: %s", err)
|
log.Printf("Couldn't open BoltDB for stats (%s): %s", path, err)
|
||||||
return stat{}, err
|
return stat{}, err
|
||||||
}
|
}
|
||||||
defer db.Close()
|
defer db.Close()
|
||||||
|
@ -132,7 +135,7 @@ func statFromDB(path, day, bucket, key string) (stat, error) {
|
||||||
func (s stats) toDB(path string) error {
|
func (s stats) toDB(path string) error {
|
||||||
db, err := bolt.Open(path, 0600, &bolt.Options{Timeout: 1 * time.Second})
|
db, err := bolt.Open(path, 0600, &bolt.Options{Timeout: 1 * time.Second})
|
||||||
if err != nil {
|
if err != nil {
|
||||||
log.Printf("Couldn't open BoltDB for stats: %s", err)
|
log.Printf("Couldn't open BoltDB for stats (%s): %s", path, err)
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
defer db.Close()
|
defer db.Close()
|
||||||
|
@ -212,8 +215,20 @@ func (p *StatsPlugin) BotMessage(message msg.Message) bool {
|
||||||
func (p *StatsPlugin) Help(e string, m []string) {
|
func (p *StatsPlugin) Help(e string, m []string) {
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func (p *StatsPlugin) serveQuery(w http.ResponseWriter, r *http.Request) {
|
||||||
|
f, err := os.Open(p.bot.Config().Stats.DBPath)
|
||||||
|
if err != nil {
|
||||||
|
log.Printf("Error opening DB for web service: %s", err)
|
||||||
|
fmt.Fprintf(w, "Error opening DB")
|
||||||
|
return
|
||||||
|
}
|
||||||
|
http.ServeContent(w, r, "stats.db", time.Now(), f)
|
||||||
|
}
|
||||||
|
|
||||||
func (p *StatsPlugin) RegisterWeb() *string {
|
func (p *StatsPlugin) RegisterWeb() *string {
|
||||||
return nil
|
http.HandleFunc("/stats", p.serveQuery)
|
||||||
|
tmp := "/stats"
|
||||||
|
return &tmp
|
||||||
}
|
}
|
||||||
|
|
||||||
func (p *StatsPlugin) mkUserStat(message msg.Message) stats {
|
func (p *StatsPlugin) mkUserStat(message msg.Message) stats {
|
||||||
|
|
Loading…
Reference in New Issue