package db

import (
	"fmt"
	"log"
	"net/http"
	"os"
	"time"

	"github.com/velour/catbase/bot"
	"github.com/velour/catbase/bot/msg"
	"github.com/velour/catbase/config"
)

type DBPlugin struct {
	bot    bot.Bot
	config *config.Config
}

func New(b bot.Bot) *DBPlugin {
	p := &DBPlugin{b, b.Config()}
	p.registerWeb()
	return p
}

func (p *DBPlugin) Message(message msg.Message) bool            { return false }
func (p *DBPlugin) Event(kind string, message msg.Message) bool { return false }
func (p *DBPlugin) ReplyMessage(msg.Message, string) bool       { return false }
func (p *DBPlugin) BotMessage(message msg.Message) bool         { return false }
func (p *DBPlugin) Help(channel string, parts []string)         {}

func (p *DBPlugin) registerWeb() {
	http.HandleFunc("/db/catbase.db", p.serveQuery)
}

func (p *DBPlugin) serveQuery(w http.ResponseWriter, r *http.Request) {
	f, err := os.Open(p.bot.Config().DBFile)
	defer f.Close()
	if err != nil {
		log.Printf("Error opening DB for web service: %s", err)
		fmt.Fprintf(w, "Error opening DB")
		return
	}
	http.ServeContent(w, r, "catbase.db", time.Now(), f)
}