79 lines
1.6 KiB
Go
79 lines
1.6 KiB
Go
package main
|
|
|
|
import (
|
|
"sort"
|
|
|
|
"github.com/aerogo/aero"
|
|
"github.com/animenotifier/arn"
|
|
"github.com/animenotifier/notify.moe/components"
|
|
)
|
|
|
|
func init() {
|
|
app.Ajax("/", func(ctx *aero.Context) string {
|
|
return ctx.HTML(components.Dashboard())
|
|
})
|
|
|
|
app.Ajax("/anime/:id", func(ctx *aero.Context) string {
|
|
id, _ := ctx.GetInt("id")
|
|
anime, err := arn.GetAnime(id)
|
|
|
|
if err != nil {
|
|
return ctx.Text("Anime not found")
|
|
}
|
|
|
|
return ctx.HTML(components.Anime(anime))
|
|
})
|
|
|
|
app.Ajax("/genres", func(ctx *aero.Context) string {
|
|
return ctx.HTML(components.GenreOverview())
|
|
})
|
|
|
|
app.Ajax("/genres/:name", func(ctx *aero.Context) string {
|
|
genreName := ctx.Get("name")
|
|
genreInfo := new(arn.Genre)
|
|
|
|
err := arn.GetObject("Genres", genreName, genreInfo)
|
|
|
|
if err != nil {
|
|
return err.Error()
|
|
}
|
|
|
|
return ctx.HTML(components.AnimeInGenre(genreInfo.Genre, genreInfo.AnimeList))
|
|
})
|
|
|
|
const threadsPerPage = 12
|
|
|
|
forumHandler := func(ctx *aero.Context) string {
|
|
tag := ctx.Get("tag")
|
|
threads, _ := arn.GetThreadsByTag(tag)
|
|
|
|
sort.Sort(threads)
|
|
|
|
if len(threads) > threadsPerPage {
|
|
threads = threads[:threadsPerPage]
|
|
}
|
|
|
|
for _, thread := range threads {
|
|
thread.Author, _ = arn.GetUser(thread.AuthorID)
|
|
}
|
|
|
|
return ctx.HTML(components.Forum(threads))
|
|
}
|
|
|
|
app.Ajax("/forum", forumHandler)
|
|
app.Ajax("/forum/:tag", forumHandler)
|
|
|
|
app.Ajax("/threads/:id", func(ctx *aero.Context) string {
|
|
id := ctx.Get("id")
|
|
thread, err := arn.GetThread(id)
|
|
|
|
if err != nil {
|
|
return ctx.Text("Thread not found")
|
|
}
|
|
|
|
thread.Author, _ = arn.GetUser(thread.AuthorID)
|
|
|
|
return ctx.HTML(components.Thread(thread))
|
|
})
|
|
}
|