add lists to user home

This commit is contained in:
2018-09-10 22:55:31 +02:00
parent f6bb683cc9
commit 17756b4d13
7 changed files with 53 additions and 17 deletions

View File

@@ -1,5 +1,7 @@
package pixelapi
import "time"
// API error constants
const (
ListNotFoundError = "list_not_found"
@@ -7,22 +9,23 @@ const (
// List information object from the pixeldrain API
type List struct {
Success bool `json:"success"`
ID string `json:"id"`
Title string `json:"title"`
DateCreated int64 `json:"date_created"`
Success bool `json:"success"`
ID string `json:"id"`
Title string `json:"title"`
DateCreated time.Time `json:"date_created"`
FileCount int `json:"file_count"`
Files []ListFile
}
// ListFile information object from the pixeldrain API
type ListFile struct {
ID string `json:"id"`
DetailHREF string `json:"detail_href"`
FileName string `json:"file_name"`
Description string `json:"description"`
DateCreated int64 `json:"date_created"`
DateLastView int64 `json:"date_last_view"`
ListDescription string `json:"list_description"`
ID string `json:"id"`
DetailHREF string `json:"detail_href"`
FileName string `json:"file_name"`
Description string `json:"description"`
DateCreated time.Time `json:"date_created"`
DateLastView time.Time `json:"date_last_view"`
ListDescription string `json:"list_description"`
}
// GetList get a List from the pixeldrain API. Errors will be available through

View File

@@ -48,7 +48,7 @@ type SuccessResponse struct {
func (p *PixelAPI) jsonRequest(method, url string, target interface{}) error {
req, err := http.NewRequest(method, url, nil)
if err != nil {
return &Error{
return Error{
ReqError: true,
Success: false,
Value: err.Error(),
@@ -62,7 +62,7 @@ func (p *PixelAPI) jsonRequest(method, url string, target interface{}) error {
client := &http.Client{}
resp, err := client.Do(req)
if err != nil {
return &Error{
return Error{
ReqError: true,
Success: false,
Value: err.Error(),

View File

@@ -79,3 +79,21 @@ func (p *PixelAPI) UserFiles(page, limit int) (resp *UserFiles, err error) {
}
return resp, nil
}
type UserLists struct {
Success bool `json:"success"`
Lists []List `json:"lists"`
}
func (p *PixelAPI) UserLists(page, limit int) (resp *UserLists, err error) {
resp = &UserLists{Lists: make([]List, 0)}
err = p.jsonRequest(
"GET",
fmt.Sprintf("%s/user/lists?page=%d&limit=%d", p.apiEndpoint, page, limit),
resp,
)
if err != nil {
return nil, err
}
return resp, nil
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 7.8 KiB

View File

@@ -20,7 +20,7 @@
<img src="{{$.APIEndpoint}}/file/{{.ID}}/thumbnail" alt="{{.FileName}}" />
<span style="color: var(--highlight_color);">{{.FileName}}</span>
<br/>
{{.DateUpload}}
{{.DateUpload.Format "2006-01-02 15:04:05"}}
</a>
{{end}}

View File

@@ -18,12 +18,27 @@
<img src="{{$.APIEndpoint}}/file/{{.ID}}/thumbnail" alt="{{.FileName}}" />
<span style="color: var(--highlight_color);">{{.FileName}}</span>
<br/>
{{.DateUpload}}
{{.DateUpload.Format "2006-01-02 15:04:05"}}
</a>
{{end}}
<br/>
<a href="/user/files">...All my files</a>
</div>
<br/>
<h2>Your most recently created lists:</h2>
<div class="highlight_dark border_top border_bottom">
{{$lists := .PixelAPI.UserLists 0 18}}
{{range $lists.Lists}}
<a class="file_button" href="/l/{{.ID}}" target="_blank">
<img src="{{$.APIEndpoint}}/list/{{.ID}}/thumbnail" alt="{{.Title}}" />
<span style="color: var(--highlight_color);">{{.Title}}</span>
({{.FileCount}} Files)
<br/>
{{.DateCreated.Format "2006-01-02 15:04:05"}}
</a>
{{end}}
<br/>
</div>
<hr/>
{{template "footer"}}

View File

@@ -15,8 +15,8 @@ func (wc *WebController) serveListViewer(w http.ResponseWriter, r *http.Request,
var api = pixelapi.New(wc.conf.APIURLInternal, "")
var list, err = api.GetList(p.ByName("id"))
if err != nil {
if (err.(*pixelapi.Error)).ReqError {
log.Error("API request error occurred: %s", (err.(pixelapi.Error)).Value)
if err, ok := err.(pixelapi.Error); ok && err.ReqError {
log.Error("API request error occurred: %s", err.Value)
}
wc.serveNotFound(w, r)
return