Improve Context to be more idiomatic

This commit is contained in:
Frédéric Guillot 2017-11-21 18:37:08 -08:00
parent 02ff7b4bcf
commit 1bc43ec2bc
17 changed files with 107 additions and 106 deletions

View file

@ -18,7 +18,7 @@ func (c *Controller) CreateCategory(ctx *core.Context, request *core.Request, re
return return
} }
category.UserID = ctx.GetUserID() category.UserID = ctx.UserID()
if err := category.ValidateCategoryCreation(); err != nil { if err := category.ValidateCategoryCreation(); err != nil {
response.JSON().ServerError(err) response.JSON().ServerError(err)
return return
@ -47,7 +47,7 @@ func (c *Controller) UpdateCategory(ctx *core.Context, request *core.Request, re
return return
} }
category.UserID = ctx.GetUserID() category.UserID = ctx.UserID()
category.ID = categoryID category.ID = categoryID
if err := category.ValidateCategoryModification(); err != nil { if err := category.ValidateCategoryModification(); err != nil {
response.JSON().BadRequest(err) response.JSON().BadRequest(err)
@ -65,7 +65,7 @@ func (c *Controller) UpdateCategory(ctx *core.Context, request *core.Request, re
// GetCategories is the API handler to get a list of categories for a given user. // GetCategories is the API handler to get a list of categories for a given user.
func (c *Controller) GetCategories(ctx *core.Context, request *core.Request, response *core.Response) { func (c *Controller) GetCategories(ctx *core.Context, request *core.Request, response *core.Response) {
categories, err := c.store.GetCategories(ctx.GetUserID()) categories, err := c.store.GetCategories(ctx.UserID())
if err != nil { if err != nil {
response.JSON().ServerError(errors.New("Unable to fetch categories")) response.JSON().ServerError(errors.New("Unable to fetch categories"))
return return
@ -76,7 +76,7 @@ func (c *Controller) GetCategories(ctx *core.Context, request *core.Request, res
// RemoveCategory is the API handler to remove a category. // RemoveCategory is the API handler to remove a category.
func (c *Controller) RemoveCategory(ctx *core.Context, request *core.Request, response *core.Response) { func (c *Controller) RemoveCategory(ctx *core.Context, request *core.Request, response *core.Response) {
userID := ctx.GetUserID() userID := ctx.UserID()
categoryID, err := request.IntegerParam("categoryID") categoryID, err := request.IntegerParam("categoryID")
if err != nil { if err != nil {
response.JSON().BadRequest(err) response.JSON().BadRequest(err)

View file

@ -13,7 +13,7 @@ import (
// GetEntry is the API handler to get a single feed entry. // GetEntry is the API handler to get a single feed entry.
func (c *Controller) GetEntry(ctx *core.Context, request *core.Request, response *core.Response) { func (c *Controller) GetEntry(ctx *core.Context, request *core.Request, response *core.Response) {
userID := ctx.GetUserID() userID := ctx.UserID()
feedID, err := request.IntegerParam("feedID") feedID, err := request.IntegerParam("feedID")
if err != nil { if err != nil {
response.JSON().BadRequest(err) response.JSON().BadRequest(err)
@ -26,7 +26,7 @@ func (c *Controller) GetEntry(ctx *core.Context, request *core.Request, response
return return
} }
builder := c.store.GetEntryQueryBuilder(userID, ctx.GetUserTimezone()) builder := c.store.GetEntryQueryBuilder(userID, ctx.UserTimezone())
builder.WithFeedID(feedID) builder.WithFeedID(feedID)
builder.WithEntryID(entryID) builder.WithEntryID(entryID)
@ -46,7 +46,7 @@ func (c *Controller) GetEntry(ctx *core.Context, request *core.Request, response
// GetFeedEntries is the API handler to get all feed entries. // GetFeedEntries is the API handler to get all feed entries.
func (c *Controller) GetFeedEntries(ctx *core.Context, request *core.Request, response *core.Response) { func (c *Controller) GetFeedEntries(ctx *core.Context, request *core.Request, response *core.Response) {
userID := ctx.GetUserID() userID := ctx.UserID()
feedID, err := request.IntegerParam("feedID") feedID, err := request.IntegerParam("feedID")
if err != nil { if err != nil {
response.JSON().BadRequest(err) response.JSON().BadRequest(err)
@ -76,7 +76,7 @@ func (c *Controller) GetFeedEntries(ctx *core.Context, request *core.Request, re
limit := request.QueryIntegerParam("limit", 100) limit := request.QueryIntegerParam("limit", 100)
offset := request.QueryIntegerParam("offset", 0) offset := request.QueryIntegerParam("offset", 0)
builder := c.store.GetEntryQueryBuilder(userID, ctx.GetUserTimezone()) builder := c.store.GetEntryQueryBuilder(userID, ctx.UserTimezone())
builder.WithFeedID(feedID) builder.WithFeedID(feedID)
builder.WithStatus(status) builder.WithStatus(status)
builder.WithOrder(model.DefaultSortingOrder) builder.WithOrder(model.DefaultSortingOrder)
@ -101,7 +101,7 @@ func (c *Controller) GetFeedEntries(ctx *core.Context, request *core.Request, re
// SetEntryStatus is the API handler to change the status of an entry. // SetEntryStatus is the API handler to change the status of an entry.
func (c *Controller) SetEntryStatus(ctx *core.Context, request *core.Request, response *core.Response) { func (c *Controller) SetEntryStatus(ctx *core.Context, request *core.Request, response *core.Response) {
userID := ctx.GetUserID() userID := ctx.UserID()
feedID, err := request.IntegerParam("feedID") feedID, err := request.IntegerParam("feedID")
if err != nil { if err != nil {
@ -126,7 +126,7 @@ func (c *Controller) SetEntryStatus(ctx *core.Context, request *core.Request, re
return return
} }
builder := c.store.GetEntryQueryBuilder(userID, ctx.GetUserTimezone()) builder := c.store.GetEntryQueryBuilder(userID, ctx.UserTimezone())
builder.WithFeedID(feedID) builder.WithFeedID(feedID)
builder.WithEntryID(entryID) builder.WithEntryID(entryID)

View file

@ -12,7 +12,7 @@ import (
// CreateFeed is the API handler to create a new feed. // CreateFeed is the API handler to create a new feed.
func (c *Controller) CreateFeed(ctx *core.Context, request *core.Request, response *core.Response) { func (c *Controller) CreateFeed(ctx *core.Context, request *core.Request, response *core.Response) {
userID := ctx.GetUserID() userID := ctx.UserID()
feedURL, categoryID, err := payload.DecodeFeedCreationPayload(request.Body()) feedURL, categoryID, err := payload.DecodeFeedCreationPayload(request.Body())
if err != nil { if err != nil {
response.JSON().BadRequest(err) response.JSON().BadRequest(err)
@ -30,7 +30,7 @@ func (c *Controller) CreateFeed(ctx *core.Context, request *core.Request, respon
// RefreshFeed is the API handler to refresh a feed. // RefreshFeed is the API handler to refresh a feed.
func (c *Controller) RefreshFeed(ctx *core.Context, request *core.Request, response *core.Response) { func (c *Controller) RefreshFeed(ctx *core.Context, request *core.Request, response *core.Response) {
userID := ctx.GetUserID() userID := ctx.UserID()
feedID, err := request.IntegerParam("feedID") feedID, err := request.IntegerParam("feedID")
if err != nil { if err != nil {
response.JSON().BadRequest(err) response.JSON().BadRequest(err)
@ -48,7 +48,7 @@ func (c *Controller) RefreshFeed(ctx *core.Context, request *core.Request, respo
// UpdateFeed is the API handler that is used to update a feed. // UpdateFeed is the API handler that is used to update a feed.
func (c *Controller) UpdateFeed(ctx *core.Context, request *core.Request, response *core.Response) { func (c *Controller) UpdateFeed(ctx *core.Context, request *core.Request, response *core.Response) {
userID := ctx.GetUserID() userID := ctx.UserID()
feedID, err := request.IntegerParam("feedID") feedID, err := request.IntegerParam("feedID")
if err != nil { if err != nil {
response.JSON().BadRequest(err) response.JSON().BadRequest(err)
@ -83,7 +83,7 @@ func (c *Controller) UpdateFeed(ctx *core.Context, request *core.Request, respon
// GetFeeds is the API handler that get all feeds that belongs to the given user. // GetFeeds is the API handler that get all feeds that belongs to the given user.
func (c *Controller) GetFeeds(ctx *core.Context, request *core.Request, response *core.Response) { func (c *Controller) GetFeeds(ctx *core.Context, request *core.Request, response *core.Response) {
feeds, err := c.store.GetFeeds(ctx.GetUserID()) feeds, err := c.store.GetFeeds(ctx.UserID())
if err != nil { if err != nil {
response.JSON().ServerError(errors.New("Unable to fetch feeds from the database")) response.JSON().ServerError(errors.New("Unable to fetch feeds from the database"))
return return
@ -94,7 +94,7 @@ func (c *Controller) GetFeeds(ctx *core.Context, request *core.Request, response
// GetFeed is the API handler to get a feed. // GetFeed is the API handler to get a feed.
func (c *Controller) GetFeed(ctx *core.Context, request *core.Request, response *core.Response) { func (c *Controller) GetFeed(ctx *core.Context, request *core.Request, response *core.Response) {
userID := ctx.GetUserID() userID := ctx.UserID()
feedID, err := request.IntegerParam("feedID") feedID, err := request.IntegerParam("feedID")
if err != nil { if err != nil {
response.JSON().BadRequest(err) response.JSON().BadRequest(err)
@ -117,7 +117,7 @@ func (c *Controller) GetFeed(ctx *core.Context, request *core.Request, response
// RemoveFeed is the API handler to remove a feed. // RemoveFeed is the API handler to remove a feed.
func (c *Controller) RemoveFeed(ctx *core.Context, request *core.Request, response *core.Response) { func (c *Controller) RemoveFeed(ctx *core.Context, request *core.Request, response *core.Response) {
userID := ctx.GetUserID() userID := ctx.UserID()
feedID, err := request.IntegerParam("feedID") feedID, err := request.IntegerParam("feedID")
if err != nil { if err != nil {
response.JSON().BadRequest(err) response.JSON().BadRequest(err)

View file

@ -5,11 +5,12 @@
package core package core
import ( import (
"log"
"net/http"
"github.com/miniflux/miniflux2/model" "github.com/miniflux/miniflux2/model"
"github.com/miniflux/miniflux2/server/route" "github.com/miniflux/miniflux2/server/route"
"github.com/miniflux/miniflux2/storage" "github.com/miniflux/miniflux2/storage"
"log"
"net/http"
"github.com/gorilla/mux" "github.com/gorilla/mux"
) )
@ -31,8 +32,8 @@ func (c *Context) IsAdminUser() bool {
return false return false
} }
// GetUserTimezone returns the timezone used by the logged user. // UserTimezone returns the timezone used by the logged user.
func (c *Context) GetUserTimezone() string { func (c *Context) UserTimezone() string {
if v := c.request.Context().Value("UserTimezone"); v != nil { if v := c.request.Context().Value("UserTimezone"); v != nil {
return v.(string) return v.(string)
} }
@ -47,19 +48,19 @@ func (c *Context) IsAuthenticated() bool {
return false return false
} }
// GetUserID returns the UserID of the logged user. // UserID returns the UserID of the logged user.
func (c *Context) GetUserID() int64 { func (c *Context) UserID() int64 {
if v := c.request.Context().Value("UserId"); v != nil { if v := c.request.Context().Value("UserId"); v != nil {
return v.(int64) return v.(int64)
} }
return 0 return 0
} }
// GetLoggedUser returns all properties related to the logged user. // LoggedUser returns all properties related to the logged user.
func (c *Context) GetLoggedUser() *model.User { func (c *Context) LoggedUser() *model.User {
if c.user == nil { if c.user == nil {
var err error var err error
c.user, err = c.store.GetUserById(c.GetUserID()) c.user, err = c.store.GetUserById(c.UserID())
if err != nil { if err != nil {
log.Fatalln(err) log.Fatalln(err)
} }
@ -72,14 +73,14 @@ func (c *Context) GetLoggedUser() *model.User {
return c.user return c.user
} }
// GetUserLanguage get the locale used by the current logged user. // UserLanguage get the locale used by the current logged user.
func (c *Context) GetUserLanguage() string { func (c *Context) UserLanguage() string {
user := c.GetLoggedUser() user := c.LoggedUser()
return user.Language return user.Language
} }
// GetCsrfToken returns the current CSRF token. // CsrfToken returns the current CSRF token.
func (c *Context) GetCsrfToken() string { func (c *Context) CsrfToken() string {
if v := c.request.Context().Value("CsrfToken"); v != nil { if v := c.request.Context().Value("CsrfToken"); v != nil {
return v.(string) return v.(string)
} }
@ -88,8 +89,8 @@ func (c *Context) GetCsrfToken() string {
return "" return ""
} }
// GetRoute returns the path for the given arguments. // Route returns the path for the given arguments.
func (c *Context) GetRoute(name string, args ...interface{}) string { func (c *Context) Route(name string, args ...interface{}) string {
return route.GetRoute(c.router, name, args...) return route.GetRoute(c.router, name, args...)
} }

View file

@ -38,7 +38,7 @@ func (h *Handler) Use(f HandlerFunc) http.Handler {
response := NewResponse(w, r, h.template) response := NewResponse(w, r, h.template)
if ctx.IsAuthenticated() { if ctx.IsAuthenticated() {
h.template.SetLanguage(ctx.GetUserLanguage()) h.template.SetLanguage(ctx.UserLanguage())
} else { } else {
h.template.SetLanguage("en_US") h.template.SetLanguage("en_US")
} }

View file

@ -21,7 +21,7 @@ func (c *Controller) ShowCategories(ctx *core.Context, request *core.Request, re
return return
} }
user := ctx.GetLoggedUser() user := ctx.LoggedUser()
categories, err := c.store.GetCategoriesWithFeedCount(user.ID) categories, err := c.store.GetCategoriesWithFeedCount(user.ID)
if err != nil { if err != nil {
response.HTML().ServerError(err) response.HTML().ServerError(err)
@ -37,7 +37,7 @@ func (c *Controller) ShowCategories(ctx *core.Context, request *core.Request, re
// ShowCategoryEntries shows all entries for the given category. // ShowCategoryEntries shows all entries for the given category.
func (c *Controller) ShowCategoryEntries(ctx *core.Context, request *core.Request, response *core.Response) { func (c *Controller) ShowCategoryEntries(ctx *core.Context, request *core.Request, response *core.Response) {
user := ctx.GetLoggedUser() user := ctx.LoggedUser()
offset := request.QueryIntegerParam("offset", 0) offset := request.QueryIntegerParam("offset", 0)
args, err := c.getCommonTemplateArgs(ctx) args, err := c.getCommonTemplateArgs(ctx)
@ -75,7 +75,7 @@ func (c *Controller) ShowCategoryEntries(ctx *core.Context, request *core.Reques
"category": category, "category": category,
"entries": entries, "entries": entries,
"total": count, "total": count,
"pagination": c.getPagination(ctx.GetRoute("categoryEntries", "categoryID", category.ID), count, offset), "pagination": c.getPagination(ctx.Route("categoryEntries", "categoryID", category.ID), count, offset),
"menu": "categories", "menu": "categories",
})) }))
} }
@ -95,7 +95,7 @@ func (c *Controller) CreateCategory(ctx *core.Context, request *core.Request, re
// SaveCategory validate and save the new category into the database. // SaveCategory validate and save the new category into the database.
func (c *Controller) SaveCategory(ctx *core.Context, request *core.Request, response *core.Response) { func (c *Controller) SaveCategory(ctx *core.Context, request *core.Request, response *core.Response) {
user := ctx.GetLoggedUser() user := ctx.LoggedUser()
args, err := c.getCommonTemplateArgs(ctx) args, err := c.getCommonTemplateArgs(ctx)
if err != nil { if err != nil {
response.HTML().ServerError(err) response.HTML().ServerError(err)
@ -133,12 +133,12 @@ func (c *Controller) SaveCategory(ctx *core.Context, request *core.Request, resp
return return
} }
response.Redirect(ctx.GetRoute("categories")) response.Redirect(ctx.Route("categories"))
} }
// EditCategory shows the form to modify a category. // EditCategory shows the form to modify a category.
func (c *Controller) EditCategory(ctx *core.Context, request *core.Request, response *core.Response) { func (c *Controller) EditCategory(ctx *core.Context, request *core.Request, response *core.Response) {
user := ctx.GetLoggedUser() user := ctx.LoggedUser()
category, err := c.getCategoryFromURL(ctx, request, response) category, err := c.getCategoryFromURL(ctx, request, response)
if err != nil { if err != nil {
@ -157,7 +157,7 @@ func (c *Controller) EditCategory(ctx *core.Context, request *core.Request, resp
// UpdateCategory validate and update a category. // UpdateCategory validate and update a category.
func (c *Controller) UpdateCategory(ctx *core.Context, request *core.Request, response *core.Response) { func (c *Controller) UpdateCategory(ctx *core.Context, request *core.Request, response *core.Response) {
user := ctx.GetLoggedUser() user := ctx.LoggedUser()
category, err := c.getCategoryFromURL(ctx, request, response) category, err := c.getCategoryFromURL(ctx, request, response)
if err != nil { if err != nil {
@ -195,12 +195,12 @@ func (c *Controller) UpdateCategory(ctx *core.Context, request *core.Request, re
return return
} }
response.Redirect(ctx.GetRoute("categories")) response.Redirect(ctx.Route("categories"))
} }
// RemoveCategory delete a category from the database. // RemoveCategory delete a category from the database.
func (c *Controller) RemoveCategory(ctx *core.Context, request *core.Request, response *core.Response) { func (c *Controller) RemoveCategory(ctx *core.Context, request *core.Request, response *core.Response) {
user := ctx.GetLoggedUser() user := ctx.LoggedUser()
category, err := c.getCategoryFromURL(ctx, request, response) category, err := c.getCategoryFromURL(ctx, request, response)
if err != nil { if err != nil {
@ -212,7 +212,7 @@ func (c *Controller) RemoveCategory(ctx *core.Context, request *core.Request, re
return return
} }
response.Redirect(ctx.GetRoute("categories")) response.Redirect(ctx.Route("categories"))
} }
func (c *Controller) getCategoryFromURL(ctx *core.Context, request *core.Request, response *core.Response) (*model.Category, error) { func (c *Controller) getCategoryFromURL(ctx *core.Context, request *core.Request, response *core.Response) (*model.Category, error) {
@ -222,7 +222,7 @@ func (c *Controller) getCategoryFromURL(ctx *core.Context, request *core.Request
return nil, err return nil, err
} }
user := ctx.GetLoggedUser() user := ctx.LoggedUser()
category, err := c.store.GetCategory(user.ID, categoryID) category, err := c.store.GetCategory(user.ID, categoryID)
if err != nil { if err != nil {
response.HTML().ServerError(err) response.HTML().ServerError(err)

View file

@ -29,7 +29,7 @@ type Controller struct {
} }
func (c *Controller) getCommonTemplateArgs(ctx *core.Context) (tplParams, error) { func (c *Controller) getCommonTemplateArgs(ctx *core.Context) (tplParams, error) {
user := ctx.GetLoggedUser() user := ctx.LoggedUser()
builder := c.store.GetEntryQueryBuilder(user.ID, user.Timezone) builder := c.store.GetEntryQueryBuilder(user.ID, user.Timezone)
builder.WithStatus(model.EntryStatusUnread) builder.WithStatus(model.EntryStatusUnread)
@ -42,7 +42,7 @@ func (c *Controller) getCommonTemplateArgs(ctx *core.Context) (tplParams, error)
"menu": "", "menu": "",
"user": user, "user": user,
"countUnread": countUnread, "countUnread": countUnread,
"csrf": ctx.GetCsrfToken(), "csrf": ctx.CsrfToken(),
} }
return params, nil return params, nil
} }

View file

@ -15,7 +15,7 @@ import (
// ShowFeedEntry shows a single feed entry in "feed" mode. // ShowFeedEntry shows a single feed entry in "feed" mode.
func (c *Controller) ShowFeedEntry(ctx *core.Context, request *core.Request, response *core.Response) { func (c *Controller) ShowFeedEntry(ctx *core.Context, request *core.Request, response *core.Response) {
user := ctx.GetLoggedUser() user := ctx.LoggedUser()
sortingDirection := model.DefaultSortingDirection sortingDirection := model.DefaultSortingDirection
entryID, err := request.IntegerParam("entryID") entryID, err := request.IntegerParam("entryID")
@ -80,12 +80,12 @@ func (c *Controller) ShowFeedEntry(ctx *core.Context, request *core.Request, res
nextEntryRoute := "" nextEntryRoute := ""
if nextEntry != nil { if nextEntry != nil {
nextEntryRoute = ctx.GetRoute("feedEntry", "feedID", feedID, "entryID", nextEntry.ID) nextEntryRoute = ctx.Route("feedEntry", "feedID", feedID, "entryID", nextEntry.ID)
} }
prevEntryRoute := "" prevEntryRoute := ""
if prevEntry != nil { if prevEntry != nil {
prevEntryRoute = ctx.GetRoute("feedEntry", "feedID", feedID, "entryID", prevEntry.ID) prevEntryRoute = ctx.Route("feedEntry", "feedID", feedID, "entryID", prevEntry.ID)
} }
if entry.Status == model.EntryStatusUnread { if entry.Status == model.EntryStatusUnread {
@ -108,7 +108,7 @@ func (c *Controller) ShowFeedEntry(ctx *core.Context, request *core.Request, res
// ShowCategoryEntry shows a single feed entry in "category" mode. // ShowCategoryEntry shows a single feed entry in "category" mode.
func (c *Controller) ShowCategoryEntry(ctx *core.Context, request *core.Request, response *core.Response) { func (c *Controller) ShowCategoryEntry(ctx *core.Context, request *core.Request, response *core.Response) {
user := ctx.GetLoggedUser() user := ctx.LoggedUser()
sortingDirection := model.DefaultSortingDirection sortingDirection := model.DefaultSortingDirection
categoryID, err := request.IntegerParam("categoryID") categoryID, err := request.IntegerParam("categoryID")
@ -173,12 +173,12 @@ func (c *Controller) ShowCategoryEntry(ctx *core.Context, request *core.Request,
nextEntryRoute := "" nextEntryRoute := ""
if nextEntry != nil { if nextEntry != nil {
nextEntryRoute = ctx.GetRoute("categoryEntry", "categoryID", categoryID, "entryID", nextEntry.ID) nextEntryRoute = ctx.Route("categoryEntry", "categoryID", categoryID, "entryID", nextEntry.ID)
} }
prevEntryRoute := "" prevEntryRoute := ""
if prevEntry != nil { if prevEntry != nil {
prevEntryRoute = ctx.GetRoute("categoryEntry", "categoryID", categoryID, "entryID", prevEntry.ID) prevEntryRoute = ctx.Route("categoryEntry", "categoryID", categoryID, "entryID", prevEntry.ID)
} }
if entry.Status == model.EntryStatusUnread { if entry.Status == model.EntryStatusUnread {
@ -202,7 +202,7 @@ func (c *Controller) ShowCategoryEntry(ctx *core.Context, request *core.Request,
// ShowUnreadEntry shows a single feed entry in "unread" mode. // ShowUnreadEntry shows a single feed entry in "unread" mode.
func (c *Controller) ShowUnreadEntry(ctx *core.Context, request *core.Request, response *core.Response) { func (c *Controller) ShowUnreadEntry(ctx *core.Context, request *core.Request, response *core.Response) {
user := ctx.GetLoggedUser() user := ctx.LoggedUser()
sortingDirection := model.DefaultSortingDirection sortingDirection := model.DefaultSortingDirection
entryID, err := request.IntegerParam("entryID") entryID, err := request.IntegerParam("entryID")
@ -260,12 +260,12 @@ func (c *Controller) ShowUnreadEntry(ctx *core.Context, request *core.Request, r
nextEntryRoute := "" nextEntryRoute := ""
if nextEntry != nil { if nextEntry != nil {
nextEntryRoute = ctx.GetRoute("unreadEntry", "entryID", nextEntry.ID) nextEntryRoute = ctx.Route("unreadEntry", "entryID", nextEntry.ID)
} }
prevEntryRoute := "" prevEntryRoute := ""
if prevEntry != nil { if prevEntry != nil {
prevEntryRoute = ctx.GetRoute("unreadEntry", "entryID", prevEntry.ID) prevEntryRoute = ctx.Route("unreadEntry", "entryID", prevEntry.ID)
} }
if entry.Status == model.EntryStatusUnread { if entry.Status == model.EntryStatusUnread {
@ -289,7 +289,7 @@ func (c *Controller) ShowUnreadEntry(ctx *core.Context, request *core.Request, r
// ShowReadEntry shows a single feed entry in "history" mode. // ShowReadEntry shows a single feed entry in "history" mode.
func (c *Controller) ShowReadEntry(ctx *core.Context, request *core.Request, response *core.Response) { func (c *Controller) ShowReadEntry(ctx *core.Context, request *core.Request, response *core.Response) {
user := ctx.GetLoggedUser() user := ctx.LoggedUser()
sortingDirection := model.DefaultSortingDirection sortingDirection := model.DefaultSortingDirection
entryID, err := request.IntegerParam("entryID") entryID, err := request.IntegerParam("entryID")
@ -347,12 +347,12 @@ func (c *Controller) ShowReadEntry(ctx *core.Context, request *core.Request, res
nextEntryRoute := "" nextEntryRoute := ""
if nextEntry != nil { if nextEntry != nil {
nextEntryRoute = ctx.GetRoute("readEntry", "entryID", nextEntry.ID) nextEntryRoute = ctx.Route("readEntry", "entryID", nextEntry.ID)
} }
prevEntryRoute := "" prevEntryRoute := ""
if prevEntry != nil { if prevEntry != nil {
prevEntryRoute = ctx.GetRoute("readEntry", "entryID", prevEntry.ID) prevEntryRoute = ctx.Route("readEntry", "entryID", prevEntry.ID)
} }
response.HTML().Render("entry", args.Merge(tplParams{ response.HTML().Render("entry", args.Merge(tplParams{
@ -367,7 +367,7 @@ func (c *Controller) ShowReadEntry(ctx *core.Context, request *core.Request, res
// UpdateEntriesStatus handles Ajax request to update the status for a list of entries. // UpdateEntriesStatus handles Ajax request to update the status for a list of entries.
func (c *Controller) UpdateEntriesStatus(ctx *core.Context, request *core.Request, response *core.Response) { func (c *Controller) UpdateEntriesStatus(ctx *core.Context, request *core.Request, response *core.Response) {
user := ctx.GetLoggedUser() user := ctx.LoggedUser()
entryIDs, status, err := payload.DecodeEntryStatusPayload(request.Body()) entryIDs, status, err := payload.DecodeEntryStatusPayload(request.Body())
if err != nil { if err != nil {

View file

@ -15,7 +15,7 @@ import (
// ShowFeedsPage shows the page with all subscriptions. // ShowFeedsPage shows the page with all subscriptions.
func (c *Controller) ShowFeedsPage(ctx *core.Context, request *core.Request, response *core.Response) { func (c *Controller) ShowFeedsPage(ctx *core.Context, request *core.Request, response *core.Response) {
user := ctx.GetLoggedUser() user := ctx.LoggedUser()
args, err := c.getCommonTemplateArgs(ctx) args, err := c.getCommonTemplateArgs(ctx)
if err != nil { if err != nil {
@ -38,7 +38,7 @@ func (c *Controller) ShowFeedsPage(ctx *core.Context, request *core.Request, res
// ShowFeedEntries shows all entries for the given feed. // ShowFeedEntries shows all entries for the given feed.
func (c *Controller) ShowFeedEntries(ctx *core.Context, request *core.Request, response *core.Response) { func (c *Controller) ShowFeedEntries(ctx *core.Context, request *core.Request, response *core.Response) {
user := ctx.GetLoggedUser() user := ctx.LoggedUser()
offset := request.QueryIntegerParam("offset", 0) offset := request.QueryIntegerParam("offset", 0)
args, err := c.getCommonTemplateArgs(ctx) args, err := c.getCommonTemplateArgs(ctx)
@ -76,14 +76,14 @@ func (c *Controller) ShowFeedEntries(ctx *core.Context, request *core.Request, r
"feed": feed, "feed": feed,
"entries": entries, "entries": entries,
"total": count, "total": count,
"pagination": c.getPagination(ctx.GetRoute("feedEntries", "feedID", feed.ID), count, offset), "pagination": c.getPagination(ctx.Route("feedEntries", "feedID", feed.ID), count, offset),
"menu": "feeds", "menu": "feeds",
})) }))
} }
// EditFeed shows the form to modify a subscription. // EditFeed shows the form to modify a subscription.
func (c *Controller) EditFeed(ctx *core.Context, request *core.Request, response *core.Response) { func (c *Controller) EditFeed(ctx *core.Context, request *core.Request, response *core.Response) {
user := ctx.GetLoggedUser() user := ctx.LoggedUser()
feed, err := c.getFeedFromURL(request, response, user) feed, err := c.getFeedFromURL(request, response, user)
if err != nil { if err != nil {
@ -101,7 +101,7 @@ func (c *Controller) EditFeed(ctx *core.Context, request *core.Request, response
// UpdateFeed update a subscription and redirect to the feed entries page. // UpdateFeed update a subscription and redirect to the feed entries page.
func (c *Controller) UpdateFeed(ctx *core.Context, request *core.Request, response *core.Response) { func (c *Controller) UpdateFeed(ctx *core.Context, request *core.Request, response *core.Response) {
user := ctx.GetLoggedUser() user := ctx.LoggedUser()
feed, err := c.getFeedFromURL(request, response, user) feed, err := c.getFeedFromURL(request, response, user)
if err != nil { if err != nil {
@ -131,7 +131,7 @@ func (c *Controller) UpdateFeed(ctx *core.Context, request *core.Request, respon
return return
} }
response.Redirect(ctx.GetRoute("feedEntries", "feedID", feed.ID)) response.Redirect(ctx.Route("feedEntries", "feedID", feed.ID))
} }
// RemoveFeed delete a subscription from the database and redirect to the list of feeds page. // RemoveFeed delete a subscription from the database and redirect to the list of feeds page.
@ -142,13 +142,13 @@ func (c *Controller) RemoveFeed(ctx *core.Context, request *core.Request, respon
return return
} }
user := ctx.GetLoggedUser() user := ctx.LoggedUser()
if err := c.store.RemoveFeed(user.ID, feedID); err != nil { if err := c.store.RemoveFeed(user.ID, feedID); err != nil {
response.HTML().ServerError(err) response.HTML().ServerError(err)
return return
} }
response.Redirect(ctx.GetRoute("feeds")) response.Redirect(ctx.Route("feeds"))
} }
// RefreshFeed refresh a subscription and redirect to the feed entries page. // RefreshFeed refresh a subscription and redirect to the feed entries page.
@ -159,12 +159,12 @@ func (c *Controller) RefreshFeed(ctx *core.Context, request *core.Request, respo
return return
} }
user := ctx.GetLoggedUser() user := ctx.LoggedUser()
if err := c.feedHandler.RefreshFeed(user.ID, feedID); err != nil { if err := c.feedHandler.RefreshFeed(user.ID, feedID); err != nil {
log.Println("[UI:RefreshFeed]", err) log.Println("[UI:RefreshFeed]", err)
} }
response.Redirect(ctx.GetRoute("feedEntries", "feedID", feedID)) response.Redirect(ctx.Route("feedEntries", "feedID", feedID))
} }
func (c *Controller) getFeedFromURL(request *core.Request, response *core.Response, user *model.User) (*model.Feed, error) { func (c *Controller) getFeedFromURL(request *core.Request, response *core.Response, user *model.User) (*model.Feed, error) {

View file

@ -11,7 +11,7 @@ import (
// ShowHistoryPage renders the page with all read entries. // ShowHistoryPage renders the page with all read entries.
func (c *Controller) ShowHistoryPage(ctx *core.Context, request *core.Request, response *core.Response) { func (c *Controller) ShowHistoryPage(ctx *core.Context, request *core.Request, response *core.Response) {
user := ctx.GetLoggedUser() user := ctx.LoggedUser()
offset := request.QueryIntegerParam("offset", 0) offset := request.QueryIntegerParam("offset", 0)
args, err := c.getCommonTemplateArgs(ctx) args, err := c.getCommonTemplateArgs(ctx)
@ -42,14 +42,14 @@ func (c *Controller) ShowHistoryPage(ctx *core.Context, request *core.Request, r
response.HTML().Render("history", args.Merge(tplParams{ response.HTML().Render("history", args.Merge(tplParams{
"entries": entries, "entries": entries,
"total": count, "total": count,
"pagination": c.getPagination(ctx.GetRoute("history"), count, offset), "pagination": c.getPagination(ctx.Route("history"), count, offset),
"menu": "history", "menu": "history",
})) }))
} }
// FlushHistory changes all "read" items to "removed". // FlushHistory changes all "read" items to "removed".
func (c *Controller) FlushHistory(ctx *core.Context, request *core.Request, response *core.Response) { func (c *Controller) FlushHistory(ctx *core.Context, request *core.Request, response *core.Response) {
user := ctx.GetLoggedUser() user := ctx.LoggedUser()
err := c.store.FlushHistory(user.ID) err := c.store.FlushHistory(user.ID)
if err != nil { if err != nil {
@ -57,5 +57,5 @@ func (c *Controller) FlushHistory(ctx *core.Context, request *core.Request, resp
return return
} }
response.Redirect(ctx.GetRoute("history")) response.Redirect(ctx.Route("history"))
} }

View file

@ -16,12 +16,12 @@ import (
func (c *Controller) ShowLoginPage(ctx *core.Context, request *core.Request, response *core.Response) { func (c *Controller) ShowLoginPage(ctx *core.Context, request *core.Request, response *core.Response) {
if ctx.IsAuthenticated() { if ctx.IsAuthenticated() {
response.Redirect(ctx.GetRoute("unread")) response.Redirect(ctx.Route("unread"))
return return
} }
response.HTML().Render("login", tplParams{ response.HTML().Render("login", tplParams{
"csrf": ctx.GetCsrfToken(), "csrf": ctx.CsrfToken(),
}) })
} }
@ -29,7 +29,7 @@ func (c *Controller) CheckLogin(ctx *core.Context, request *core.Request, respon
authForm := form.NewAuthForm(request.Request()) authForm := form.NewAuthForm(request.Request())
tplParams := tplParams{ tplParams := tplParams{
"errorMessage": "Invalid username or password.", "errorMessage": "Invalid username or password.",
"csrf": ctx.GetCsrfToken(), "csrf": ctx.CsrfToken(),
} }
if err := authForm.Validate(); err != nil { if err := authForm.Validate(); err != nil {
@ -65,11 +65,11 @@ func (c *Controller) CheckLogin(ctx *core.Context, request *core.Request, respon
} }
response.SetCookie(cookie) response.SetCookie(cookie)
response.Redirect(ctx.GetRoute("unread")) response.Redirect(ctx.Route("unread"))
} }
func (c *Controller) Logout(ctx *core.Context, request *core.Request, response *core.Response) { func (c *Controller) Logout(ctx *core.Context, request *core.Request, response *core.Response) {
user := ctx.GetLoggedUser() user := ctx.LoggedUser()
sessionCookie := request.Cookie("sessionID") sessionCookie := request.Cookie("sessionID")
if err := c.store.RemoveSessionByToken(user.ID, sessionCookie); err != nil { if err := c.store.RemoveSessionByToken(user.ID, sessionCookie); err != nil {
@ -87,5 +87,5 @@ func (c *Controller) Logout(ctx *core.Context, request *core.Request, response *
} }
response.SetCookie(cookie) response.SetCookie(cookie)
response.Redirect(ctx.GetRoute("login")) response.Redirect(ctx.Route("login"))
} }

View file

@ -11,7 +11,7 @@ import (
) )
func (c *Controller) Export(ctx *core.Context, request *core.Request, response *core.Response) { func (c *Controller) Export(ctx *core.Context, request *core.Request, response *core.Response) {
user := ctx.GetLoggedUser() user := ctx.LoggedUser()
opml, err := c.opmlHandler.Export(user.ID) opml, err := c.opmlHandler.Export(user.ID)
if err != nil { if err != nil {
response.HTML().ServerError(err) response.HTML().ServerError(err)
@ -37,12 +37,12 @@ func (c *Controller) UploadOPML(ctx *core.Context, request *core.Request, respon
file, fileHeader, err := request.File("file") file, fileHeader, err := request.File("file")
if err != nil { if err != nil {
log.Println(err) log.Println(err)
response.Redirect(ctx.GetRoute("import")) response.Redirect(ctx.Route("import"))
return return
} }
defer file.Close() defer file.Close()
user := ctx.GetLoggedUser() user := ctx.LoggedUser()
log.Printf("[UI:UploadOPML] User #%d uploaded this file: %s (%d bytes)\n", user.ID, fileHeader.Filename, fileHeader.Size) log.Printf("[UI:UploadOPML] User #%d uploaded this file: %s (%d bytes)\n", user.ID, fileHeader.Filename, fileHeader.Size)
if impErr := c.opmlHandler.Import(user.ID, file); impErr != nil { if impErr := c.opmlHandler.Import(user.ID, file); impErr != nil {
@ -60,5 +60,5 @@ func (c *Controller) UploadOPML(ctx *core.Context, request *core.Request, respon
return return
} }
response.Redirect(ctx.GetRoute("feeds")) response.Redirect(ctx.Route("feeds"))
} }

View file

@ -10,7 +10,7 @@ import (
) )
func (c *Controller) ShowSessions(ctx *core.Context, request *core.Request, response *core.Response) { func (c *Controller) ShowSessions(ctx *core.Context, request *core.Request, response *core.Response) {
user := ctx.GetLoggedUser() user := ctx.LoggedUser()
args, err := c.getCommonTemplateArgs(ctx) args, err := c.getCommonTemplateArgs(ctx)
if err != nil { if err != nil {
response.HTML().ServerError(err) response.HTML().ServerError(err)
@ -32,7 +32,7 @@ func (c *Controller) ShowSessions(ctx *core.Context, request *core.Request, resp
} }
func (c *Controller) RemoveSession(ctx *core.Context, request *core.Request, response *core.Response) { func (c *Controller) RemoveSession(ctx *core.Context, request *core.Request, response *core.Response) {
user := ctx.GetLoggedUser() user := ctx.LoggedUser()
sessionID, err := request.IntegerParam("sessionID") sessionID, err := request.IntegerParam("sessionID")
if err != nil { if err != nil {
@ -45,5 +45,5 @@ func (c *Controller) RemoveSession(ctx *core.Context, request *core.Request, res
log.Println("[UI:RemoveSession]", err) log.Println("[UI:RemoveSession]", err)
} }
response.Redirect(ctx.GetRoute("sessions")) response.Redirect(ctx.Route("sessions"))
} }

View file

@ -13,7 +13,7 @@ import (
) )
func (c *Controller) ShowSettings(ctx *core.Context, request *core.Request, response *core.Response) { func (c *Controller) ShowSettings(ctx *core.Context, request *core.Request, response *core.Response) {
user := ctx.GetLoggedUser() user := ctx.LoggedUser()
args, err := c.getSettingsFormTemplateArgs(ctx, user, nil) args, err := c.getSettingsFormTemplateArgs(ctx, user, nil)
if err != nil { if err != nil {
@ -25,7 +25,7 @@ func (c *Controller) ShowSettings(ctx *core.Context, request *core.Request, resp
} }
func (c *Controller) UpdateSettings(ctx *core.Context, request *core.Request, response *core.Response) { func (c *Controller) UpdateSettings(ctx *core.Context, request *core.Request, response *core.Response) {
user := ctx.GetLoggedUser() user := ctx.LoggedUser()
settingsForm := form.NewSettingsForm(request.Request()) settingsForm := form.NewSettingsForm(request.Request())
args, err := c.getSettingsFormTemplateArgs(ctx, user, settingsForm) args, err := c.getSettingsFormTemplateArgs(ctx, user, settingsForm)
@ -60,7 +60,7 @@ func (c *Controller) UpdateSettings(ctx *core.Context, request *core.Request, re
return return
} }
response.Redirect(ctx.GetRoute("settings")) response.Redirect(ctx.Route("settings"))
} }
func (c *Controller) getSettingsFormTemplateArgs(ctx *core.Context, user *model.User, settingsForm *form.SettingsForm) (tplParams, error) { func (c *Controller) getSettingsFormTemplateArgs(ctx *core.Context, user *model.User, settingsForm *form.SettingsForm) (tplParams, error) {

View file

@ -13,7 +13,7 @@ import (
) )
func (c *Controller) AddSubscription(ctx *core.Context, request *core.Request, response *core.Response) { func (c *Controller) AddSubscription(ctx *core.Context, request *core.Request, response *core.Response) {
user := ctx.GetLoggedUser() user := ctx.LoggedUser()
args, err := c.getSubscriptionFormTemplateArgs(ctx, user) args, err := c.getSubscriptionFormTemplateArgs(ctx, user)
if err != nil { if err != nil {
@ -25,7 +25,7 @@ func (c *Controller) AddSubscription(ctx *core.Context, request *core.Request, r
} }
func (c *Controller) SubmitSubscription(ctx *core.Context, request *core.Request, response *core.Response) { func (c *Controller) SubmitSubscription(ctx *core.Context, request *core.Request, response *core.Response) {
user := ctx.GetLoggedUser() user := ctx.LoggedUser()
args, err := c.getSubscriptionFormTemplateArgs(ctx, user) args, err := c.getSubscriptionFormTemplateArgs(ctx, user)
if err != nil { if err != nil {
@ -71,7 +71,7 @@ func (c *Controller) SubmitSubscription(ctx *core.Context, request *core.Request
return return
} }
response.Redirect(ctx.GetRoute("feedEntries", "feedID", feed.ID)) response.Redirect(ctx.Route("feedEntries", "feedID", feed.ID))
case n > 1: case n > 1:
response.HTML().Render("choose_subscription", args.Merge(tplParams{ response.HTML().Render("choose_subscription", args.Merge(tplParams{
"categoryID": subscriptionForm.CategoryID, "categoryID": subscriptionForm.CategoryID,
@ -81,7 +81,7 @@ func (c *Controller) SubmitSubscription(ctx *core.Context, request *core.Request
} }
func (c *Controller) ChooseSubscription(ctx *core.Context, request *core.Request, response *core.Response) { func (c *Controller) ChooseSubscription(ctx *core.Context, request *core.Request, response *core.Response) {
user := ctx.GetLoggedUser() user := ctx.LoggedUser()
args, err := c.getSubscriptionFormTemplateArgs(ctx, user) args, err := c.getSubscriptionFormTemplateArgs(ctx, user)
if err != nil { if err != nil {
@ -107,7 +107,7 @@ func (c *Controller) ChooseSubscription(ctx *core.Context, request *core.Request
return return
} }
response.Redirect(ctx.GetRoute("feedEntries", "feedID", feed.ID)) response.Redirect(ctx.Route("feedEntries", "feedID", feed.ID))
} }
func (c *Controller) getSubscriptionFormTemplateArgs(ctx *core.Context, user *model.User) (tplParams, error) { func (c *Controller) getSubscriptionFormTemplateArgs(ctx *core.Context, user *model.User) (tplParams, error) {

View file

@ -11,7 +11,7 @@ import (
// ShowUnreadPage render the page with all unread entries. // ShowUnreadPage render the page with all unread entries.
func (c *Controller) ShowUnreadPage(ctx *core.Context, request *core.Request, response *core.Response) { func (c *Controller) ShowUnreadPage(ctx *core.Context, request *core.Request, response *core.Response) {
user := ctx.GetLoggedUser() user := ctx.LoggedUser()
offset := request.QueryIntegerParam("offset", 0) offset := request.QueryIntegerParam("offset", 0)
builder := c.store.GetEntryQueryBuilder(user.ID, user.Timezone) builder := c.store.GetEntryQueryBuilder(user.ID, user.Timezone)
@ -37,8 +37,8 @@ func (c *Controller) ShowUnreadPage(ctx *core.Context, request *core.Request, re
"user": user, "user": user,
"countUnread": countUnread, "countUnread": countUnread,
"entries": entries, "entries": entries,
"pagination": c.getPagination(ctx.GetRoute("unread"), countUnread, offset), "pagination": c.getPagination(ctx.Route("unread"), countUnread, offset),
"menu": "unread", "menu": "unread",
"csrf": ctx.GetCsrfToken(), "csrf": ctx.CsrfToken(),
}) })
} }

View file

@ -13,7 +13,7 @@ import (
) )
func (c *Controller) ShowUsers(ctx *core.Context, request *core.Request, response *core.Response) { func (c *Controller) ShowUsers(ctx *core.Context, request *core.Request, response *core.Response) {
user := ctx.GetLoggedUser() user := ctx.LoggedUser()
if !user.IsAdmin { if !user.IsAdmin {
response.HTML().Forbidden() response.HTML().Forbidden()
@ -39,7 +39,7 @@ func (c *Controller) ShowUsers(ctx *core.Context, request *core.Request, respons
} }
func (c *Controller) CreateUser(ctx *core.Context, request *core.Request, response *core.Response) { func (c *Controller) CreateUser(ctx *core.Context, request *core.Request, response *core.Response) {
user := ctx.GetLoggedUser() user := ctx.LoggedUser()
if !user.IsAdmin { if !user.IsAdmin {
response.HTML().Forbidden() response.HTML().Forbidden()
@ -59,7 +59,7 @@ func (c *Controller) CreateUser(ctx *core.Context, request *core.Request, respon
} }
func (c *Controller) SaveUser(ctx *core.Context, request *core.Request, response *core.Response) { func (c *Controller) SaveUser(ctx *core.Context, request *core.Request, response *core.Response) {
user := ctx.GetLoggedUser() user := ctx.LoggedUser()
if !user.IsAdmin { if !user.IsAdmin {
response.HTML().Forbidden() response.HTML().Forbidden()
@ -102,11 +102,11 @@ func (c *Controller) SaveUser(ctx *core.Context, request *core.Request, response
return return
} }
response.Redirect(ctx.GetRoute("users")) response.Redirect(ctx.Route("users"))
} }
func (c *Controller) EditUser(ctx *core.Context, request *core.Request, response *core.Response) { func (c *Controller) EditUser(ctx *core.Context, request *core.Request, response *core.Response) {
user := ctx.GetLoggedUser() user := ctx.LoggedUser()
if !user.IsAdmin { if !user.IsAdmin {
response.HTML().Forbidden() response.HTML().Forbidden()
@ -135,7 +135,7 @@ func (c *Controller) EditUser(ctx *core.Context, request *core.Request, response
} }
func (c *Controller) UpdateUser(ctx *core.Context, request *core.Request, response *core.Response) { func (c *Controller) UpdateUser(ctx *core.Context, request *core.Request, response *core.Response) {
user := ctx.GetLoggedUser() user := ctx.LoggedUser()
if !user.IsAdmin { if !user.IsAdmin {
response.HTML().Forbidden() response.HTML().Forbidden()
@ -186,11 +186,11 @@ func (c *Controller) UpdateUser(ctx *core.Context, request *core.Request, respon
return return
} }
response.Redirect(ctx.GetRoute("users")) response.Redirect(ctx.Route("users"))
} }
func (c *Controller) RemoveUser(ctx *core.Context, request *core.Request, response *core.Response) { func (c *Controller) RemoveUser(ctx *core.Context, request *core.Request, response *core.Response) {
user := ctx.GetLoggedUser() user := ctx.LoggedUser()
if !user.IsAdmin { if !user.IsAdmin {
response.HTML().Forbidden() response.HTML().Forbidden()
return return
@ -206,7 +206,7 @@ func (c *Controller) RemoveUser(ctx *core.Context, request *core.Request, respon
return return
} }
response.Redirect(ctx.GetRoute("users")) response.Redirect(ctx.Route("users"))
} }
func (c *Controller) getUserFromURL(ctx *core.Context, request *core.Request, response *core.Response) (*model.User, error) { func (c *Controller) getUserFromURL(ctx *core.Context, request *core.Request, response *core.Response) (*model.User, error) {