fix: play segments
This commit is contained in:
@@ -83,6 +83,8 @@ func (c *Controller) MediaIndex(ctx fiber.Ctx) error {
|
||||
return errorx.RequestUnAuthorized
|
||||
}
|
||||
|
||||
// c.Locals(consts.CtxKeyJwt, token)
|
||||
token := fiber.Locals[string](ctx, consts.CtxKeyJwt)
|
||||
model, err := c.svc.GetMediaByHash(ctx.Context(), claim.TenantID, hash)
|
||||
if err != nil {
|
||||
log.WithField("action", "medias.MediaIndex").WithError(err).Error("GetMediaByHash")
|
||||
@@ -95,7 +97,7 @@ func (c *Controller) MediaIndex(ctx fiber.Ctx) error {
|
||||
return err
|
||||
}
|
||||
|
||||
playlist, err := c.svc.GetM3U8(ctx.Context(), claim.TenantID, mediaType, model.Hash, bought)
|
||||
playlist, err := c.svc.GetM3U8(ctx.Context(), claim.TenantID, mediaType, model.Hash, bought, token)
|
||||
if err != nil {
|
||||
log.WithField("action", "medias.MediaIndex").WithError(err).Error("GetMediaPlaylist")
|
||||
return err
|
||||
|
||||
@@ -279,7 +279,7 @@ func (svc *Service) Upsert(ctx context.Context, tenantId int64, item media_store
|
||||
}
|
||||
|
||||
// get video m3u8
|
||||
func (svc *Service) GetM3U8(ctx context.Context, tenantId int64, types pg.MediaType, hash string, bought bool) (m3u8.Playlist, error) {
|
||||
func (svc *Service) GetM3U8(ctx context.Context, tenantId int64, types pg.MediaType, hash string, bought bool, token string) (m3u8.Playlist, error) {
|
||||
log := svc.log.WithField("method", "GetM3U8")
|
||||
indexPath := filepath.Join(svc.storageConfig.Path, fmt.Sprintf("%d", tenantId), hash, types.String(), "index.m3u8")
|
||||
log.Infof("m3u8 path: %s", indexPath)
|
||||
@@ -335,6 +335,9 @@ func (svc *Service) GetM3U8(ctx context.Context, tenantId int64, types pg.MediaT
|
||||
return nil, errors.Wrap(err, "encode hash id")
|
||||
}
|
||||
seg.URI = fmt.Sprintf("%s/%s.%s", types, hashID, ext)
|
||||
if token != "" {
|
||||
seg.URI += fmt.Sprintf("?token=%s", token)
|
||||
}
|
||||
}
|
||||
|
||||
return media, nil
|
||||
|
||||
@@ -45,15 +45,15 @@ func Test_DiscoverMedias(t *testing.T) {
|
||||
func (t *ServiceTestSuite) Test_getM3U8() {
|
||||
FocusConvey("Test_ffmpegVideoToM3U8", t.T(), func() {
|
||||
Convey("Bought", func() {
|
||||
hash := "f464a6641a60e2722e4042db8fad2813"
|
||||
media, err := t.Svc.GetM3U8(context.Background(), 1, pg.MediaTypeVideo, hash, true)
|
||||
hash := "907f1c8fd92704233600ae54a1d75092"
|
||||
media, err := t.Svc.GetM3U8(context.Background(), 1, pg.MediaTypeVideo, hash, true, "hello")
|
||||
So(err, ShouldBeNil)
|
||||
t.T().Logf("%+v", media)
|
||||
})
|
||||
|
||||
FocusConvey("Not Bought", func() {
|
||||
hash := "f464a6641a60e2722e4042db8fad2813"
|
||||
media, err := t.Svc.GetM3U8(context.Background(), 1, pg.MediaTypeVideo, hash, false)
|
||||
hash := "907f1c8fd92704233600ae54a1d75092"
|
||||
media, err := t.Svc.GetM3U8(context.Background(), 1, pg.MediaTypeVideo, hash, false, "hello")
|
||||
So(err, ShouldBeNil)
|
||||
t.T().Logf("%+v", media)
|
||||
})
|
||||
|
||||
@@ -13,7 +13,11 @@ import (
|
||||
func (f *Middlewares) ParseJWT(c fiber.Ctx) error {
|
||||
tokens := c.GetReqHeaders()["Authorization"]
|
||||
if len(tokens) == 0 {
|
||||
return c.Next()
|
||||
queryToken := c.Query("token")
|
||||
tokens = []string{queryToken}
|
||||
if len(tokens) == 0 {
|
||||
return c.Next()
|
||||
}
|
||||
}
|
||||
|
||||
token := tokens[0]
|
||||
|
||||
Reference in New Issue
Block a user