package grils import ( "fagott.pw/charakterin" "fagott.pw/grilist/grilist" "github.com/julienschmidt/httprouter" "net/http" "strconv" "time" ) type GrilsModule struct { g *grilist.Grilist } func (m *GrilsModule) Name() string { return "Grils" } func (m *GrilsModule) Init(g *grilist.Grilist) { m.g = g m.g.Router.GET("/gril/:id", m.viewGril) } func (m *GrilsModule) Interface() interface{} { return m } func (m *GrilsModule) ProvideDashboardData(user *charakterin.User) []grilist.DashboardCategory { return []grilist.DashboardCategory{} } func (m *GrilsModule) FromID(id int) (*Gril, error) { return &Gril{ ID: id, KanjiName: "藤林 杏", RomajiName: "Kyou Fujibayashi", OtherNames: []string{"ふじばやし きょう"}, Age: 17, Birthday: time.Now(), Tags: []string{"tsundere", "hair intakes", "hair ribbon", "school uniform", "school crest"}, }, nil } func (m *GrilsModule) viewGril(w http.ResponseWriter, r *http.Request, p httprouter.Params) { loggedIn := false if user, _ := m.g.Charakterin.GetUserFromRequest(r); user != nil { loggedIn = true } sid := p.ByName("id") id, err := strconv.Atoi(sid) if err != nil { http.Redirect(w, r, "/", 302) return } gril, err := m.FromID(id) if err != nil { http.Redirect(w, r, "/", 302) return } data := make(map[string]interface{}) data["loggedIn"] = loggedIn data["gril"] = gril m.g.Renderer.RenderPage("gril", w, data) } func New() *GrilsModule { return &GrilsModule{} }