package importers

import (
	"fmt"
	"strings"

	"github.com/prologic/vimeodl"
)

type VimeoImporter struct{}

func (i *VimeoImporter) GetVideoInfo(url string) (videoInfo VideoInfo, err error) {
	if strings.HasPrefix(strings.ToLower(url), "vimeo:") {
		url = strings.TrimSpace(strings.SplitN(url, ":", 2)[1])
	}

	if !strings.HasPrefix(url, "http") {
		url = "https://player.vimeo.com/video/" + url
	}

	if !strings.HasPrefix(url, "https://player.vimeo.com/video/") {
		playerURL, err := vimeodl.GetPlayerURL(url)
		if err != nil {
			err := fmt.Errorf("error finding player url: %w", err)
			return VideoInfo{}, err
		}
		url = playerURL
	}

	if !strings.HasSuffix(url, "/") {
		url += "/"
	}

	url += "config"

	config, err := vimeodl.GetVideoConfig(url)
	if err != nil {
		err := fmt.Errorf("error retrieving video config: %w", err)
		return VideoInfo{}, err
	}

	videoInfo.VideoURL = vimeodl.PickBestVideo(config)

	videoInfo.ThumbnailURL = vimeodl.PickBestThumbnail(config)

	videoInfo.ID = string(config.Video.Id)
	videoInfo.Title = config.Video.Title

	return
}