package main

import (
	"html/template"
	"log"
	"net/http"

	"code.secondbit.org/auth.hg"
	"github.com/gorilla/mux"
)

func main() {
	p, err := auth.NewPostgres("dbname=testdb sslmode=disable")
	if err != nil {
		panic(err)
	}
	store := auth.NewMemstore()
	if err != nil {
		panic(err)
	}
	config := auth.Config{
		ClientStore:   store,
		AuthCodeStore: store,
		ProfileStore:  &p,
		TokenStore:    store,
		SessionStore:  store,
		ScopeStore:    store,
		Template:      template.Must(template.New("base").ParseGlob("./templates/*.gotmpl")),
		LoginURI:      "/login",
	}
	err = config.Init()
	if err != nil {
		log.Fatal(err)
	}
	context, err := auth.NewContext(config)
	if err != nil {
		panic(err)
	}
	err = context.CreateScopes([]auth.Scope{
		{ID: "testscope", Name: "Test Scope"},
	})

	router := mux.NewRouter()
	auth.RegisterOAuth2(router, context)
	auth.RegisterSessionHandlers(router, context)
	auth.RegisterProfileHandlers(router, context)
	auth.RegisterClientHandlers(router, context)
	http.Handle("/", router)
	log.Fatal(http.ListenAndServe(":8080", nil))
}
