package ytsclient

import (
	r "github.com/levigross/grequests"
	"strconv"
)

type ListParams struct {
	Limit                    int
	Page                     int
	Quality                  Quality
	MinimumRating            int
	QueryTerm                string
	Genre                    Genre
	SortBy                   SortBy
	OrderBy                  Order
	WithRottenTomatoesRating bool
}

func (l *ListParams) format() *r.RequestOptions {
	p := map[string]string{}
	if l.Limit != 0 {
		p["limit"] = strconv.Itoa(l.Limit)
	}
	if l.Page != 0 {
		p["page"] = strconv.Itoa(l.Page)
	}
	if l.Quality != "" {
		p["quality"] = string(l.Quality)
	}
	if l.MinimumRating != 0 {
		p["minimum_rating"] = strconv.Itoa(l.MinimumRating)
	}
	if l.QueryTerm != "" {
		p["query_term"] = l.QueryTerm
	}
	if l.Genre != "" {
		p["genre"] = string(l.Genre)
	}
	if l.SortBy != "" {
		p["sort_by"] = string(l.SortBy)
	}
	if l.Genre != "" {
		p["order_by"] = string(l.Genre)
	}
	p["with_rt_ratings"] = strconv.FormatBool(l.WithRottenTomatoesRating)
	return &r.RequestOptions{Params: p}
}

type MovieParams struct {
	WithImages bool
	WithCast   bool
}

func (m *MovieParams) format() *r.RequestOptions {
	p := map[string]string{
		"with_images": strconv.FormatBool(m.WithImages),
		"with_cast":   strconv.FormatBool(m.WithCast),
	}
	return &r.RequestOptions{Params: p}
}
