package ytsclient

import (
	"errors"
	"strings"

	r "github.com/levigross/grequests"
)


var ErrNotFound = errors.New("not found")

type SearchResponse struct {
	Status string `json:"status"`
	Data   struct {
		Query struct {
			Locale string `json:"locale"`
			Query  string `json:"query"`
			Offset int    `json:"offset"`
		} `json:"query"`
		Cache struct {
			Key        string `json:"key"`
			Created    int    `json:"created"`
			Expiration int    `json:"expiration"`
			Status     string `json:"status"`
			Age        int    `json:"age"`
			Version    int    `json:"version"`
			System     string `json:"system"`
			Mode       int    `json:"mode"`
		} `json:"cache"`
		Result struct {
			Total int `json:"total"`
			Items []struct {
				Title    string `json:"title"`
				Favicon  string `json:"favicon"`
				URL      string `json:"url"`
				Source   string `json:"source"`
				Desc     string `json:"desc"`
				ID       string `json:"_id"`
				Score    int    `json:"score"`
				Position int    `json:"position"`
			} `json:"items"`
			Filters struct {
				Freshness struct {
					Label    string `json:"label"`
					Name     string `json:"name"`
					Type     string `json:"type"`
					Selected string `json:"selected"`
					Values   []struct {
						Value     string `json:"value"`
						Label     string `json:"label"`
						Translate bool   `json:"translate"`
					} `json:"values"`
				} `json:"freshness"`
			} `json:"filters"`
			Ads []interface{} `json:"ads"`
		} `json:"result"`
	} `json:"data"`
}


func ResolveYts() (url string, err error) {
	res, err := r.Get("https://api.qwant.com/api/search/web?count=10&q=yts&t=web&uiv=4", nil)
	if err != nil {
	    return "", err
	}
	sr := &SearchResponse{}
	if err := res.JSON(sr); err != nil{
		return "", err
	}
	if len(sr.Data.Result.Items) == 0 {
		return "", ErrNotFound
	}
	for _, v := range sr.Data.Result.Items {
		if !strings.HasPrefix(v.URL, "https://yts.") {
			continue
		}
		return v.URL, nil
	}
	return "", ErrNotFound
}
