2017-08-10 15:23:07 -07:00
|
|
|
package api
|
2017-07-22 22:08:38 -07:00
|
|
|
|
2017-08-20 16:01:30 -07:00
|
|
|
import (
|
2017-08-22 01:37:26 -07:00
|
|
|
"github.com/pkg/errors"
|
|
|
|
)
|
|
|
|
|
|
|
|
var (
|
2017-11-10 17:13:01 -08:00
|
|
|
ErrNotFound = errors.New("resource not found")
|
|
|
|
ErrQuotaExceeded = errors.New("query limit is exceeded")
|
2017-08-20 16:01:30 -07:00
|
|
|
)
|
2017-07-31 21:51:21 -07:00
|
|
|
|
2017-08-13 14:50:59 -07:00
|
|
|
type Provider string
|
|
|
|
|
|
|
|
const (
|
2017-11-03 15:04:33 -07:00
|
|
|
ProviderYoutube = Provider("youtube")
|
|
|
|
ProviderVimeo = Provider("vimeo")
|
2017-08-13 14:50:59 -07:00
|
|
|
)
|
|
|
|
|
|
|
|
type LinkType string
|
|
|
|
|
|
|
|
const (
|
2017-11-03 15:04:33 -07:00
|
|
|
LinkTypeChannel = LinkType("channel")
|
|
|
|
LinkTypePlaylist = LinkType("playlist")
|
|
|
|
LinkTypeUser = LinkType("user")
|
|
|
|
LinkTypeGroup = LinkType("group")
|
2017-08-13 14:50:59 -07:00
|
|
|
)
|
|
|
|
|
2017-07-22 22:08:38 -07:00
|
|
|
type Quality string
|
|
|
|
|
|
|
|
const (
|
2017-11-03 15:04:33 -07:00
|
|
|
QualityHigh = Quality("high")
|
|
|
|
QualityLow = Quality("low")
|
2017-08-13 14:50:59 -07:00
|
|
|
)
|
|
|
|
|
|
|
|
type Format string
|
|
|
|
|
|
|
|
const (
|
2017-11-03 15:04:33 -07:00
|
|
|
FormatAudio = Format("audio")
|
|
|
|
FormatVideo = Format("video")
|
2017-07-22 22:08:38 -07:00
|
|
|
)
|
|
|
|
|
2017-08-11 12:49:56 -07:00
|
|
|
const (
|
2017-11-10 17:13:01 -08:00
|
|
|
DefaultPageSize = 50
|
|
|
|
DefaultFormat = FormatVideo
|
|
|
|
DefaultQuality = QualityHigh
|
|
|
|
ExtendedPaginationQueryLimit = 5000
|
2017-08-11 12:49:56 -07:00
|
|
|
)
|
|
|
|
|
2017-11-03 16:04:33 -07:00
|
|
|
type Metadata struct {
|
2017-11-04 17:27:01 -07:00
|
|
|
Provider Provider `json:"provider"`
|
|
|
|
Format Format `json:"format"`
|
|
|
|
Quality Quality `json:"quality"`
|
|
|
|
Downloads int64 `json:"downloads"`
|
2017-08-13 14:50:59 -07:00
|
|
|
}
|
|
|
|
|
|
|
|
const (
|
|
|
|
DefaultFeatures = iota
|
|
|
|
ExtendedFeatures
|
2017-11-10 17:13:01 -08:00
|
|
|
ExtendedPagination
|
2017-08-13 14:50:59 -07:00
|
|
|
PodcasterFeature
|
|
|
|
)
|
|
|
|
|
|
|
|
type CreateFeedRequest struct {
|
2017-08-14 16:38:59 -07:00
|
|
|
URL string `json:"url" binding:"url,required"`
|
2017-11-10 17:13:01 -08:00
|
|
|
PageSize int `json:"page_size" binding:"min=10,max=600,required"`
|
2017-08-14 16:38:59 -07:00
|
|
|
Quality Quality `json:"quality" binding:"eq=high|eq=low"`
|
|
|
|
Format Format `json:"format" binding:"eq=video|eq=audio"`
|
2017-07-22 22:08:38 -07:00
|
|
|
}
|
2017-08-20 16:01:30 -07:00
|
|
|
|
|
|
|
type Identity struct {
|
|
|
|
UserId string `json:"user_id"`
|
|
|
|
FullName string `json:"full_name"`
|
|
|
|
Email string `json:"email"`
|
|
|
|
ProfileURL string `json:"profile_url"`
|
|
|
|
FeatureLevel int `json:"feature_level"`
|
|
|
|
}
|