| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647 |
- package logic
- import (
- "audio_transcoder/internal/svc"
- "audio_transcoder/internal/types"
- "context"
- "encoding/json"
- "errors"
- "github.com/google/uuid"
- "regexp"
- "github.com/zeromicro/go-zero/core/logx"
- )
- type TranscoderCallbackLogic struct {
- logx.Logger
- ctx context.Context
- svcCtx *svc.ServiceContext
- }
- func NewTranscoderCallbackLogic(ctx context.Context, svcCtx *svc.ServiceContext) *TranscoderCallbackLogic {
- return &TranscoderCallbackLogic{
- Logger: logx.WithContext(ctx),
- ctx: ctx,
- svcCtx: svcCtx,
- }
- }
- func (l *TranscoderCallbackLogic) TranscoderCallback(req *types.CallbackRequest) (resp *types.CallbackResponse, err error) {
- if req.Path == "" || req.CallbackUrl == "" {
- err = errors.New("path or callback_url is empty")
- return
- }
- //校验req.Path是否符合url的正则格式
- var urlRegexp = regexp.MustCompile(`^(?:(http|https|ftp):\/\/)?((|[\w-]+\.)+[a-z0-9]+)(?:(\/[^/?#]+)*)?(\?[^#]+)?(#.+)?$`)
- if !urlRegexp.MatchString(req.Path) || urlRegexp.MatchString(req.CallbackUrl) {
- err = errors.New("path or callback_url is not url")
- return
- }
- bts, err := json.Marshal(req)
- if err != nil {
- return
- }
- err = l.svcCtx.BoltSdk.Set(uuid.NewString(), string(bts))
- return
- }
|