43 lines
2.1 KiB
Go
43 lines
2.1 KiB
Go
package search
|
|
|
|
import (
|
|
"encoding/json"
|
|
|
|
"github.com/photoprism/photoprism/internal/entity"
|
|
"github.com/photoprism/photoprism/internal/thumb"
|
|
"github.com/photoprism/photoprism/internal/viewer"
|
|
)
|
|
|
|
// NewViewerResult creates a new photo viewer result.
|
|
func NewViewerResult(p GeoResult, contentUri, apiUri, previewToken, downloadToken string) viewer.Result {
|
|
return viewer.Result{
|
|
UID: p.PhotoUID,
|
|
Title: p.PhotoTitle,
|
|
Taken: p.TakenAtLocal,
|
|
Description: p.PhotoDescription,
|
|
Favorite: p.PhotoFavorite,
|
|
Playable: p.PhotoType == entity.TypeVideo || p.PhotoType == entity.TypeLive,
|
|
DownloadUrl: viewer.DownloadUrl(p.FileHash, apiUri, downloadToken),
|
|
OriginalW: p.FileWidth,
|
|
OriginalH: p.FileHeight,
|
|
Fit720: viewer.NewThumb(p.FileWidth, p.FileHeight, p.FileHash, thumb.Sizes[thumb.Fit720], contentUri, previewToken),
|
|
Fit1280: viewer.NewThumb(p.FileWidth, p.FileHeight, p.FileHash, thumb.Sizes[thumb.Fit1280], contentUri, previewToken),
|
|
Fit1920: viewer.NewThumb(p.FileWidth, p.FileHeight, p.FileHash, thumb.Sizes[thumb.Fit1920], contentUri, previewToken),
|
|
Fit2048: viewer.NewThumb(p.FileWidth, p.FileHeight, p.FileHash, thumb.Sizes[thumb.Fit2048], contentUri, previewToken),
|
|
Fit2560: viewer.NewThumb(p.FileWidth, p.FileHeight, p.FileHash, thumb.Sizes[thumb.Fit2560], contentUri, previewToken),
|
|
Fit3840: viewer.NewThumb(p.FileWidth, p.FileHeight, p.FileHash, thumb.Sizes[thumb.Fit3840], contentUri, previewToken),
|
|
Fit4096: viewer.NewThumb(p.FileWidth, p.FileHeight, p.FileHash, thumb.Sizes[thumb.Fit4096], contentUri, previewToken),
|
|
Fit7680: viewer.NewThumb(p.FileWidth, p.FileHeight, p.FileHash, thumb.Sizes[thumb.Fit7680], contentUri, previewToken),
|
|
}
|
|
}
|
|
|
|
// ViewerJSON returns the results as photo viewer JSON.
|
|
func (photos GeoResults) ViewerJSON(contentUri, apiUri, previewToken, downloadToken string) ([]byte, error) {
|
|
results := make(viewer.Results, 0, len(photos))
|
|
|
|
for _, p := range photos {
|
|
results = append(results, NewViewerResult(p, contentUri, apiUri, previewToken, downloadToken))
|
|
}
|
|
|
|
return json.Marshal(results)
|
|
}
|