package v1

import (
	"encoding/json"
	"fmt"
	"github.com/astaxie/beego"
	"gitlab.fjmaimaimai.com/mmm-go/gocomm/pkg/log"
	"opp/controllers"
	"opp/internal/aliyun"
	"opp/internal/utils"
	"opp/protocol"
	"opp/services/file"
	"path/filepath"
	"strings"
)

type FileController struct {
	controllers.BaseController
}

// DownLoad
// @router /opp/file [post]
func (this *FileController) DownLoad() {
	var (
		msg *protocol.ResponseMessage
		err error
		rsp *protocol.FileResponse = &protocol.FileResponse{}
	)
	defer func() {
		if msg.Errno != 0 {
			this.Resp(msg)
		}
	}()
	fileUrl := this.Ctx.Request.RequestURI
	filePath := strings.Replace(fileUrl, "/file/opp", "", 1)
	filePath = filepath.Join(beego.AppConfig.String("source_path"), filePath)
	if utils.Exists(filePath) {
		this.Ctx.Output.Download(filePath)
	} else {
		err = protocol.NewCustomMessage(0, fmt.Sprintf("文件不存在:%v", filePath))
	}
	msg = protocol.NewReturnResponse(rsp, err)
}

//GetPlayInfo 获取播放信息
// @router /getPlayInfo [post]
func (this *FileController) GetPlayInfo() {
	var msg *protocol.ResponseMessage
	defer func() {
		this.Resp(msg)
	}()
	var request *aliyun.GetPlayInfoRequest
	if err := json.Unmarshal(this.ByteBody, &request); err != nil {
		log.Error(err)
		msg = protocol.BadRequestParam(1)
		return
	}
	if b, m := this.Valid(request); !b {
		msg = m
		return
	}
	header := controllers.GetRequestHeader(this.Ctx)
	msg = protocol.NewReturnResponse(file.GetPlayInfo(header, request))
}