some changes
parent
16483803a5
commit
0540bdf1d2
|
@ -29,7 +29,7 @@ func PostsPageHandler(app *models.App) http.HandlerFunc {
|
|||
// не сработает (в главном main настроены маршруты)
|
||||
pageNumber, _ := strconv.Atoi(path.Base(link))
|
||||
|
||||
page := models_pages.CreatePage(postsList, pageNumber, app.Cfg.PostsMaxCountOnPage)
|
||||
page := models_pages.CreatePostsPage(postsList, pageNumber, app.Cfg.PostsMaxCountOnPage)
|
||||
|
||||
pageData, err = page.RenderPostsPage(app.Templates, app.Version)
|
||||
if err != nil {
|
||||
|
|
|
@ -8,7 +8,7 @@ import (
|
|||
"strings"
|
||||
)
|
||||
|
||||
type LastFMTrack struct {
|
||||
type lastFMTrack struct {
|
||||
Name string `json:"name"`
|
||||
Artist struct {
|
||||
Name string `json:"#text"`
|
||||
|
@ -21,13 +21,13 @@ type LastFMTrack struct {
|
|||
} `json:"date"`
|
||||
}
|
||||
|
||||
type LastFMResponse struct {
|
||||
type lastFMResponse struct {
|
||||
RecentTracks struct {
|
||||
Tracks []LastFMTrack `json:"track"`
|
||||
Tracks []lastFMTrack `json:"track"`
|
||||
} `json:"recenttracks"`
|
||||
}
|
||||
|
||||
func LastFMGetRecentTracks(username, apiKey string) (*LastFMResponse, error) {
|
||||
func lastFMGetRecentTracks(username, apiKey string) (*lastFMResponse, error) {
|
||||
url := fmt.Sprintf("https://ws.audioscrobbler.com/2.0/?method=user.getrecenttracks&user=%s&api_key=%s&format=json", username, apiKey)
|
||||
resp, err := http.Get(url)
|
||||
if err != nil {
|
||||
|
@ -38,7 +38,7 @@ func LastFMGetRecentTracks(username, apiKey string) (*LastFMResponse, error) {
|
|||
if err != nil {
|
||||
return nil, fmt.Errorf("lastfm read resp body err: %v", err)
|
||||
}
|
||||
var lastFMResponse LastFMResponse
|
||||
var lastFMResponse lastFMResponse
|
||||
if err := json.Unmarshal(body, &lastFMResponse); err != nil {
|
||||
return nil, fmt.Errorf("lastfm unmarshal err: %v", err)
|
||||
}
|
||||
|
@ -47,7 +47,7 @@ func LastFMGetRecentTracks(username, apiKey string) (*LastFMResponse, error) {
|
|||
}
|
||||
|
||||
func LastFMGetLastTrack(username, apiKey string) (string, error) {
|
||||
resp, err := LastFMGetRecentTracks(username, apiKey)
|
||||
resp, err := lastFMGetRecentTracks(username, apiKey)
|
||||
if err != nil {
|
||||
return "", err
|
||||
}
|
||||
|
|
|
@ -6,13 +6,12 @@ import (
|
|||
"time"
|
||||
)
|
||||
|
||||
type PostLink string
|
||||
|
||||
const (
|
||||
// Имя соответствующего шаблона
|
||||
PostPageTmplName = "post.gohtml"
|
||||
)
|
||||
|
||||
type PostLink string
|
||||
type Post struct {
|
||||
Link PostLink
|
||||
Preview template.HTML
|
||||
|
|
|
@ -20,8 +20,9 @@ const (
|
|||
)
|
||||
|
||||
type PostsMap map[PostLink]*Post
|
||||
type PostsList []*Post
|
||||
type PostsPage struct {
|
||||
PostsListOnPage []*Post // список постов на странице
|
||||
PostsListOnPage PostsList // список постов на странице
|
||||
PageNumber int // номер страницы
|
||||
PagesCount int // общее количество страниц
|
||||
}
|
||||
|
@ -71,8 +72,8 @@ func LoadPosts(dir string) (PostsMap, error) {
|
|||
}
|
||||
|
||||
// Получение из мапы постов списка постов, отсортированного по ModTimestamp (новые сначала)
|
||||
func (p *PostsMap) PostsList() []*Post {
|
||||
postsSlice := make([]*Post, 0, len(*p))
|
||||
func (p *PostsMap) PostsList() PostsList {
|
||||
postsSlice := make(PostsList, 0, len(*p))
|
||||
for _, post := range *p {
|
||||
postsSlice = append(postsSlice, post)
|
||||
}
|
||||
|
@ -84,15 +85,10 @@ func (p *PostsMap) PostsList() []*Post {
|
|||
return postsSlice
|
||||
}
|
||||
|
||||
func CreatePage(postsList []*Post, pageNumber, postsMaxCountOnPage int) *PostsPage {
|
||||
func CreatePostsPage(postsList PostsList, pageNumber, postsMaxCountOnPage int) *PostsPage {
|
||||
// Общее количество страниц
|
||||
pagesCount := (len(postsList) + postsMaxCountOnPage - 1) / postsMaxCountOnPage
|
||||
|
||||
// Ошибки тут быть не может, так как этот обработчик настроен
|
||||
// на только существующие реально pageNumber и в случае
|
||||
// какого то не существующего номера страницы он просто
|
||||
// не сработает (в главном main настроены маршруты)
|
||||
|
||||
startIndex := pageNumber * postsMaxCountOnPage
|
||||
endIndex := startIndex + postsMaxCountOnPage
|
||||
endIndex = min(endIndex, len(postsList))
|
||||
|
|
Loading…
Reference in New Issue