feat: 添加媒体播放功能,支持基于短时效token的播放入口及相关API接口
This commit is contained in:
@@ -1,6 +1,10 @@
|
||||
package tenant_public
|
||||
|
||||
import (
|
||||
"encoding/json"
|
||||
"net/url"
|
||||
"time"
|
||||
|
||||
"quyun/v2/app/errorx"
|
||||
tenant_dto "quyun/v2/app/http/tenant/dto"
|
||||
"quyun/v2/app/requests"
|
||||
@@ -124,6 +128,25 @@ func (*content) previewAssets(
|
||||
return nil, err
|
||||
}
|
||||
|
||||
playables := make([]*tenant_dto.ContentPlayableAsset, 0, len(assets))
|
||||
for _, asset := range assets {
|
||||
token, expiresAt, err := services.MediaDelivery.CreatePlayToken(tenant.ID, contentID, asset.ID, consts.ContentAssetRolePreview, uid, 0, time.Now())
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
var meta json.RawMessage
|
||||
if len(asset.Meta) > 0 {
|
||||
meta = json.RawMessage(asset.Meta)
|
||||
}
|
||||
playables = append(playables, &tenant_dto.ContentPlayableAsset{
|
||||
AssetID: asset.ID,
|
||||
Type: asset.Type,
|
||||
PlayURL: "/t/" + tenant.Code + "/v1/media/play?token=" + url.QueryEscape(token),
|
||||
ExpiresAt: expiresAt,
|
||||
Meta: meta,
|
||||
})
|
||||
}
|
||||
|
||||
previewSeconds := int32(detail.Content.PreviewSeconds)
|
||||
if previewSeconds <= 0 {
|
||||
previewSeconds = consts.DefaultContentPreviewSeconds
|
||||
@@ -131,7 +154,7 @@ func (*content) previewAssets(
|
||||
|
||||
return &tenant_dto.ContentAssetsResponse{
|
||||
Content: detail.Content,
|
||||
Assets: assets,
|
||||
Assets: playables,
|
||||
PreviewSeconds: previewSeconds,
|
||||
}, nil
|
||||
}
|
||||
@@ -174,8 +197,27 @@ func (*content) mainAssets(
|
||||
return nil, err
|
||||
}
|
||||
|
||||
playables := make([]*tenant_dto.ContentPlayableAsset, 0, len(assets))
|
||||
for _, asset := range assets {
|
||||
token, expiresAt, err := services.MediaDelivery.CreatePlayToken(tenant.ID, contentID, asset.ID, consts.ContentAssetRoleMain, uid, 0, time.Now())
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
var meta json.RawMessage
|
||||
if len(asset.Meta) > 0 {
|
||||
meta = json.RawMessage(asset.Meta)
|
||||
}
|
||||
playables = append(playables, &tenant_dto.ContentPlayableAsset{
|
||||
AssetID: asset.ID,
|
||||
Type: asset.Type,
|
||||
PlayURL: "/t/" + tenant.Code + "/v1/media/play?token=" + url.QueryEscape(token),
|
||||
ExpiresAt: expiresAt,
|
||||
Meta: meta,
|
||||
})
|
||||
}
|
||||
|
||||
return &tenant_dto.ContentAssetsResponse{
|
||||
Content: detail.Content,
|
||||
Assets: assets,
|
||||
Assets: playables,
|
||||
}, nil
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user