Skip to content
Snippets Groups Projects
Commit e149f2e8 authored by Travis Ralston's avatar Travis Ralston
Browse files

Report available thumbnails in media info API

parent e925fc1a
No related branches found
No related tags found
No related merge requests found
package unstable package unstable
import ( import (
"database/sql"
"net/http" "net/http"
"strconv" "strconv"
...@@ -10,19 +11,27 @@ import ( ...@@ -10,19 +11,27 @@ import (
"github.com/turt2live/matrix-media-repo/api" "github.com/turt2live/matrix-media-repo/api"
"github.com/turt2live/matrix-media-repo/common" "github.com/turt2live/matrix-media-repo/common"
"github.com/turt2live/matrix-media-repo/controllers/download_controller" "github.com/turt2live/matrix-media-repo/controllers/download_controller"
"github.com/turt2live/matrix-media-repo/storage"
) )
type mediaInfoHashes struct { type mediaInfoHashes struct {
Sha256 string `json:"sha256"` Sha256 string `json:"sha256"`
} }
type mediaInfoThumbnail struct {
Width int `json:"width"`
Height int `json:"height"`
Ready bool `json:"ready"`
}
type MediaInfoResponse struct { type MediaInfoResponse struct {
ContentUri string `json:"content_uri"` ContentUri string `json:"content_uri"`
ContentType string `json:"content_type"` ContentType string `json:"content_type"`
Width int `json:"width,omitempty"` Width int `json:"width,omitempty"`
Height int `json:"height,omitempty"` Height int `json:"height,omitempty"`
Size int64 `json:"size"` Size int64 `json:"size"`
Hashes mediaInfoHashes `json:"hashes"` Hashes mediaInfoHashes `json:"hashes"`
Thumbnails []*mediaInfoThumbnail `json:"thumbnails,omitempty"`
} }
func MediaInfo(r *http.Request, log *logrus.Entry, user api.UserInfo) interface{} { func MediaInfo(r *http.Request, log *logrus.Entry, user api.UserInfo) interface{} {
...@@ -76,5 +85,24 @@ func MediaInfo(r *http.Request, log *logrus.Entry, user api.UserInfo) interface{ ...@@ -76,5 +85,24 @@ func MediaInfo(r *http.Request, log *logrus.Entry, user api.UserInfo) interface{
response.Height = img.Bounds().Max.Y response.Height = img.Bounds().Max.Y
} }
thumbsDb := storage.GetDatabase().GetThumbnailStore(r.Context(), log)
thumbs, err := thumbsDb.GetAllForMedia(streamedMedia.KnownMedia.Origin, streamedMedia.KnownMedia.MediaId)
if err != nil && err != sql.ErrNoRows {
log.Error("Unexpected error locating media: " + err.Error())
return api.InternalServerError("Unexpected Error")
}
if thumbs != nil && len(thumbs) > 0 {
infoThumbs := make([]*mediaInfoThumbnail, 0)
for _, thumb := range thumbs {
infoThumbs = append(infoThumbs, &mediaInfoThumbnail{
Width: thumb.Width,
Height: thumb.Height,
Ready: true,
})
}
response.Thumbnails = infoThumbs
}
return response return response
} }
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment