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